您可以在触发一个或多个更新之前暂停deployment,然后再恢复它。这样,您可以在暂停和恢复之间应用多个修复程序,而不会触发不必要的deployment。
例如,对于刚刚创建的deployment:获取部署详细信息:
kubectl get deploy输出类似于以下内容:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx 3 3 3 3 1m获取rollout状态:
kubectl get rs输出类似于以下内容:
NAME DESIRED CURRENT READY AGE
nginx-2142116321 3 3 3 1m通过运行以下命令来暂停deployment:
kubectl rollout pause deployment.v1.apps/nginx-deployment输出类似于以下内容:
deployment.apps/nginx-deployment paused然后更新deployment的image:
kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1输出类似于以下内容:
deployment.apps/nginx-deployment image updated请注意,没有新的deployment开始:
kubectl rollout history deployment.v1.apps/nginx-deployment输出类似于以下内容:
deployments "nginx"
REVISION CHANGE-CAUSE
1 <none>获取deployment状态,以确保deployment已成功更新:
kubectl get rs输出类似于以下内容:
NAME DESIRED CURRENT READY AGE
nginx-2142116321 3 3 3 2m您可以根据需要进行任意数量的更新,例如,更新将使用的资源:
kubectl set resources deployment.v1.apps/nginx-deployment -c=nginx --limits=cpu=200m,memory=512Mi输出类似于以下内容:
deployment.apps/nginx-deployment resource requirements updateddeployment在暂停之前的初始状态将继续其功能,但是只要暂停deployment,对deployment的新更新将不会有任何效果。
最终,恢复deployment并观察新的ReplicaSet以及所有新更新:
kubectl rollout resume deployment.v1.apps/nginx-deployment输出类似于以下内容:
deployment.apps/nginx-deployment resumed观察deployment的状态,直到完成为止。
kubectl get rs -w输出类似于以下内容:
NAME DESIRED CURRENT READY AGE
nginx-2142116321 2 2 2 2m
nginx-3926361531 2 2 0 6s
nginx-3926361531 2 2 1 18s
nginx-2142116321 1 2 2 2m
nginx-2142116321 1 2 2 2m
nginx-3926361531 3 2 1 18s
nginx-3926361531 3 2 1 18s
nginx-2142116321 1 1 1 2m
nginx-3926361531 3 3 1 18s
nginx-3926361531 3 3 2 19s
nginx-2142116321 0 1 1 2m
nginx-2142116321 0 1 1 2m
nginx-2142116321 0 0 0 2m
nginx-3926361531 3 3 3 20s获取最新deployment的状态:
kubectl get rs输出类似于以下内容:
NAME DESIRED CURRENT READY AGE
nginx-2142116321 0 0 0 2m
nginx-3926361531 3 3 3 28s注意:您无法回滚已暂停的deployment,直到您将其恢复。
文章转载自kubernetes每日一炼,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




