如何在 Kubernetes 中創(chuàng)建客戶資源定義

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ù)”

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容