【问题标题】:WIll "helm upgrade" restart PODS even if they are not affected by upgrade?即使 PODS 不受升级影响,“helm upgrade”是否会重新启动它们?
【发布时间】:2020-02-24 09:23:14
【问题描述】:

我的舵图有大约 12 个 PODS。当我在更改某些值后执行 helm upgrade 时,所有 POD 都会重新启动,除了一个。

我的问题是

helm upgrade 是否会重启 PODS,即使它们不受升级影响?

换一种说法

helm upgrade只有在升级影响的情况下才会重启POD?

【问题讨论】:

  • 您执行 helm upgrade 之前是否没有任何预先存在的版本?只是 helm upgrade 不应该被执行
  • 您是在谈论 helm 本身还是您通过 helm 安装的其他服务?

标签: kubernetes kubernetes-helm


【解决方案1】:

就我而言,仅重启受升级影响的 pod

如果你想重启所有 pod,你可以使用 --recreate-pods 标志

--recreate-pods -> 对资源执行 pods 重启(如果适用)

例如,如果您有仪表板图表,您可以使用此命令重新启动每个 pod。

helm upgrade --recreate-pods -i k8s-dashboard stable/k8s-dashboard

有一个github issue 为它提供了另一种解决方法

每次需要重新启动 pod 时,更改该注解的值。一个好的注释可以是时间戳

首先,给 pod 添加注解。如果您的图表是类部署,请在 spec.template.metadata.annotations 中添加注释。例如:

kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: ecf-helm-satellite-qa
      annotations:
        timestamp: "{{ .Values.timestamp }}"

部署它。现在,每次在 helm 命令中设置时间戳。 Kubernetes 将在不停机的情况下推出新的更新。

helm upgrade ecf-helm-satellite-qa . --set-string timestamp=a_random_value

【讨论】:

  • --recreate-pods 已随 Helm 3 删除。(请参阅下面的答案。)
【解决方案2】:

标志 --recreate-pods 在 Helm 2 中被标记为已弃用,并在 Helm 3 中被删除

Helm 建议添加 校验和 的其他文件,这些文件可能会像这样更改

      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}

或添加带有随机数的注释,强制每次发布时更新:

      annotations:
        rollme: {{ randAlphaNum 5 | quote }}

查看 Helm 文档:https://v3.helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments

【讨论】:

  • 当我在所有部署中添加rollme: {{ randAlphaNum 5 | quote }} 时,helm upgrade 会重新启动所有部署
【解决方案3】:

--recreate-pods 已在 helm 3 中删除,这肯定引起了 some helm users 的注意。

我强制使用部署 pod 规范中的时间戳重新创建 pod。请注意,它必须在规范中,这在部署顶层不起作用:

spec:
  template:
    metadata:
      annotations:
        releaseTime: {{ dateInZone "2006-01-02 15:04:05Z" (now) "UTC"| quote }}

【讨论】:

    【解决方案4】:

    您需要先删除作业, 并运行

    helm history <release_name>
    helm rollback <release_name> <number> --recreate-pods
    

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多