Kubernetes集群架构-垃圾回收
Kubernetes 集群架构 - 垃圾回收
垃圾回收是 Kubernetes 用于清理集群内资源的各种机制的统称。支持清理如下资源:
- 已终止的 Pod
- 已完成的 Job
- 没有属主引用的对象
- 未使用的容器和容器镜像
- [动态配置的持久卷,其 StorageClass 回收策略为 Delete]( 已完成的 Job)
- 过时或过期的 CertificateSigningRequest (CSR)
- 在以下情况下删除的节点:
- 当集群使用云控制器管理器运行于云端时
- 当集群使用类似于云控制器管理器的插件运行在本地环境中时。
- 节点租约对象
属主与依赖
Kubernetes 中的许多对象通过属主引用相互链接。属主引用告诉控制平面对象之间的相互依赖关系。Kubernetes 控制平面和其他 API 客户端基于属主引用在删除对象之前清理相关资源。在大多数情况下,Kubernetes 会自动管理属主引用。
所有权不同于某些资源也使用的标签和选择器机制。例如,考虑一个创建 EndpointSlice
对象的Service。Service 使用标签来允许控制平台确定哪些 EndpointSlice
对象用于该 Service。除了标签之外,被 Service 托管的每个 EndpointSlice
都有一个属主引用。属主引用可以帮助 Kubernetes 中的不同组件避免干预并非由它们控制的对象。
设计上不允许跨命名空间的属主引用。命名空间依赖项可以指定集群范围或命名空间内的属主。命名空间属主必须与依赖项存在于同一命名空间中。否则,属主引用将被视为不存在,并且在验证所有属主都不存在后,依赖项将被删除。
群集范围的依赖项只能指定群集范围的属主。在 v1.20+ 中,如果集群范围的依赖项将命名空间类型指定为属主,则它被视为具有无法解析的属主引用,并且无法进行垃圾回收。
在 v1.20+ 中,如果垃圾回收器检测到无效的