欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用Kubernetes自定義資源(CRD)詳解

 更新時(shí)間:2022年09月06日 15:34:14   作者:staight  
自定義資源定義(CRD)是Kubernetes API擴(kuò)展,可以定義新的對(duì)象類型,下面這篇文章主要給大家介紹了關(guān)于如何使用Kubernetes自定義資源(CRD)的相關(guān)資料,需要的朋友可以參考下

什么是CRD

CRD的全稱為 CustomResourceDefinitions,即自定義資源。k8s擁有一些內(nèi)置的資源,比如說(shuō)Pod,Deployment,ReplicaSet等等,而CRD則提供了一種方式,使用戶可以自定義新的資源,以擴(kuò)展k8s的功能。

使用CRD可以在不修改k8s源代碼的基礎(chǔ)上方便的擴(kuò)展k8s的功能,比如騰訊云TKE使用CRD:logcollectors.ccs.cloud.tencent.com以添加日志收集服務(wù),而Istio也大量使用到了CRD。

值得一提的是,另一種擴(kuò)展k8s的方式是apiservice,通過(guò)API:metrics.k8s.io自定義HPA是其最典型的應(yīng)用。

可以使用kubectl api-resources命令查看集群中已定義的資源:

[root@node k8s]# kubectl api-resources 
NAME                              SHORTNAMES   APIGROUP                       NAMESPACED   KIND
configmaps                        cm                                          true         ConfigMap
endpoints                         ep                                          true         Endpoints
events                            ev                                          true         Event
namespaces                        ns                                          false        Namespace
persistentvolumes                 pv                                          false        PersistentVolume
pods                              po                                          true         Pod
podtemplates                                                                  true         PodTemplate
storageclasses                    sc           storage.k8s.io                 false        StorageClass
...

從如上輸出中可以略窺一二,CRD至少包括如下屬性:

  • NAME:CRD的復(fù)數(shù)名稱
  • SHORTNAMES:cli中使用的資源簡(jiǎn)稱
  • APIGROUP:API所使用的組名稱
  • NAMESPACED:是否具有namespace屬性
  • KIND:資源文件需要,用以識(shí)別資源

另外,CRD提供了定義資源的方式,不過(guò)想要讓其具有實(shí)際意義還需控制器的配合。k8s的kube-controller-manager組件提供了多種內(nèi)置控制器,比如說(shuō):cronjob,daemonsetdeployment,namespace等等,它們監(jiān)聽(tīng)資源的創(chuàng)建/更新/刪除,且做出相應(yīng)的動(dòng)作。而對(duì)于CRD來(lái)說(shuō),也可以編寫(xiě)相應(yīng)的控制器來(lái)完成對(duì)應(yīng)的功能。

CRD使用

在k8s中CRD本身也是資源,大于1.7.0版本的集群可以使用apiextensions.k8s.io/v1beta1API訪問(wèn)CRD,大于1.16.0版本則可以使用apiextensions.k8s.io/v1API。

創(chuàng)建CRD

CRD資源文件示例:

 
# crd-test.yml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  # 名稱必須符合如下格式:<plural>.<group>
  name: crontabs.staight.k8s.io
spec:
  # 組名,表示使用該API: /apis/<group>/<version>
  group: staight.k8s.io
  # version列表,表示該CRD支持的版本
  versions:
    - name: v1
      # 開(kāi)啟/關(guān)閉該API
      served: true
      # 有且只能有一個(gè)版本要將storage設(shè)置為true
      storage: true
  # Namespaced/Cluster,表示該CRD是命令空間屬性還是集群屬性
  scope: Namespaced
  names:
    # API中使用的名稱:/apis/<group>/<version>/<plural>
    plural: crontabs
    # 單數(shù)名稱,cli中使用
    singular: crontab
    # 往往是首字母大寫(xiě)的單數(shù)名稱,資源文件中需要用到
    kind: CronTab
    # cli中的簡(jiǎn)稱
    shortNames:
    - ct
  # 阻止無(wú)法識(shí)別的字段,集群版本1.15以上才可使用
  preserveUnknownFields: false
  # 創(chuàng)建資源文件時(shí)需驗(yàn)證的字段
  validation:
    openAPIV3Schema:
      type: object
      properties:
        spec:
          type: object
          properties:
            cronSpec:
              type: string
            image:
              type: string
            replicas:
              type: integer

然后創(chuàng)建該CRD:

[root@node k8s]# kubectl create -f crd-test.yml 
customresourcedefinition.apiextensions.k8s.io/crontabs.staight.k8s.io created

接著就能查到該CRD:

[root@node k8s]# kubectl get crd crontabs.staight.k8s.io
NAME                      CREATED AT
crontabs.staight.k8s.io   2019-10-08T10:21:09Z

CRD創(chuàng)建完成??梢酝ㄟ^(guò)URL:https://169.254.128.15:60002/apis/staight.k8s.io/v1/namespaces/default/crontabs訪問(wèn)到crontab資源。

