Kubernetes是一個(gè)流行的開(kāi)源平臺(tái),用于自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用程序。它提供了一個(gè)強(qiáng)大的API來(lái)管理資源,但有時(shí)其內(nèi)置資源不足以滿足需求。這就是Kubernetes自定義資源定義(CRD)的用武之地。CRD允許定義自己的自定義資源,可以像Pod和Service等內(nèi)置資源一樣進(jìn)行管理。 這篇文章中,我們將逐步介紹一下實(shí)現(xiàn)Kubernetes CRD的步驟。需要準(zhǔn)備以下條件:
- 安裝并配置了kubectl的Kubernetes集群。
- 運(yùn)行了啟用了RBAC(基于角色的訪問(wèn)控制)的Kubernetes API服務(wù)器。
- 基本了解Kubernetes資源清單和YAML。
步驟1:定義CRD
首先,我們將定義描述我們CRD的YAML文件。該文件指定了自定義資源的名稱、版本和模式。例如,讓我們?yōu)橐粋€(gè)名為"myapp"的虛構(gòu)應(yīng)用程序創(chuàng)建一個(gè)版本為"v1beta1"的CRD:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: myapps.example.com
spec:
group: example.com
versions:
- name: v1beta1
served: true
storage: true
scope: Namespaced
names:
plural: myapps
singular: myapp
kind: Myapp
<p align=center>YAML創(chuàng)建CRD定義</p>
在這個(gè)YAML文件中:
apiVersion:用于此對(duì)象的Kubernetes API的版本。
kind:對(duì)象的類型(在這種情況下,是CustomResourceDefinition)。
metadata:對(duì)象的元數(shù)據(jù),包括其名稱。
spec:CRD的規(guī)范。
group:自定義資源的API組。
versions:自定義資源支持的版本列表。
name:版本的名稱。
served:版本是否由API服務(wù)器提供。
storage:版本是否應(yīng)該持久化。
scope:自定義資源的范圍(集群級(jí)別或命名空間級(jí)別)。
names:用于引用自定義資源的名稱。
plural:資源的復(fù)數(shù)名稱。
singular:資源的單數(shù)名稱。
kind:資源的類型。
shortNames:資源的簡(jiǎn)稱列表。
將此YAML文件保存為myapp-crd.yaml。
步驟2:創(chuàng)建CRD
接下來(lái),我們將使用kubectl在Kubernetes集群中創(chuàng)建CRD:
$ kubectl create -f myapp-crd.yaml
這將在Kubernetes集群中創(chuàng)建名為myapps.example.com的CRD。
步驟3:定義自定義資源
現(xiàn)在我們已經(jīng)定義了CRD,我們可以定義將使用此CRD的自定義資源。在這個(gè)例子中,我們將創(chuàng)建一個(gè)YAML文件來(lái)定義myapp的自定義資源:
piVersion: example.com/v1beta1
kind: Myapp
metadata:
name: myapp-sample
spec:
replicas: 3
image: nginx:latest
在這個(gè)YAML文件中,我們定義了以下內(nèi)容:
apiVersion:自定義資源的API組和版本。在這里,它是example.com/v1beta1。
kind:自定義資源的類型。在這里,它是Myapp。
metadata:與自定義資源相關(guān)的元數(shù)據(jù)。在這里,我們將名稱設(shè)置為myapp-sample。
spec:自定義資源的規(guī)范。在這里,我們指定了副本數(shù)量和要使用的鏡像。
將此YAML文件保存為myapp-sample.yaml。
步驟4:創(chuàng)建自定義資源
接下來(lái),我們將使用kubectl在Kubernetes集群中創(chuàng)建自定義資源:
$ kubectl create -f myapp-sample.yaml
這將在Kubernetes集群中創(chuàng)建名為myapp-sample的自定義資源。
步驟5:查看自定義資源
要查看剛剛創(chuàng)建的自定義資源,請(qǐng)運(yùn)行以下命令:
kubectl get crd
執(zhí)行后會(huì)看到在集群中創(chuàng)建的CRD列表,并驗(yàn)證創(chuàng)建的資源是否存在。Kubernetes自定義資源定義(CRD)是一個(gè)強(qiáng)大的功能,允許使用自定義資源擴(kuò)展Kubernetes。通過(guò)CRD,可以創(chuàng)建自己的Kubernetes API資源,這些資源可以像任何其他本機(jī)Kubernetes資源一樣使用。通過(guò)這些簡(jiǎn)單的步驟,可以輕松地在集群中創(chuàng)建CRD。
作者:Aditya Bhuyan
更多技術(shù)干貨盡在wx“云原生數(shù)據(jù)庫(kù)”