Kubernetes对象-属主和附属
Kubernetes 属主和附属
在 Kubernetes 中,一些对象是其他对象的属主(属主)。例如,ReplicaSet 是一组 Pod 的属主。这些拥有的对象是其属主的附属。
所有权不同于资源使用的标签和选择器机制。例如,考虑一个创建 EndpointSlice
对象的 Service。Service 使用标签来允许 control plane 确定哪些 EndpointSlice
对象用于该 Service。除了标签之外,代表 Service 管理的每个 EndpointSlice
都有一个属主引用。属主引用避免 Kubernetes 的不同部分干扰到不受它们控制的对象。
对象规范中的属主引用
附属对象中包含 metadata.ownerReferences 字段,该字段引用了属主对象。有效的属主引用由与附属对象位于同一命名空间中的对象名称和 UID 组成。Kubernetes 会自动为依赖于其他对象(如 ReplicaSets、DaemonSets、Deployments、Jobs 和 CronJobs 以及 ReplicationControllers)的对象设置此字段的值。通常不需要用户来管理这些关系,Kubernetes 可以自动管理。
附属对象还有一个 ownerReferences.blockOwnerDeletion
字段,该字段采用布尔值,并控制特定附属对象是否可以阻止垃圾收集删除其属主对象。如果控制器(例如,Deployment 控制器)设置了metadata.ownerReferences
字段的值,Kubernetes 会自动将此字段设置为 true。您还可以手动设置blockOwne