創(chuàng)建自定義對(duì)象

在創(chuàng)建CRD之后,即可創(chuàng)建其資源的對(duì)象了。資源文件示例:

# crontab.yml
apiVersion: "staight.k8s.io/v1"
kind: CronTab
metadata:
  name: new-crontab
spec:
  cronSpec: "* * * * *"
  image: new-image

注意spec中的字段應(yīng)符合CRD的要求,創(chuàng)建它:

[root@node k8s]# kubectl create -f crontab.yml 
crontab.staight.k8s.io/new-crontab created

接著即可看到該對(duì)象:

[root@node k8s]# kubectl get crontab
NAME          AGE
new-crontab   28s

小結(jié)

CRD用來(lái)自定義資源,是擴(kuò)展k8s最常用的方式。

只創(chuàng)建CRD并沒(méi)有實(shí)際意義,想要CRD工作還需創(chuàng)建控制器,監(jiān)聽(tīng)資源變動(dòng)并做出相應(yīng)動(dòng)作。

總結(jié)

到此這篇關(guān)于如何使用Kubernetes自定義資源(CRD)的文章就介紹到這了,更多相關(guān)Kubernetes自定義資源使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 2022最新青龍面板部署完整版圖文教程

    2022最新青龍面板部署完整版圖文教程

    這篇文章主要介紹了2022最新青龍面板部署完整版圖文教程,下面以騰訊云服務(wù)器為例,先選地區(qū)、然后選擇官方鏡像、系統(tǒng)鏡像、Centos7.6版本,需要的朋友可以參考下
    2022-05-05
  • 在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

    在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

    這篇文章主要介紹了在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • K8S刪除pod的4種方法小結(jié)

    K8S刪除pod的4種方法小結(jié)

    在Kubernetes集群環(huán)境中工作時(shí),有時(shí)會(huì)遇到需要從一個(gè)工作節(jié)點(diǎn)中刪除pod的情況,下面這篇文章主要給大家介紹了關(guān)于K8S刪除pod的4種方法,需要的朋友可以參考下
    2024-01-01
  • k8s整合istio配置gateway入口、配置集群內(nèi)部服務(wù)調(diào)用管理(最新推薦)

    k8s整合istio配置gateway入口、配置集群內(nèi)部服務(wù)調(diào)用管理(最新推薦)

    這篇文章主要介紹了k8s整合istio配置gateway入口、配置集群內(nèi)部服務(wù)調(diào)用管理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 如何給k8s集群里的資源打標(biāo)簽

    如何給k8s集群里的資源打標(biāo)簽

    k8s集群,節(jié)點(diǎn)如果有多個(gè)角色,需要標(biāo)記出來(lái),可以給對(duì)應(yīng)的節(jié)點(diǎn)打上標(biāo)簽,方便后續(xù)了解節(jié)點(diǎn)的功能,這篇文章主要介紹了如何給k8s集群里的資源打標(biāo)簽,需要的朋友可以參考下
    2023-02-02
  • 一篇文章搞懂K8S高級(jí)特性

    一篇文章搞懂K8S高級(jí)特性

    這篇文章主要給大家介紹了關(guān)于K8S高級(jí)特性的相關(guān)資料,文中通過(guò)時(shí)實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Linux安裝Kubernetes(k8s)超詳細(xì)教程

    Linux安裝Kubernetes(k8s)超詳細(xì)教程

    Kubernetes是一個(gè)輕便的和可擴(kuò)展的開(kāi)源平臺(tái),用于管理容器化應(yīng)用和服務(wù),通過(guò)Kubernetes能夠進(jìn)行應(yīng)用的自動(dòng)化部署和擴(kuò)縮容,這篇文章主要給大家介紹了關(guān)于Linux安裝Kubernetes(k8s)的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • Kubekey安裝Kubernetes-1.24.8的詳細(xì)過(guò)程

    Kubekey安裝Kubernetes-1.24.8的詳細(xì)過(guò)程

    這篇文章主要介紹了Kubekey安裝Kubernetes-1.24.8的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Kubernetes中使用臨時(shí)容器進(jìn)行故障排查的方法

    Kubernetes中使用臨時(shí)容器進(jìn)行故障排查的方法

    在使用Kubernetes時(shí),用戶常常會(huì)遇到一些錯(cuò)誤和迷惑,下面這篇文章主要給大家介紹了關(guān)于Kubernetes中使用臨時(shí)容器進(jìn)行故障排查的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Hadoop 2.x與3.x 22點(diǎn)比較,Hadoop 3.x比2.x的改進(jìn)

    Hadoop 2.x與3.x 22點(diǎn)比較,Hadoop 3.x比2.x的改進(jìn)

    本文介紹了Hadoop3版本中添加的新功能,Hadoop 2和Hadoop 3的區(qū)別,在這篇文章中,我們將討論Hadoop 2.x與Hadoop 3.x之間的比較。感興趣的朋友跟隨小編一起看一下
    2018-09-09

最新評(píng)論