Kubernetes - 从文件更新现有的ConfigMap

4
  1. 我在本地机器上创建了一个简单的文本文件。

  2. 我将该测试文件创建为配置映射:

    kubectl create configmap test-configm --from-file=test-file.txt

  3. 我添加了卷挂载和卷到我的部署,并验证了该文件是否在我的 Pod 中。

现在,我想在本地机器上修改 test-file.txt,然后更新第 2 步中创建的配置映射,以便所有 Pod 都可以获取该文件的新版本。我该如何做到这一点呢?

谢谢!

1个回答

7
根据https://kubernetes.io/docs/concepts/configuration/configmap/,已挂载的 configMaps 会自动更新。您只需使用干运行(dry-run),然后使用命令来更新 configMap,就可以了。
kubectl create configmap test-configm --from-file=test-file.txt --dry-run -o yaml | kubectl apply -f -

非常感谢!我能够根据您的答案轻松更新我的配置映射。我需要做的一件事是删除Pod / 使其重新创建,以便在Pod中更新文件。是否有一种方法可以自动更新文件而无需重新创建Pod?或者我应该考虑使用NFS而不是配置映射吗? - johnb928
@johnb928 无论如何,您都必须重新启动您的 Pod 才能使 ConfigMap 上所做的更改生效。 - Dashrath Mundkar
请检查您的集群配置,您不应该重新创建Pod。从更新ConfigMap到将新密钥投影到Pod的时间总延迟可能长达kubelet同步周期+(任何适用的)缓存传播延迟。同步周期默认为1分钟。检查集群上的kubelet配置。如果您选择调整该数字,我会提醒您要小心。这将导致频繁尝试同步的开销。 - Vanitha Kumar
@VanithaKumar,我进行了一组新的更改并应用了它们。我等了一个多小时,定期检查 pod 中的文件是否更新,而无需重新创建 pod,但不幸的是,文件似乎没有改变。这是来自 GKE 的默认 Kubernetes 集群。 - johnb928
你是否正在使用subPath?如果您可以发布YAML,那将有所帮助。 - Vanitha Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接