• kubernetes Pod的升级与回滚


    一:Deployment的升级

    1.通过kubectl set image命令为Deployment设置新的镜像名称
    kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

    2.使用kubectl edit命令修改Deployment的配置 将spec.template.spec.containers[0].images 从nginx:1.7.9 更改为1.9.1; 保存退出后,kubernetes会自动升级镜像。
    3.通过kubectl rollout status 可以查看deployment的更新过程
    在Deployment的定义中,可以通过spec.strategy指定Pod更新的策略:

    1.Recreate(重建): 设置spec.strategy.type=Recreate,表示Deployment在更新Pod时,会先杀掉所有正在运行的Pod,然后创建新的Pod.
    2.RollingUpdate(滚动更新):以滚动更新的方式来逐个更新Pod,可以通过设置spec.strategy.rollingUpdate下的两个参数(maxUnavailable和maxSurge)来控制滚动更新的过程。
    通常来说,不鼓励更新Deployment的标签选择器,因为这样会导致Deployment选择的Pod列表发生变化,也可能与其它控制器产生冲突。

    :Deployment的回滚

    所有Deployment的发布历史记录都保留在系统中,如果要进行回滚:

    发布应用时记录版本次 kubectl apply -f xxxx.yaml --record

    1. 用kubectl rollout history命令检查这个Deployment部署的历史记录
    2.用kubectl rollout undo deployment/nginx-deployment 撤销本次发布回滚到上一个部署版本
    3.用kubectl rollout undo deployment/nginx-deployment --to-revision=2 回滚到指定版本

    三:暂停和恢复Deployment的部署操作,以完成复杂的修改

    对应一次复杂的Deployment配置修改,为了避免频繁触发Deployment的更新操作,可以暂停Deployment的更新操作,然后进行配置修改,再回复Deployment.一次性触发完整的更新操作。
    使用命令:kubectl rollout pause deployment/nginx-deployment

    四:使用kubectl rolling-update命令完成RC的滚动升级

    对应RC的滚动升级,Kubernetes还提供了一个kubectl rolling-update 命令进行实现。该命令创建一个新的RC,然后自动控制旧的RC中的副本数量逐渐减少到0,同时新的RC中的Pod副本的数量从0逐步增加到目标值,来完成Pod的升级。 需要注意的是新旧RC要再同一个命名空间内。

    五:其它管理对象的更新策略
    1.DaemonSet的更新策略
    a.OnDelete:  默认配置。只有旧的Pod被用户手动删除后,才触发新建操作。
    b.RollingUpdate: 就版本的Pod将被自动杀掉,然后自动创建新版本的DaemonSet Pod.

    2.StatefulSet的更新策略
    StatefulSet的更新策略正逐渐向Deployment和DaemonSet的更新策略看齐。

    原文:http://blog.itpub.net/28624388/viewspace-2154452/

     

  • 相关阅读:
    sql初始化XML操作
    c#字符串操作方法实例
    C#日期格式转换
    asp.net中打印指定控件内容
    NET中验证控件表达式汇总
    js中页面刷新和页面跳转的方法总结
    数据库备份与还原SQL代码
    NIO 基础之 Buffer
    Java堆外内存之突破JVM枷锁
    JAVA NIO:Buffer.mark()的用法
  • 原文地址:https://www.cnblogs.com/linyouyi/p/11573791.html
Copyright © 2020-2023  润新知