【云原生技术】K8S更新策略有哪些方式,每种方式的可选必填字段有哪些,详细举例说明

更新策略有哪些方式

  • 一、更新策略详细举例
      • 1. **RollingUpdate(滚动更新)**
        • 说明:
        • 必填字段:
        • 可选字段:
        • 示例:
      • 2. **Recreate(重建)**
        • 说明:
        • 必填字段:
        • 可选字段:
        • 示例:
      • 3. **OnDelete(手动更新)**
        • 说明:
        • 必填字段:
        • 可选字段:
        • 示例:
      • 总结
      • 详细示例
      • 小结
  • 二、Recreate不可选minReadySeconds吗?
      • Recreate 更新策略与 minReadySeconds
      • 示例
      • 总结

一、更新策略详细举例

在 Kubernetes 中,更新策略(Update Strategy)主要用于控制如何进行更新操作,确保服务的可用性和稳定性。常见的更新策略包括 RollingUpdateRecreateOnDelete。下面是关于这些更新策略的详细介绍,包括每种方式的必填字段和可选字段,以及示例。

1. RollingUpdate(滚动更新)

说明:

该策略允许逐步替换旧 Pods,以减少停机时间。新的 Pods 会在旧 Pods 完全就绪之后开始替代它们。

必填字段:
  • maxUnavailable:指更新期间可以不可用的 Pod 的最大数量或百分比。
  • maxSurge:在更新期间可以多出的 Pod 的最大数量或百分比。
可选字段:
  • minReadySeconds:新 Pod 到达就绪状态后需要等待的时间(单位:秒)。
示例:
updateStrategy:
  type: RollingUpdate                  # 更新策略类型(必填)
  rollingUpdate:
    maxUnavailable: 1                  # 最大不可用 Pod 数量(必填)
    maxSurge: 1                        # 最大可多出 Pod 数量(必填)
  minReadySeconds: 10                  # 最小就绪时间(可选,单位:秒)

2. Recreate(重建)

说明:

在此策略下,Kubernetes 会首先删除现有 Pods,然后创建新的 Pods。这种方式会导致一定的停机时间。

必填字段:
  • (只需指定 type)。
可选字段:
示例:
updateStrategy:
  type: Recreate                       # 更新策略类型(必填)

3. OnDelete(手动更新)

说明:

OnDelete 策略表示只有当用户手动删除 Pods 时,新的 Pods 才会被创建。这种策略允许更精细地控制何时更新。

必填字段:
  • (只需指定 type)。
可选字段:
示例:
updateStrategy:
  type: OnDelete                       # 更新策略类型(必填)

总结

更新策略类型 必填字段 可选字段
RollingUpdate maxUnavailablemaxSurge minReadySeconds
Recreate
OnDelete

详细示例

以下是包含所有策略的 Deployment 的详细 YAML 示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-container
        image: example-image:latest
        ports:
        - containerPort: 80
  strategy:
    type: RollingUpdate                # 使用滚动更新策略
    rollingUpdate:
      maxUnavailable: 1                # 最大不可用 Pod 数量为 1
      maxSurge: 1                      # 最大可多出 Pod 数量为 1
    minReadySeconds: 10                # 最小就绪时间为 10 秒

小结

在 Kubernetes 中,正确选择和配置更新策略对确保应用可用性至关重要。根据应用需求选择合适的策略和参数,可以有效提高系统的稳定性和可靠性。

二、Recreate不可选minReadySeconds吗?

在 Kubernetes 中,Recreate 更新策略确实可以配置 minReadySeconds,虽然这并不是它的核心特性。这是因为 minReadySeconds 仍可以适用于包含该容器的其他情境(例如,当使用其他更新策略时)。

Recreate 更新策略与 minReadySeconds

  1. Recreate 更新策略

    • 在此策略下,Kubernetes 首先会删除现有的 Pods,然后创建新的 Pods。这意味着在旧 Pods 被删除时,通常会有短暂的停机时间。
  2. minReadySeconds 属性:

    • minReadySeconds 可以在 Deployment 的规范中定义,它指定新创建的 Pods 在被视为就绪之前需要等待的时间(单位:秒)。即使在 Recreate 策略下,当新的 Pods 启动并达到就绪状态时,此字段也可以进行配置。

示例

即使 Recreate 策略并不是常常与 minReadySeconds 结合使用,仍然可以在 YAML 中加入该配置项:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-container
        image: example-image:latest
        ports:
        - containerPort: 80
  strategy:
    type: Recreate                 # 更新策略类型(必填)
  minReadySeconds: 10             # 最小就绪时间(可选,单位:秒)

总结

  • Recreate 策略本身并不需要 minReadySeconds,但你可以在 Deployment 中使用它来定义 Pods 启动后所需的最小就绪时间。
  • 这在使用 Rollout 或其他策略时更常见,但在 Recreate 策略中也是有效的。

你可能感兴趣的:(云原生,kubernetes,容器)