Cha*_*ndu 8 kubernetes kubernetes-helm
我的掌舵图有大约 12 个 PODS。当我helm upgrade
在更改某些值后执行此操作时,所有 POD 都会重新启动,只有一个除外。
我的问题是:
helm upgrade
不受升级影响的 PODS会重启吗?
换一种说法:
是否helm upgrade
仅在受升级影响时才重新启动 POD?
Dat*_*atz 19
该标志在 Helm 2 中--recreate-pods
被标记为已弃用,并在Helm 3 中被移除。
Helm 建议添加其他文件的校验和,这些文件可能会像这样更改
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
Run Code Online (Sandbox Code Playgroud)
或添加带有随机数的注释,强制在每次推出时进行更新:
annotations:
rollme: {{ randAlphaNum 5 | quote }}
Run Code Online (Sandbox Code Playgroud)
请参阅 Helm 文档:https : //v3.helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments
And*_*own 16
--recreate-pods
已在 helm 3 中删除,这肯定引起了一些 helm 用户的注意。
我强制使用部署 Pod 规范中的时间戳重新创建 Pod。请注意,它必须在规范中,这在部署顶层不起作用:
spec:
template:
metadata:
annotations:
releaseTime: {{ dateInZone "2006-01-02 15:04:05Z" (now) "UTC"| quote }}
Run Code Online (Sandbox Code Playgroud)
jt9*_*t97 10
就我而言,掌舵仅重启受升级影响的 pod
如果您想重新启动所有 pod,您可以使用 --recreate-pods 标志
--recreate-pods -> 如果适用,为资源执行 pods 重启
例如,如果您有仪表板图表,则可以使用此命令重新启动每个 Pod。
helm upgrade --recreate-pods -i k8s-dashboard stable/k8s-dashboard
Run Code Online (Sandbox Code Playgroud)
有一个github 问题为其提供了另一种解决方法
每次需要重新启动 Pod 时,请更改该注释的值。一个好的注释可能是时间戳
首先,向 pod 添加注释。如果您的图表属于部署类型,请在 spec.template.metadata.annotations 中添加注释。例如:
kind: Deployment
spec:
template:
metadata:
labels:
app: ecf-helm-satellite-qa
annotations:
timestamp: "{{ .Values.timestamp }}"
Run Code Online (Sandbox Code Playgroud)
部署那个。现在,每次在 helm 命令中设置时间戳。Kubernetes 将在不停机的情况下推出新的更新。
helm upgrade ecf-helm-satellite-qa . --set-string timestamp=a_random_value
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19947 次 |
最近记录: |