POD控制器對象ReplicaSet
ReplicaSet介紹
什么是ReplicaSet?
ReplicaSet是下一代復本控制器,是Replication Controller(RC)的升級版本。ReplicaSet和 Replication Controller之間的唯一區(qū)別是對選擇器的支持。ReplicaSet支持labels user guide中描述的set-based選擇器要求, 而Replication Controller僅支持equality-based的選擇器要求。
如何使用ReplicaSet?
大多數(shù)kubectl 支持Replication Controller 命令的也支持ReplicaSets。rolling-update命令除外,如果要使用rolling-update,請使用Deployments來實現(xiàn)。
雖然ReplicaSets可以獨立使用,但它主要被 Deployments用作pod 機制的創(chuàng)建、刪除和更新。當使用Deployment時,你不必擔心創(chuàng)建pod的ReplicaSets,因為可以通過Deployment實現(xiàn)管理ReplicaSets
何時使用ReplicaSet?
ReplicaSet能確保運行指定數(shù)量的pod。然而,Deployment 是一個更高層次的概念,它能管理ReplicaSets,并提供對pod的更新等功能。因此,我們建議你使用Deployment來管理ReplicaSets,除非你需要自定義更新編排。
這意味著你可能永遠不需要操作ReplicaSet對象,而是使用Deployment替代管理 。
ReplicaSet對象定義
- apiVersion: app/v1 版本
- kind: ReplicaSet 類型
- metadata: 元數(shù)據(jù)
-
spec: 期望狀態(tài)
- minReadySeconds: 應為新創(chuàng)建的pod準備好的最小秒數(shù)
- replicas: 副本數(shù); 默認為1
- selector: 標簽選擇器
-
template: pod模板
- metadata: pod模板中的元數(shù)據(jù)
- spec: pod模板中的期望狀態(tài)
ReplicaSet創(chuàng)建示例
Yaml示例
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: docker.io/busybox:latest
command: ["sh","-c","sleep 3600"]
創(chuàng)建結(jié)果
-
創(chuàng)建
# kubectl create -f rs-demo.yaml replicaset.apps/myapp created
-
查看Replicaset狀態(tài)
# kubectl get rs NAME DESIRED CURRENT READY AGE myapp 2 2 2 23s
-
查看pod 狀態(tài)
# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-r4ss4 1/1 Running 0 25s myapp-zjc5l 1/1 Running 0 26s
生產(chǎn)的pod原則(多退少補):根據(jù)replicas配置保證生成相應數(shù)量的pod。
ReplicaSet擴所容
-
使用edit 修改replicaset 配置,將副本數(shù)改為5;即可實現(xiàn)動態(tài)擴容
# kubectl edit rs myapp ... ... spec: replicas: 5 ... ... replicaset.extensions/myapp edited
-
查看結(jié)果
# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-bck7l 1/1 Running 0 16s myapp-h8cqr 1/1 Running 0 16s myapp-hfb72 1/1 Running 0 6m myapp-r4ss4 1/1 Running 0 9m myapp-vvpgf 1/1 Running 0 16s
ReplicaSet在線升級
原理同擴所容同樣,進行編輯replicaset 對containers對應的image進行版本升級修改。注:修改完并沒有升級需刪除pod,再自動生成新的pod時,就會升級成功;即可以實現(xiàn)灰度發(fā)布:刪除一個,會自動啟動一個版本升級成功的pod