当由daemonset控制的pod时,pod中发生一些错误,其状态为CrashLoopBackOff
,我想删除这些pod,但不删除DaemonSet。
所以我想将daemonset缩放为0,据我所知,DaemonSet Spec不支持pod的副本。
我怎么到那里?
答案 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