5.3 执行滚动升级
对前面的章节中部署的应用进行滚动升级。
第一件事就是更新Deployment清单文件中的镜像的tag。起初版本的应用使用的是tag为nigelpoulton/k8sbook:latest的镜像。现在要将Deployment清单文件中spec.template.spec.containers的内容改为新的nigelpoulton/k8sbook:edge镜像。
以下就是更新之后的deploy.ynl清单文件,唯一有改动的地方就是spec.template.spec.containers.image一行。
apiVersion: apps/v1 kind: Deployment metadata: name: hello-deploy spec: replicas: 10 selector: matchLabels: app: hello-world minReadySeconds: 10 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 template: metadata: labels: app: hello-world spec: containers: - name: hello-pod image: nigelpoulton/k8sbook:edge ports: - containerPort: 8080
- spec.minReadySeconds:这里值被设为10,也就是告诉Kubernetes每个Pod的更新动作之间间隔10s。
- spec.strategy.type:这里使用RollingUpdat策略来进行更新。
- maxUnavailable:不允许出现比期望状态的Pod数量少超过一个的情况
- maxSurge:不允许出现比期望状态的Pod数量多超过一个的情况
[root@master k8s]# kubectl apply -f deploy.yml --record
deployment.apps/hello-deploy configured
※ 在本例中,期望状态是Pod数量为10个副本,那么maxSure:1的意思是在更新过程中,Pod数量不能超过11个,而maxUnavailable:1的意思是不能少于9个。导致的结果就是,在滚动更新的过程中,最多只能同时更新两个Pod(11减9)。
修改好后执行kubectl apply -f deploy.yml --record命令
※ kubectl apply -f deploy.yml --record
命令允许你应用或更新 Kubernetes 资源,--record表示该操作会被记录在资源的注解中
查看更新过程
kubectl rollout status deployment hello-deploy
[root@master k8s]# kubectl rollout status deployment hello-deploy Waiting for deployment "hello-deploy" rollout to finish: 2 out of 10 new replicas have been updated... Waiting for deployment "hello-deploy" rollout to finish: 2 out of 10 new replicas have been updated... Waiting for deployment "hello-deploy" rollout to finish: 2 out of 10 new replicas have been updated... Waiting for deployment "hello-deploy" rollout to finish: 2 out of 10 new replicas have been updated...^C
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端