MST

星途 面试题库

面试题:容器化中Kubernetes滚动更新机制的基础原理是什么

请详细阐述Kubernetes滚动更新机制在后端开发容器化场景下的基本原理,包括涉及到的主要组件和工作流程。
19.2万 热度难度
后端开发容器化

知识考点

AI 面试

面试题答案

一键面试

基本原理

Kubernetes滚动更新机制允许在不中断服务的情况下,逐步将旧版本的容器替换为新版本。它通过控制Pod的创建和销毁速率,实现新旧版本的平稳过渡。在后端开发容器化场景下,滚动更新能确保应用在更新过程中持续可用,减少对用户的影响。

主要组件

  1. Deployment:用于管理Pod和ReplicaSet,定义了Pod的期望状态,包括副本数量、容器镜像版本等。它是实现滚动更新的核心资源对象。
  2. ReplicaSet:确保指定数量的Pod副本始终处于运行状态。Deployment通过创建和管理ReplicaSet来控制Pod的数量和版本。
  3. kube - controller - manager:集群的控制中心,包含多个控制器,其中Deployment Controller负责处理Deployment的更新操作,监控实际状态与期望状态的差异,并进行调整。

工作流程

  1. 更新定义:用户通过修改Deployment的配置,如容器镜像版本,来触发滚动更新。例如,kubectl set image deployment/my - app my - app=my - app:v2,将my - app Deployment中my - app容器的镜像更新为v2版本。
  2. 创建新的ReplicaSet:Deployment Controller根据更新后的配置创建一个新的ReplicaSet,该ReplicaSet使用新的容器镜像。
  3. 逐步替换旧Pod:Deployment Controller开始逐步增加新ReplicaSet中的Pod数量,同时减少旧ReplicaSet中的Pod数量。每次增加和减少的Pod数量由maxSurgemaxUnavailable参数控制。
    • maxSurge:指定在滚动更新过程中,超出期望副本数的最大Pod数量。可以是具体数字或百分比,默认值为25%。例如,若期望副本数为4,maxSurge为25%,则更新过程中最多有5个Pod(4 + 1)。
    • maxUnavailable:指定在滚动更新过程中,不可用的最大Pod数量。同样可以是具体数字或百分比,默认值为25%。如期望副本数为4,maxUnavailable为25%,则更新过程中最多有1个Pod不可用。
  4. 监控与验证:在滚动更新过程中,Kubernetes持续监控新Pod的健康状态,通过readinessProbe检查新Pod是否准备好接收流量。若新Pod健康检查失败,滚动更新会暂停,以便用户排查问题。只有当新Pod通过健康检查后,才会继续滚动更新。
  5. 完成更新:当旧ReplicaSet中的Pod全部被替换为新ReplicaSet中的Pod时,滚动更新完成,应用成功升级到新版本。此时,旧的ReplicaSet会被保留,以便在需要时进行回滚操作。
  6. 回滚操作:如果在更新过程中发现问题,可以使用kubectl rollout undo deployment/my - app命令回滚到上一个稳定版本。Deployment Controller会根据保留的旧ReplicaSet信息,将Pod恢复到之前的版本状态。