吊舱删除和吊舱驱逐有何区别?

时间:2020-06-09 08:05:56

标签: kubernetes kubernetes-pod

PodInterface中,两个操作DeleteEvict具有相同的效果:删除旧的Pod并创建一个新的Pod。

如果这两个操作具有相同的效果,为什么我们需要两个API来删除Pod并创建一个新的Pod?

1 个答案:

答案 0 :(得分:7)

吊舱的删除是由最终用户完成的,是正常的活动。这意味着吊舱将从ETCD和kubernetes控制平面中删除。除非有更高级别的控制器(例如部署,守护程序,statefulset等),否则将不会再次创建pod并将其调度到kubernetes工作者节点。

如果pod的资源消耗超出限制,并且kubelet触发对pod的逐出,或者用户执行kubectl drain或手动调用eviction API,则会发生逐出。通常这不是正常活动。有时,被逐出的Pod不会自动从ETCD和kubernetes控制平面中删除。除非存在更高级别的控制器(例如部署,守护程序,statefulset等),否则将不会再次创建被逐出的Pod并将其调度到kubernetes工作者节点。

最好使用delete而不是evict,因为与删除相比,与使用evct相比,与删除相比,风险更大,因为在某些情况下,如果由应用程序的控制器(部署等)创建的替换pod确实执行,逐出可能导致应用程序处于损坏状态。尚未准备就绪,或者最后驱逐的吊舱的终止宽限期很长