正如@David Maze在评论中所写,您可以考虑使用
canary
如果可以使用多个标签区分不同版本的部署或同一组件的配置,然后跟踪这些标签并指向不同版本,有关
Canary deployments
可以找到
here
. 另一种实现目标的方法是
Blue/Green deployment
如果您希望使用两个尽可能相同的不同环境,并在任何时候以一种全面的方式在蓝/绿环境和回滚部署之间进行切换,请使用。
回答第二个问题取决于给定图像包含的错误类型以及Kubernetes如何在Pod中识别这个问题,如
maxUnavailable: 1
参数表示在更新期间不可用的最大数量的吊舱。在
Deployment update
在集群部署控制器中,创建一个新的Pod,然后删除旧的Pod,前提是可用Pod的数量匹配
rollingUpdate
策略参数。
另外,Kubernetes使用
liveness/readiness probes
在部署更新期间检查吊舱是否准备就绪(活动),并使旧吊舱一直运行到
probes
已在新副本上成功。我建议你检查一下
探针
当部署尝试在集群pod上发布更新时,确定pod的状态。