|NO.Z.00144|——————————|CloudNative|——|KuberNetes&資源排程.V14|-------------------------------------------------------|statefulset.v06|更新.V03|分段更新|
阿新 • • 發佈:2022-03-30
[CloudNative:KuberNetes&資源排程.V14] [Applications.KuberNetes] [StatefulSet應用|容器中匯出映象匯入映象StatefulSet擴容縮容StatefulSet建立pod縮減pod的流程|] [StatefulSet更新策略|StatefulSet灰度釋出|StatefulSet級聯刪除和非級聯刪除|]
一、StatefulSet分段更新:StatefulSet分段更新架構
二、StatefulSet分段更新說明
### --- StatefulSet分段更新說明
~~~ 假設我們啟動了5個Pod
~~~ 假設Partition設定為2,那麼他就只會更新web-2,web-3,web-4,而web-0和web-1他就不會更新
~~~ 這個就可以實現灰度釋出,先更新一部分,切一部分流量過來,看看效果。等待效驗沒有問題,把這個partition捨得再小一點,最終實現我們的預期。
~~~ 若是partition為0的話,它不更新小於0的,沒有小於0的,說明他就全部更新。
三、StatefulSet分段更新partition資源準備### --- StatefulSet分段更新實驗 ~~~ partition: 0 :在使用StatefulSet的時候我們啟動了5個副本, ~~~ 而把這個partition設定為3,它就會更新大於3的這個pod,不大於3的他就不更新。 ~~~ 所以說可以利用這個機制來實現簡單的分段更新灰度釋出。
### --- 更改partition引數 [root@k8s-master01 ~]# kubectl edit sts web spec: podManagementPolicy: OrderedReady replicas: 4 // 副本數量設定為4個, updateStrategy: type: RollingUpdate rollingUpdate: partition: 2 // 保留小於2的pod不更新。
### --- 檢視啟動的所有pod
[root@k8s-master01 ~]# kubectl get po // 所有pod全部或啟動
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 16m
web-1 1/1 Running 0 15m
web-2 1/1 Running 0 20m
web-3 1/1 Running 0 18s
四、新增觸發條件,觸發更新
### --- 新增更新條件觸發更新
[root@k8s-master01 ~]# kubectl edit sts web // 把它的版本設定為1.15.2
spec:
containers:
- image: nginx:1.15.2
### --- 檢視更新後鏡像的版本
[root@k8s-master01 ~]# kubectl get po -oyaml |grep image // 檢視映象更新結果,更新的是web-2和web-3,而web-0和web-1是不會更新的。
f:image: {}
f:imagePullPolicy: {}
- image: nginx:1.15.3
imagePullPolicy: IfNotPresent
image: nginx:1.15.3
imageID: docker-pullable://nginx@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
f:image: {}
f:imagePullPolicy: {}
- image: nginx:1.15.3
imagePullPolicy: IfNotPresent
image: nginx:1.15.3
imageID: docker-pullable://nginx@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
f:image: {}
f:imagePullPolicy: {}
- image: nginx:1.15.2
imagePullPolicy: IfNotPresent
- image: nginx:1.15.2
imageID: ""
f:image: {}
f:imagePullPolicy: {}
- image: nginx:1.15.2
imagePullPolicy: IfNotPresent
image: nginx:1.15.2
imageID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
五、檢視更新流程
### --- 檢視更新流程
[root@k8s-master01 ~]# kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-3 1/1 Terminating 0 3m33s
web-3 0/1 Pending 0 0s
web-3 0/1 ContainerCreating 0 1s
web-3 1/1 Running 0 3s
web-2 1/1 Terminating 0 23m
web-2 0/1 Pending 0 0s
web-2 0/1 ContainerCreating 0 0s
web-2 1/1 Running 0 53s
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)