我正在写一个Kubernetes控制器。
有人通过创建了自定义资源kubectl apply -f custom-resource.yaml。我的控制器会注意到创建的内容,然后Deployment以某种方式创建一个与自定义资源有关的。
我正在寻找设置Deployment的ownerReferences字段的正确方法,以使自定义资源的删除将导致对的删除Deployment。我知道我可以这样做:
ownerReferences:
- kind: <kind from custom resource>
apiVersion: <apiVersion from custom resource>
uid: <uid from custom resource>
controller: <???>
Run Code Online (Sandbox Code Playgroud)
我这是否是情况下我会成立不清楚controller来true。
Kubernetes参考文档说(全部):
如果为true,则此引用指向管理控制器。
考虑到一个控制器运行的代码,而实际上业主参考通过匹配引用另一个Kubernetes资源uid,name,kind和apiVersion领域,这种说法是荒谬的:一个Kubernetes对象引用不能“点”的代码。
我Deployment有种感觉,文档作者试图以我的示例表示,因为用户没有直接创建自己,所以应该用某种标记来标记该标记,以指示由控制器创建了该标记。
那是对的吗?
当然,下面的问题是:好的,如果controller设置为false此处,行为会发生什么变化,但其他ownerReference字段的设置如上?
ownerReferences 有两个目的:
controller场对GC没有影响。controller字段可防止争夺要采用的资源。考虑一个副本集。通常,副本集控制器创建 pod。但是,如果有一个与标签选择器匹配的 pod,它将被副本集采用。为了防止两个副本集争夺同一个 Pod,后者通过设置为controller来获得一个唯一的控制器true。如果一个资源已经有一个控制器,它就不会被另一个控制器采用。详细信息在设计方案中。TLDR:该字段controller仅用于采用而不是 GC。
| 归档时间: |
|
| 查看次数: |
2717 次 |
| 最近记录: |