新增pod其它控制

This commit is contained in:
2025-10-11 00:03:17 +08:00
parent 74896e5ddd
commit fcef102aaa
4 changed files with 191 additions and 1 deletions

View File

@@ -4,7 +4,7 @@ Deployment 控制器是 Kubernetes 中用于管理应用程序部署和更新的
它提供了一种声明式的方法来定义和管理应用程序的生命周期, 包括创建、更新和回滚等操作。
Deployment 控制器(通过管理 ReplicaSet 来确保应用程序的期望状态与实际状态保持一致),从而实现高可用性和弹性伸缩。
#-----------------------------------------------------------------------------------------------
二、声明式与命令式
@@ -20,6 +20,7 @@ Deployment 控制器(通过管理 ReplicaSet 来确保应用程序的期望状
# kubectl diff -f deployment.yaml
比较当前集群实际运行的资源清单对象与当前资源清单文件对象的差异
#-----------------------------------------------------------------------------------------------
三、Deployment 控制器资源清单
@@ -48,6 +49,7 @@ spec:
# 上边的Deployment控制器清单没在spec中设置replicas默认为 1
#-----------------------------------------------------------------------------------------------
三、Deployment常用命令
@@ -75,3 +77,35 @@ spec:
# kubectl set image deployment/myapp-deployment myapp-container=nginx/nginx:1.9.1
更新Deployment控制器的镜像
#-----------------------------------------------------------------------------------------------
四、金丝雀部署思想
利用Deployment控制器的滚动更新特性, 可以实现金丝雀部署。
先设置Deployment控制器允许多n个pod, 允许少0个pod, 然后逐步更新pod的镜像版本, 观察新版本的稳定性, 如果新版本稳定, 则继续更新剩余的pod, 如果新版本不稳定, 则回滚到旧版本。
Deployment 控制器回滚的原理是etcd内存了这个Deploymen控制器控制的对应的RS的历史版本
1、通过补丁方式 设置Deployment控制器的滚动更新策略, 允许多1个pod, 允许少0个pod
# kubectl patch deployment myapp-deployment -p '{"spec":{"straegy":{"rollingUpdate":{"maxSurge":"1", "maxUnavailable":"0"}}}}'
2、更新Deployment控制器的镜像版本 (由于 1 的设置, 会多创建一个新pod, 然后停止删除旧pod)
# kubectl patch deployment myapp-deployment --patch '{"spec":{"template":{"spec":{"containers":[{"name":"myapp-container","image":"nginx:1.9.1"}]}}}}' && kubectl rollout rollout pause deploy myapp-deployment
3、恢复滚动更新 (恢复新建一个新pod, 删除一个旧pod, 创建一个新pod)
# kubectl rollout resume deploy myapp-deployment
暂停滚动更新
# kubectl rollout pause deploy myapp-deployment
4、回滚到上一个版本【注】回滚只能回滚到上一个版本, 不能回滚到更早的版本
# kubectl rollout undo deploy myapp-deployment && kubectl rollout status deployments myapp-deployment
5、查看回滚的历史记录
# kubectl rollout history deployment myapp-deployment
[注意] 更新命令在尾部加上 --record 参数, 可以记录变更历史, 方便后续查看和回滚
6、回滚到制定版本(这里的版本号数字是命令5查询出来的历史记录中的版本号)
# kubectl rollout undo deploy myapp-deployment --to-revision=2 && kubectl rollout status deployments myapp-deployment