作者信息:https://home.cnblogs.com/u/huangjiabobk

在k8S中,deployment升级过程是什么?

在Kubernetes (k8s) 中,Deployment升级过程是一个受控且平滑的过程,用于将应用的新版本无缝地替换旧版本。以下是Deployment进行滚动升级的基本步骤:

  1. 更新Deployment配置
    • 首先,你需要更新Deployment的yaml配置文件,例如更改镜像标签到新版本的应用程序镜像。
  2. 提交变更
    • 应用这些更改,通过kubectl apply命令或API调用将新的配置应用到集群中。
  3. 启动滚动更新
    • Kubernetes Deployment控制器检测到配置变化后,会开始执行滚动更新策略。默认情况下,它采用滚动更新(RollingUpdate)策略。
  4. 逐步替换Pod
    • 滚动更新策略会按照ReplicaSet中的Pod副本数量和指定的.spec.strategy.rollingUpdate.maxUnavailable.spec.strategy.rollingUpdate.maxSurge 参数来逐步创建新版本Pod,并同时删除旧版本Pod。
      • maxUnavailable 定义了可以有多少个Pod不可用(未就绪)而不会影响服务的整体可用性。
      • maxSurge 则指定了可以比期望副本数多创建多少个Pod,以加速升级过程。
  5. 健康检查
    • 在每个新Pod被创建之后,Kubernetes会根据定义的livenessProbe和readinessProbe来检查新Pod是否已经启动并准备好接收流量。
  6. 流量转移
    • 当新Pod通过健康检查并标记为“就绪”时,Service会逐渐将流量从旧Pod转移到新Pod。
  7. 完成升级
    • 一旦所有旧Pod都被新Pod替换并且新版本的所有Pod都已准备就绪,则升级过程结束。
  8. 回滚机制
    • 如果在升级过程中出现问题,可以通过回滚Deployment到之前的修订版来恢复到之前的工作状态。
  9. 清理旧版本
    • 一旦验证新版本的应用程序正常工作,可以逐步删除旧版本的Pod副本,以释放资源。

综上所述,在整个过程中,Deployment控制器确保满足用户定义的可用性和升级速率限制,从而实现对应用程序无中断或最小化中断的服务更新。

posted @ 2024-02-09 18:17  黄嘉波  阅读(100)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波