【问题标题】:Kubernetes: Update all pods in parallelKubernetes:并行更新所有 Pod
【发布时间】:2022-08-14 12:28:51
【问题描述】:

有没有办法同时对所有 pod 执行更新操作?

我们有一个进程在 kubernetes 中作为有状态集运行,我们希望同时更新所有 pod。我们似乎无法为此找到配置。我知道rollingUpdate,它一次只更新一个 pod。

这是我们目前拥有的

  updateStrategy:
    rollingUpdate:
      partition: 2
    type: RollingUpdate

我也试过maxUnavailable,但还是不行。 有没有其他技巧可以完成这项工作?

标签: kubernetes


【解决方案1】:

使用 Statefulsets 时,没有本地替代方法可以同时更新所有 pod。

最接近它的是使用Parallel Pod Management policy,但它只影响缩放操作的行为(包括初始设置)并且不适用于更新。


虽然,OpenKruise 项目有一个扩展的组件套件,使Advanced StatefulSet 能够更新工作流程。

这是一个最小的工作示例,它将一次升级所有 Pod

apiVersion: apps.kruise.io/v1beta1
kind: StatefulSet
metadata:
  name: sample
spec:
  replicas: 5
  serviceName: fake-service
  selector:
    matchLabels:
      app: sample
  template:
    metadata:
      labels:
        app: sample
    spec:
      readinessGates:
      - conditionType: InPlaceUpdateReady
      containers:
      - name: main
        image: nginx:alpine
  podManagementPolicy: Parallel
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 100%

请注意,这将肯定会导致停机,但您可以调整为maxUnavailable: 50% 之类的内容,使其更具弹性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2018-02-01
    相关资源
    最近更新 更多