如何将kubernetes守护程序集缩放为0?

时间:2018-12-26 08:56:37

标签: kubernetes

当由daemonset控制的pod时,pod中发生一些错误,其状态为CrashLoopBackOff,我想删除这些pod,但不删除DaemonSet。

所以我想将daemonset缩放为0,据我所知,DaemonSet Spec不支持pod的副本。

我怎么到那里?

2 个答案:

答案 0 :(得分:11)

如果您不想删除守护程序集,一种可能的解决方法是对任何不存在的标签使用临时nodeSelector,例如:

kubectl -n <namespace> patch daemonset <name-of-daemon-set> -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'

这将缩小守护程序集。

这是删除临时nodeSelector的补丁:

kubectl -n <namespace> patch daemonset <name-of-daemon-set> --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]'

这将再次扩展守护程序集。

答案 1 :(得分:3)

DaemonSet确保每个节点都运行Pod的副本。因此,您不能将其缩减为“部署”。 DaemonSet使用DaemonSet控制器,而Deployment使用Replication Controller进行复制。因此,您只需删除DaemonSet。

如果要备份确切的Daemonset部署,可以使用以下命令并将其保存在某处,然后再次使用以进行以后的部署。

kubectl get daemonset <name-of-daemon-set> -n <namespace> -o yaml