政策资讯

Policy Information


K8s的金丝雀发布

来源: 重庆市软件正版化服务中心    |    时间: 2024-11-22    |    浏览量: 9    |   

Deployment控制器支持控制更新过程中的控制,如“暂停(pause)”或“继续(resume)”更新操作。

比如有一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。

# 1、更新deployment的版本,并配置暂停deployment
[root@master ~]#  kubectl set image deploy your_deploy_name nginx=nginx:1.17.4 -n your_namespace && kubectl rollout pause deployment your_deploy_name -n your_namespace
deployment.apps/nginx-deployment image updated
deployment.apps/nginx-deployment paused
 
# 2、观察更新状态
#  - your_deploy_name 你的deploy名称
#  - your_namespace 你的命名空间名称
[root@master ~]# kubectl rollout status deploy your_deploy_name -n your_namespace 
Waiting for deployment "nginx-deployment" rollout to finish: 2 out of 4 new replicas have been updated...
 
# 3、监控更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令
#   - your_namespace 你的命名空间名称
[root@master ~]# kubectl get rs -n your_namespace -o wide
NAME                       DESIRED   CURRENT   READY   AGE     CONTAINERS   IMAGES         
nginx-deployment-5d89bdfbf9   3         3         3       19m     nginx        nginx:1.17.1   
nginx-deployment-675d469f8b   0         0         0       14m     nginx        nginx:1.17.2   
nginx-deployment-6c9f56fcfb   2         2         2       3m16s   nginx        nginx:1.17.4   
 
# - your_namespace 你的命名空间名称
[root@master ~]# kubectl get pods -n your_namespace
NAME                             READY   STATUS    RESTARTS   AGE
nginx-deployment-5d89bdfbf9-rj8sq   1/1     Running   0          7m33s
nginx-deployment-5d89bdfbf9-ttwgg   1/1     Running   0          7m35s
nginx-deployment-5d89bdfbf9-v4wvc   1/1     Running   0          7m34s
nginx-deployment-6c9f56fcfb-996rt   1/1     Running   0          3m31s
nginx-deployment-6c9f56fcfb-j2gtj   1/1     Running   0          3m31s
 
# 4、确保更新的pod没问题了,继续更新
#     - your_deploy_name 你的deploy名称
#     - your_namespace 你的命名空间名称
[root@master ~]# kubectl rollout resume deploy your_deploy_name -n your_namespace
deployment.apps/nginx-deployment resumed
 
# 5、查看最后的更新情况
#     - your_namespace 你的命名空间名称
[root@master ~]# kubectl get rs -n your_namespace -o wide
NAME                       DESIRED   CURRENT   READY   AGE     CONTAINERS   IMAGES         
nginx-deployment-5d89bdfbf9   0         0         0       21m     nginx        nginx:1.17.1   
nginx-deployment-675d469f8b   0         0         0       16m     nginx        nginx:1.17.2   
nginx-deployment-6c9f56fcfb   4         4         4       5m11s   nginx        nginx:1.17.4   
 
# - your_namespace 你的命名空间名称
[root@master ~]# kubectl get pods -n your_namespace
NAME                             READY   STATUS    RESTARTS   AGE
nginx-deployment-6c9f56fcfb-7bfwh   1/1     Running   0          37s
nginx-deployment-6c9f56fcfb-996rt   1/1     Running   0          5m27s
nginx-deployment-6c9f56fcfb-j2gtj   1/1     Running   0          5m27s
nginx-deployment-6c9f56fcfb-rf84v   1/1     Running   0          37s

 

评论

QQ咨询 扫一扫加入群聊,了解更多平台咨询
微信咨询 扫一扫加入群聊,了解更多平台咨询
意见反馈
立即提交
QQ咨询
微信咨询
意见反馈