1、deployment 运行了4个pod ,版本0.0.1
2、现在要将pod升级为0.0.2
3、只升级一个pod,即1个0.0.2的,3个0.0.1的,怎么保证我的请求能到0.0.2的pod进行测试,没有问题后,再将0.0.1的全部升级为0.0.2.有问题的话,回滚到0.0.1
1、deployment 运行了4个pod ,版本0.0.1
2、现在要将pod升级为0.0.2
3、只升级一个pod,即1个0.0.2的,3个0.0.1的,怎么保证我的请求能到0.0.2的pod进行测试,没有问题后,再将0.0.1的全部升级为0.0.2.有问题的话,回滚到0.0.1
暂停
这个需要基于滚动升级,实现一个变通的方式,跟金丝雀发布一样,你可以看看这篇文章:
Kubernetes(k8s)之金丝雀发布(灰度)
kubectl rollout pause deployment myapp-deploy -n test
主要是用到其中的
暂停
,你测试完成没问题后,恢复继续滚动升级。升级的比例
最核心的问题是,为了保障第一次只更新1个,你需要借助滚动升级策略的
maxSurge
和maxUnavailable
用来控制滚动更新的更新策略(升级的比例)修改更新策略最多不可用0个,最大不能超过1个
这样,就会新发一个新的pod。
这时,你紧接着执行
暂停
,停止继续滚动升级。如果确认无误,可以调整该比例,加速后面的3个版本升级,如按
25%
的递进:描述:
rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate
你的答案