gpt4 book ai didi

kubernetes - 我到底什么时候将 ownerReference 的 Controller 字段设置为 true?

转载 作者:行者123 更新时间:2023-12-02 11:27:27 42 4
gpt4 key购买 nike

我正在编写一个 Kubernetes Controller 。

有人通过 kubectl apply -f custom-resource.yaml 创建自定义资源.我的 Controller 注意到创建,然后创建一个 Deployment以某种方式与自定义资源有关。

我正在寻找设置 Deployment 的正确方法的 ownerReferences字段,以便删除自定义资源将导致删除 Deployment .我知道我可以这样做:

ownerReferences:
- kind: <kind from custom resource>
apiVersion: <apiVersion from custom resource>
uid: <uid from custom resource>
controller: <???>

我不清楚这是否是我要设置的情况 controllertrue .

Kubernetes 引用文档说(全文):

If true, this reference points to the managing controller.



鉴于 Controller 正在运行代码,并且所有者引用实际上通过匹配 uid 引用了另一个 Kubernetes 资源。 , name , kindapiVersion字段,这句话是荒谬的:Kubernetes 对象引用不能“指向”代码。

我有一种感觉,文档作者试图表明——使用我的例子——因为用户没有直接创建 Deployment自己,它应该用某种标志来标记,表明它是由 Controller 创建的。

那是对的吗?

这里的后续问题当然是:好的,如果 controller 会改变什么行为设置为 false在这里,但另一个 ownerReference字段设置如上?

最佳答案

ownerReferences有两个目的:

  • 垃圾收集 : 引用ymmt2005的回答.基本上所有所有者都会考虑 GC。与accepted answer相反controller字段对 GC 没有影响。
  • 收养 : controller field 防止争夺要采用的资源。考虑一个副本集。通常,副本集 Controller 创建 pod。但是,如果有一个与标签选择器匹配的 pod,它将被副本集采用。为了防止两个副本集争夺同一个 Pod,后者通过设置 controller 被赋予一个唯一的 Controller 。至 true .如果一个资源已经有一个 Controller ,它就不会被另一个 Controller 采用。详情在design proposal .

  • TLDR : 领域 controller仅用于采用而不是 GC。

    关于kubernetes - 我到底什么时候将 ownerReference 的 Controller 字段设置为 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068026/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com