Kubernetes:如何优雅地删除守护进程中的pod?
如果docker映像中有更新,滚动更新策略将逐个更新守护程序集中的所有POD,同样,是否可以在不更改守护程序配置的情况下优雅地重新启动POD,或者是否可以显式触发 目前,我正在手动完成这项工作Kubernetes:如何优雅地删除守护进程中的pod?,kubernetes,Kubernetes,如果docker映像中有更新,滚动更新策略将逐个更新守护程序集中的所有POD,同样,是否可以在不更改守护程序配置的情况下优雅地重新启动POD,或者是否可以显式触发 目前,我正在手动完成这项工作 kubectl删除pod 一个接一个,直到每个吊舱进入运行状态。您可以尝试使用: 使用kubectl drain以优雅地终止节点上的所有POD,同时将节点标记为不可调度(使用,从): 这可以防止新的吊舱在您试图将其卸下时降落到节点上 然后: 使节点再次可调度: 要触发重新启动命名空间[namespace_
kubectl删除pod
一个接一个,直到每个吊舱进入运行状态。您可以尝试使用:
使用kubectl drain以优雅地终止节点上的所有POD,同时将节点标记为不可调度(使用,从):
这可以防止新的吊舱在您试图将其卸下时降落到节点上
然后:
使节点再次可调度:
要触发重新启动命名空间[namespace_name]中由deamonset管理的所有POD,请执行以下操作:
kubectl rollout restart de -n [namespace_name]
守护程序集
控制器忽略不可计划的标记,因此属于守护程序集
的pod将立即被替换。如果节点上有属于守护程序集的pod,则仅当--ignore daemonsets
标志设置为true时,drain命令才会继续,但即使是这样,它也不会删除pod,因为守护程序集
控制器。@KonstantinVustin因此,请先删除守护程序,然后在排空节点后重新创建它?您将不得不使用标志--忽略守护程序
,因为每个节点上都会有kube system
命名空间守护程序,例如flannel
或其他。因此,您不需要删除用户定义的守护程序,因为没有此标志,kubectl drain
将无法继续。您唯一能做的就是修改守护程序集中的NodeSelector筛选器,将其从应该排空的节点中排除
kubectl uncordon $NODENAME
kubectl rollout restart de -n [namespace_name]