0

I am new to the custom controllers and trying to understand this. I have started referring the sample-controller but unable to find much difference or understand properly in between the example files

  1. https://github.com/kubernetes/sample-controller/blob/master/artifacts/examples/crd.yaml
  2. https://github.com/kubernetes/sample-controller/blob/master/artifacts/examples/crd-status-subresource.yaml

Both the files look similar to me except for the below part in crd-status-subresource.yaml.

subresources:
  status: {}

Can anyone help or give suggestions on this to proceed. ?

4

1 回答 1

1

只是为了在同一页面上,这里是 Kubernetes 中控制器的快速摘要:

它监视某个状态——通常是可以使用 CustomResourceDefinitions (CRDs) 定义的 CustomResources (CRs)——并根据您在代码中定义的规则执行操作。

我已经开始参考示例控制器,但无法在示例文件之间找到太多差异或正确理解

您所指的文件与您已经指出的文件没有任何区别,因此确实没有什么可寻找的了。

如果您仔细查看原生 Kubernetes 对象,例如 Pod ( kubectl get pod <some-pod> -o yaml),您会发现它有一个.status字段,用于存储附加信息。通过启用status子资源,您告诉 Kubernetes 创建一个 CR,然后您可以在其中继续并.status通过访问新的 REST API 路径来编辑该附加字段:/apis/<group>/<version-name>/namespaces/*/<kind>/status. 如果你不需要它,那就不要定义它,就是这样。

至于为什么要添加status子资源取决于 CR 的用例。有时您只是想要一个更详细的字段来存储信息以供用户查看,有时您会告诉控制器从那里获取数据,因为它代表了对象的当前状态。只需查看 Pods.status字段,您就会在其中看到一些不错的附加数据,例如 Pod 是否为Ready、有关容器的信息等等。

话虽如此,status不是唯一的子资源。您可能还想查看scale子资源(取决于用例)。有关子资源的更多信息,您可以参考:https ://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#subresources

于 2021-05-22T12:52:53.383 回答