tex*_*ave 4 kubernetes kubernetes-helm configmap
在正在运行的 pod 上发出 helm upgrade 时,我的 configmap 会更新,但是 pod 会自动知道 configmap 更新的值,还是我需要采取其他步骤将新的 configmap 值注入到 pod 中?
我的总体目标是避免与正在运行的 pod 进行交互,例如删除或重新启动/重新安装。
我已经看到很多关于更改 sha1sum 和做一些变通方法的信息,但我的问题更基本 - pod 是否会自动意识到新的 configmap 项目?
---- 更新 --- 所以我们最终做的是:
helm upgrade -n release -f release/values.yaml --recreate-pods
尽管这会终止现有的 pod,但在发出命令后会立即启动另一个 pod,这意味着“接近零”停机时间。
Dav*_*aze 19
如果您的 Helm 图表创建了一个 ConfigMap,并且该 ConfigMap 作为卷挂载到 pod 中,那么当 ConfigMap 更新时,容器文件系统也会更新. 然后由应用程序来通知文件已更改。
将文件内容的哈希值设置为 pod 注释之类的技巧专门用于导致 Deployment 以删除和重新创建现有Pod的方式进行更新。这没关系!Kubernetes 中的 Pod 是一次性的,如果您删除由 Deployment 管理的 Pod,它将自动重新创建。如果您的应用程序仅在启动时读取 ConfigMap 内容(这是非常典型的),那么您需要执行以下操作以使 Pod 自行重新启动(从链接文档中复制):
kind: Deployment
spec:
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
Run Code Online (Sandbox Code Playgroud)
不,Pod 不会自动意识到配置映射更改的内容。
在 helm 升级的情况下,这就是您需要使用 helm 模板语法将配置映射文件的哈希值添加到 pod(或 pod 模板)元数据的原因。这会在配置和 pod 之间创建一个链接。
如果这样做,即使只更改了配置映射,pod(或 pod 模板)也会更新。然后,不需要人工干预。
| 归档时间: |
|
| 查看次数: |
7485 次 |
| 最近记录: |