在PodInterface
中,两个操作Delete
和Evict
具有相同的效果:删除旧的Pod并创建一个新的Pod。
如果这两个操作具有相同的效果,为什么我们需要两个API来删除Pod并创建一个新的Pod?
答案 0 :(得分:7)
吊舱的删除是由最终用户完成的,是正常的活动。这意味着吊舱将从ETCD和kubernetes控制平面中删除。除非有更高级别的控制器(例如部署,守护程序,statefulset等),否则将不会再次创建pod并将其调度到kubernetes工作者节点。
如果pod的资源消耗超出限制,并且kubelet触发对pod的逐出,或者用户执行kubectl drain
或手动调用eviction API
,则会发生逐出。通常这不是正常活动。有时,被逐出的Pod不会自动从ETCD和kubernetes控制平面中删除。除非存在更高级别的控制器(例如部署,守护程序,statefulset等),否则将不会再次创建被逐出的Pod并将其调度到kubernetes工作者节点。
最好使用delete而不是evict,因为与删除相比,与使用evct相比,与删除相比,风险更大,因为在某些情况下,如果由应用程序的控制器(部署等)创建的替换pod确实执行,逐出可能导致应用程序处于损坏状态。尚未准备就绪,或者最后驱逐的吊舱的终止宽限期很长