Kubernetes進階實戰讀書筆記:StatefulSet控制器(資源升級)


一、滾動更新

1、將myapp控制器下的pod資源鏡像升級為:"ikubernetes/myapp:v6"

[root@master ~]# kubectl set image sts myapp myapp=ikubernetes/myapp:v6
statefulset.apps/myapp image updated

2、實時監控更新操作過程

[root@master chapter9]# kubectl get pods -l app=myapp-pod -w
NAME READY STATUS RESTARTS AGE
myapp-0 1/1 Running 0 39s
myapp-1 1/1 Running 0 36s
myapp-2 1/1 Running 0 34s
myapp-2 1/1 Terminating 0 38s
myapp-2 0/1 Terminating 0 40s
myapp-2 0/1 Terminating 0 49s
myapp-2 0/1 Terminating 0 49s
myapp-2 0/1 Pending 0 0s
myapp-2 0/1 Pending 0 0s
myapp-2 0/1 ContainerCreating 0 0s
myapp-2 1/1 Running 0 2s
myapp-1 1/1 Terminating 0 53s
myapp-1 0/1 Terminating 0 55s
myapp-1 0/1 Terminating 0 56s
myapp-1 0/1 Terminating 0 56s
myapp-1 0/1 Pending 0 0s
myapp-1 0/1 Pending 0 0s
myapp-1 0/1 ContainerCreating 0 0s
myapp-1 1/1 Running 0 2s
myapp-0 1/1 Terminating 0 61s
myapp-0 0/1 Terminating 0 62s
myapp-0 0/1 Terminating 0 63s
myapp-0 0/1 Terminating 0 63s
myapp-0 0/1 Pending 0 0s
myapp-0 0/1 Pending 0 0s
myapp-0 0/1 ContainerCreating 0 0s
myapp-0 1/1 Running 0 3s

3、驗證更新是否生效

[root@master ~]# for i in 0 1 2; do kubectl get po myapp-$i --template '{{range $i,$c := .spec.containers}}{{$c.image}}{{end}}';echo; done
ikubernetes/myapp:v6
ikubernetes/myapp:v6
ikubernetes/myapp:v6

另外、用戶也可使用""命令跟蹤statefulset資源滾動更新過程中的狀態信息

二、暫存更新操作

1、暫存更新

[root@master ~]# kubectl patch statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":3}}}}'
statefulset.apps/myapp patched

2、而后、更新myapp控制器的pod資源鏡像版本更新為:"ikubernetes/myapp:v7"

[root@master ~]# kubectl set image sts myapp myapp=ikubernetes/myapp:v7
statefulset.apps/myapp image updated

3、接着檢測各POD資源的鏡像文件版本信息、可以發現其版本並為發生改變

[root@master ~]# for i in 0 1 2; do kubectl get po myapp-$i --template '{{range $i,$c := .spec.containers}}{{$c.image}}{{end}}';echo; done
ikubernetes/myapp:v6
ikubernetes/myapp:v6
ikubernetes/myapp:v6

刪除了pod對象myapp-1、隨后待其重建操作啟動后、再獲取與其相關的鏡像信息、結果依然顯示了舊的版本

[root@master ~]# kubectl delete pod myapp-1
pod "myapp-1" deleted
[root@master ~]# kubectl get pods myapp-1 -o custom-columns=NAME:metadata.name,IMAGE:spec.containers[0].image
NAME IMAGE
myapp-1 ikubernetes/myapp:v6

由此可見、暫存狀態的更新操作對所有的pod資源均不產生影響

三、金絲雀部署

1、更新分區myapp-2 的鏡像為:"ikubernetes/myapp:v7"

[root@master ~]# kubectl patch statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":2}}}}'
statefulset.apps/myapp patched

2、驗證版本是否生效

[root@master ~]# kubectl get pods -l app=myapp-pod -o custom-columns=NAME:metadata.name,IMAGE:spec.containers[0].image
NAME IMAGE
myapp-0 ikubernetes/myapp:v6
myapp-1 ikubernetes/myapp:v6
myapp-2 ikubernetes/myapp:v7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM