在kubernetes helm上如何用新的配置值替换pod

use*_*321 4 config docker kubernetes kubernetes-helm

我正在使用头盔图来部署使用管理配置的"ConfigMap"的pod.

我直接编辑ConfigMap以更改配置文件,然后使用kubectl delete删除pod,以使新配置生效.

有没有简单的方法使用helm用新配置替换正在运行的pod而不执行" kubectl delete "命令

Oli*_*der 17

我们发现using --recreate-pods会立即终止该部署的所有正在运行的pod,这意味着您的服务会有一些停机时间.换句话说,您的广告连播不会滚动更新.

在Helm中解决这个问题的问题仍然存在:https://github.com/kubernetes/helm/issues/1702

相反,helm建议将配置文件的校验和添加到注释中的部署中.这样,部署将具有不同的散列,并且基本上看起来是"新的",导致它正确更新.

sha256sum函数可用于确保在另一个文件更改时更新部署的注释部分:

kind: Deployment
spec:
  template:
    metadata:
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
[...]
Run Code Online (Sandbox Code Playgroud)

来自这里的文档:https://github.com/kubernetes/helm/blob/master/docs/charts_tips_and_tricks.md#automatically-roll-deployments-when-configmaps-or-secrets-change

  • 它在这里不起作用。我可以通过描述部署来查看新的注释元数据,但 Pod 并未重新创建。 (2认同)

Oli*_*ver 2

你可以运行

头盔升级--recreate-pods

去做这个。

  • 如果您需要零停机部署,我不会推荐这种方法。`--recreate-pods` 标志立即终止部署的所有正在运行的 pod。 (14认同)