通过ip,几种ip类型介绍参见以下文章,常见的对外暴露的是nodeport:
做不到的,service只有轮询,需要借助借助istio来控制流量。
这个需要基于滚动升级,实现一个变通的方式,跟金丝雀发布一样,你可以看看这篇文章:
kubectl rollout pause deployment myapp-deploy -n test
主要是用到其中的暂停
,你测试完成没问题后,恢复继续滚动升级。
最核心的问题是,为了保障第一次只更新1个,你需要借助滚动升级策略的
maxSurge
和maxUnavailable
用来控制滚动更新的更新策略(升级的比例)
修改更新策略最多不可用0个,最大不能超过1个
kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}' -n test
这样,就会新发一个新的pod。
这时,你紧接着执行暂停
,停止继续滚动升级。
如果确认无误,可以调整该比例,加速后面的3个版本升级,如按25%
的递进:
kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":25,"maxUnavailable":25}}}}' -n test
描述:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
如何控制每个pod流量的权重啊
新的启动pod就会有流量转给它呀,如果你用的是service的话。