Kubernetes之应用升级回滚弹性伸缩
通过命令可以替换镜像升级
1 | kubectl set image |
以上一篇的web.yaml为例
把镜像替换成nginx
1 | kubectl set image deployment web java = nginx |
三个副本滚动升级,新容器处于运行状态会删除旧容器
再次访问无法访问了
因为之前java的后端端口是8080但是更新以后需要转发的端口是80
通过edit编辑修改service的转发端口为80
1 | kubectl edit svc / web |
可以访问了访问的为nginx页面
查看升级状态
1 | kubectl rollout status deployment / nginx |
部署的应用有问题需要回滚到之前的版本
deployment会保留每次滚动更新的记录
1 | kubectl rollout history deployment web |
使用快捷命令回滚到上一个版本,很少回滚到之前的某个指定版本
1 | kubectl rollout undo deployment web |
查看状态
再次把端口修改成8080即可 (生产环境应该都是相同的端口不需要反复修改)
1 | kubectl edit svc / web |
使用ip加端口即可访问
回滚到指定版本
1 | kubectl rollout undo deployment / web - - to - revision = 2 |
删除
1 2 | kubectl delete deploy / web kubectl delete svc / web |
如果直接删除pod会不起作用 因为删除一个会启动一个
1 | kubectl delete pod web - 867dd4dcf - dkpvx |
deployment可以保证预期的副本数,如果少一个pod会启动一个,如果多了会删除
当部署一个应用面对双11了 可以对应用实例进行扩容,传统的扩容方式是扩容虚拟机,比较繁琐
在k8s中使用一条命令就可以扩容副本数
1 | kubectl scale deployment web - - replicas = 5 |
如果集群的资源不够这种扩容也意义不大,需要集群的资源够用
设定副本数也可以缩容
1 | kubectl scale deployment web - - replicas = 3 |
部署一个depolyment会创建一个replicaset
1 | kubectl get deploy,rs |
rs对比运行的副本数和运行的副本数,如果少了就新启一个副本
还有一个作用是记录历史记录方便回滚等操作
滚动更新会创建一个新的rs
滚动更新期间会有一个新旧版本的存在,新创建的pod准备就绪了会kill掉旧pod 旧的rs副本数最后变成0了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-01-09 CentOS添加PHP至环境变量