随笔 - 307  文章 - 0  评论 - 5  阅读 - 4264

Deployment资源的升级过程

Kubernetes Deployment 升级过程

在 Kubernetes (K8S) 中,Deployment 的升级过程主要包括以下几个步骤:

1. 更新 Deployment 配置

当需要对应用程序进行升级时,首先需要更新 Deployment 的 YAML 配置文件。可以更改的内容包括但不限于:

  • 容器镜像版本(如从 v1.0 升级到 v2.0
  • 应用配置(环境变量、命令参数等)
  • 资源请求与限制
  • 更新策略和其他元数据

示例 YAML 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.22.0  # 更新为新的版本
        ports:
        - containerPort: 80

2. 选择升级策略

默认情况下,Deployment 使用 滚动升级(Rolling Update) 策略:

  • 滚动升级会逐步替换旧版 Pod,确保整体服务保持可用。
  • 每次创建新 Pod 时,旧 Pod 继续提供服务,直到新 Pod 准备就绪。

另一种升级策略是 Recreate 策略

  • 先删除所有现有的 Pod,然后再创建新的 Pod。

滚动升级 是推荐策略,它最大程度地减少了服务中断。

3. 实施滚动升级

在滚动升级过程中:

  1. 创建新的 ReplicaSet:Deployment 控制器会基于新的 Pod 模板创建一个新的 ReplicaSet。
  2. Pod 的逐步创建和替换:新的 ReplicaSet 会创建新 Pod,同时确保始终有部分旧 Pod 在运行。可以使用 .spec.strategy.rollingUpdate.maxUnavailable 来控制最大不可用 Pod 数量(例如,设置为 1 表示每次最多允许一个 Pod 不可用)。
  3. 就绪探针检查:新 Pod 启动后,会通过就绪探针验证。如果 Pod 准备好,它将替换掉旧的 Pod。
  4. 替换持续进行:直到所有旧 Pod 被新 Pod 替换完毕。

4. 监控和确认升级

可以使用 kubectl 命令或 Kubernetes Dashboard 监控 Deployment 和 Pod 的状态。

  • 查看 Deployment 状态:

    kubectl rollout status deployment/my-nginx-deployment
    
  • 查看 Pod 健康状况:

    kubectl get pods
    

确认所有新 Pod 都已启动且应用程序正常运行后,表示升级完成。

5. 回滚机制

如果在升级过程中出现问题,可以通过回滚操作回到上一个稳定版本。Kubernetes 会自动维护每个 Deployment 的历史记录,并允许回滚。

  • 执行回滚命令:
    kubectl rollout undo deployment/my-nginx-deployment
    

该命令会将 Deployment 回滚到上一个稳定版本。


Kubernetes 的 Deployment 升级过程通过滚动升级策略,确保了最小的服务中断和最大程度的可恢复性。整个过程分为以下步骤:

  1. 更新 Deployment 配置文件。
  2. 选择适合的升级策略(默认是滚动升级)。
  3. 在滚动升级过程中逐步替换旧的 Pod,并监控 Pod 的健康状态。
  4. 确认升级完成后,回滚到旧版本的操作可以随时进行。
posted on   Leo-Yide  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示