我的一个使用kubernetes管理容器的项目有一个名为test的东西。其中开发人员定义了连接性。
我试着在网上搜索,但没有找到任何可以清除这个。
有没有人能帮我理解test.yml中的这种类型和连接性?
kind: test
spec:
connectivity:
to:
from
kind: Test
是一个CustomResource (CR)。在应用了描述所有字段的CustomResourceDefinition (CRD)之后,可以在集群中使用CRs。
通过这样做,您可以使用新对象扩展Kubernetes。如果您想编写自己的操作符或控制器,这将非常有用。如果没有操作符/控制器,CR是不做任何事情。它只会保存一些你可以查找的信息(类似于ConfigMap),但它不会做任何事情。
下面是Kubernetes如何为内置对象(如部署)工作的解释:
- 您使用
kubectl apply -f some-deployment.yaml
- 您的调用将被发送到kube- apisserver
- kube- apisserver将在etcd 中保存信息(
- kube-controller-manager不断地与kube- apisserver通信,并要求他向他显示有关部署的所有信息。
- kube- apisserver从etcd检索信息并将其发送回kube-controller-manager
- kube-controller-manager看到有一个新的部署(您应用的部署),现在将继续创建pod(在此之前创建ReplicaSet)。
name
的部署,replicas
,image
使用,…)正如您所看到的,实际上创建pod的是kube-controller-manager。
如果kube-controller-manager不支持您期望从Kubernetes获得的所有功能,您可以使用operator SDK创建自己的控制器,称为operator。然后,你的操作符可以监视你将作为CustomResource创建的所有对象(比如Test
)。
要检查群集上应用的所有crd,请执行:
$ kubectl get crd
要获取可以应用到Kubernetes的所有对象的列表,执行以下命令:
$ kubectl api-resources
这就是我们所说的在kubernetes世界中创建CustomResourceDefinition
(CRD).
阅读文档:使用自定义资源以获得清晰度。