我只需要在生产集群上简单地重新创建某些发行版(例如10个)上的所有Pod。
是否有helm
命令来循环发行版本名称,每个发行版下的Pod应该删除然后重新创建。有什么提示吗?
我熟悉
for nmspc in $namespace_list; do kubectl delete pods -n $nmspc; done
但是,我试图查看是否存在等效的helm命令来执行相同的操作,以便一旦在发行版中删除了pod,它们就会再次旋转。
for rlsz in $release_list; do helm delete pods -n $rlsz; done
这样的东西存在吗?
答案 0 :(得分:1)
@Alex Pakka建议您使用helm upgrade --recreate-pods <release_name> path/to/chart
正确的方法,但是是的,有时这取决于图表。
例如,我从nginx-ingress-1.15.0.tgz
拿走了stable/nginx-ingress
helm fetch stable/nginx-ingress
并以标准方式安装
helm install --name nginx-ingress --namespace kube-system nginx-ingress-1.15.0.tgz
部署后,我可以使用以下命令成功重新创建Pod:
helm upgrade --recreate-pods nginx-ingress nginx-ingress-1.15.0.tgz --username "xxxxx" --password "xxxxx"
---
nginx-ingress-controller-cd996946d-95ndx 1/1 Running 0 47s
nginx-ingress-default-backend-77c7c664bb-2nsdp 1/1 Running 0 46s
---
nginx-ingress-controller-cd996946d-95ndx 1/1 Terminating 0 93s
nginx-ingress-controller-cd996946d-dd6dc 0/1 ContainerCreating 0 0s
nginx-ingress-default-backend-77c7c664bb-2nsdp 1/1 Terminating 0 92s
nginx-ingress-default-backend-77c7c664bb-mnrvj 0/1 ContainerCreating 0 0s
---
nginx-ingress-controller-cd996946d-dd6dc 1/1 Running 0 21s
nginx-ingress-default-backend-77c7c664bb-mnrvj 1/1 Running 0 21s
答案 1 :(得分:0)
您可以尝试
helm upgrade --recreate-pods <release_name> path/to/chart
如果您的图表按目录列表进行组织,并且目录名与发行版名称相对应(建议的方法),则可以使用
for d in */ ; do
helm upgrade --recreate-pods "${d%?} "${d}"
done
其中${d%?}
从目录名中删除斜杠。
请注意,根据定义,recreate-pods将导致停机。
如果您只是想重新启动Pod,并且它们都通过Helm部署,则只需完成
kubectl delete pods -n my-namespace --all
耕种机将重新创建它们,就像它们崩溃了一样。