暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何在kubernetes中暂停和恢复Deployment

kubernetes每日一炼 2019-12-19
2273

您可以在触发一个或多个更新之前暂停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 updated

    deployment在暂停之前的初始状态将继续其功能,但是只要暂停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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论