如何在Kubernetes中基于选择器对Deployment执行滚动更新?
基于选择器对命名空间内的Deployment执行滚动更新的方法
方法1:触发滚动重启
如果只是需要让符合条件的Deployment重启容器(比如刷新配置),直接用rollout restart结合标签选择器:
- 命令格式:
kubectl rollout restart deployment -n <命名空间名> -l <标签选择器> - 示例:更新
prod命名空间下所有带app=backend标签的Deployment:kubectl rollout restart deployment -n prod -l app=backend
方法2:更新镜像触发滚动更新
要更新容器镜像版本并触发滚动更新,用set image批量操作:
- 命令格式:
kubectl set image deployment -n <命名空间名> -l <标签选择器> <容器名>=<新镜像> - 示例:把
test命名空间内所有env=dev的Deployment中app-container容器的镜像换成my-app:v1.2.0:kubectl set image deployment -n test -l env=dev app-container=my-app:v1.2.0
方法3:修改配置触发滚动更新
如果要调整Deployment的其他配置(比如资源限制、环境变量)并触发更新,用patch命令:
- 命令格式:
kubectl patch deployment -n <命名空间名> -l <标签选择器> -p '<JSON/YAML格式的配置>' - 示例:给
staging命名空间下所有service=payment的Deployment添加环境变量ENV=staging:kubectl patch deployment -n staging -l service=payment -p '{"spec":{"template":{"spec":{"containers":[{"name":"payment-service","env":[{"name":"ENV","value":"staging"}]}]}}}}'
验证更新状态
执行更新后,可通过以下命令查看进度和历史:
- 查看更新实时状态:
kubectl rollout status deployment -n <命名空间名> -l <标签选择器> - 查看更新历史记录:
kubectl rollout history deployment -n <命名空间名> -l <标签选择器>
内容的提问来源于stack exchange,提问作者Abraham
相关产品推荐
相关产品推荐

