Kubernetes 对象删除并不像表面上看起来那么简单。删除对象是一个涉及的过程,其中包括条件检查以确定是否可以安全删除。这是通过称为终结器的 API 对象实现的。
在本文中,我们将了解终结器是什么、它们是如何管理的,以及当您想要删除对象时它们可能带来的挑战。更好地了解删除过程可以帮助您调试资源似乎没有及时终止的问题。
什么是终结器?
终结器是一种在删除对象之前强制满足某些条件的机制。当您运行类似的命令时kubectl delete namespace/example,Kubernetes 会检查在引用对象上定义的终结器。这些都列在其metadata.finalizers字段中。每个 Finalizer 都有机会推迟删除,直到它完成其操作。
实际的删除过程最终如下所示:
- 发出删除命令。– Kubernetes 将对象标记为待删除。这使资源处于只读的“终止”状态。
- 运行与对象的终结器关联的每个操作。–每次终结器操作完成时,终结器都会与对象分离,因此它将不再出现在metadata.finalizers字段中。
- Kubernetes 不断监控