背景

线上发布,如果直接将预发或者测试环境的jar或war包发布到线上,如果出现问题,那么就会出现大面积瘫痪,无法正常使用
引入金丝雀发布,先优先发布一台,或者比例较小。主要用来流量验证,如果通过,那么可以快速将其他版本全部更新,失败的话,则回退,只影响小部分用户。

优缺点

优点: 用户体验影响小,发布只影响少部分用户

缺点: 自动化流程不够,发布期间需要人为去操作,可能会引起服务中断等

实战

1、快速构建 deployment、 service

在这里插入图片描述
查看namespace为demo下所有资源
kubectl get all -n demo
通过curl -I 获取当前nginx版本
curl -I 10.1.176.133
在这里插入图片描述

2、更新镜像并暂停升级

kubectl set image deployment/web nginx=nginx:1.7.9 -n demo && kubectl rollout pause deployment web -n demo
在这里插入图片描述
查看当前deployment状态
在这里插入图片描述

3、验证更新

for i in {1…20};do curl -I 10.1.176.133;done
在这里插入图片描述

4、确认更新成功,解除暂停,并查看相关更新状态

kubectl rollout resume deployment web -n demo && kubectl rollout status deployment/web -n demo
在这里插入图片描述

5、查看历史版本

在这里插入图片描述
备注: 这里发现CHANGE-CAUSE中都是。那么无法得知变更原因,可以在更新镜像时候,在末尾加上 --record
kubectl set image deployment/web nginx=nginx:1.7.9 -n demo --record
在这里插入图片描述

6、回滚

kubectl rollout undo deployment web -n demo --to-revision=3
&& kubectl rollout status deployment/web -n demo
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