Kubernetes进阶实战读书笔记:StatefulSet控制器(资源升级)
一、滚动更新
1、将myapp控制器下的pod资源镜像升级为:"ikubernetes/myapp:v6"
1 2 | [root@master ~] # kubectl set image sts myapp myapp=ikubernetes/myapp:v6 statefulset.apps /myapp image updated |
2、实时监控更新操作过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | [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、验证更新是否生效
1 2 3 4 | [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、暂存更新
1 2 | [root@master ~] # kubectl patch statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":3}}}}' statefulset.apps /myapp patched |
2、而后、更新myapp控制器的pod资源镜像版本更新为:"ikubernetes/myapp:v7"
1 2 | [root@master ~] # kubectl set image sts myapp myapp=ikubernetes/myapp:v7 statefulset.apps /myapp image updated |
3、接着检测各POD资源的镜像文件版本信息、可以发现其版本并为发生改变
1 2 3 4 | [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、随后待其重建操作启动后、再获取与其相关的镜像信息、结果依然显示了旧的版本
1 2 3 4 5 | [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"
1 2 | [root@master ~] # kubectl patch statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":2}}}}' statefulset.apps /myapp patched |
2、验证版本是否生效
1 2 3 4 5 | [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 |
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
分类:
云计算Kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构