最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

什么是CRD

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

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

值得一提的是,另一種擴(kuò)展k8s的方式是apiservice,通過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中使用的資源簡稱
  • APIGROUP:API所使用的組名稱
  • NAMESPACED:是否具有namespace屬性
  • KIND:資源文件需要,用以識別資源

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

CRD使用

在k8s中CRD本身也是資源,大于1.7.0版本的集群可以使用apiextensions.k8s.io/v1beta1API訪問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
      # 開啟/關(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
    # 往往是首字母大寫的單數(shù)名稱,資源文件中需要用到
    kind: CronTab
    # cli中的簡稱
    shortNames:
    - ct
  # 阻止無法識別的字段,集群版本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)建完成??梢酝ㄟ^URL:https://169.254.128.15:60002/apis/staight.k8s.io/v1/namespaces/default/crontabs訪問到crontab資源。

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

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

# 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

接著即可看到該對象:

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

小結(jié)

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

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

總結(jié)

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

相關(guān)文章

  • k8s之ingress-nginx詳解和部署方案

    k8s之ingress-nginx詳解和部署方案

    Ingress是一種向k8s集群外部的客戶端公開服務(wù)的方法,下面這篇文章主要給大家介紹了關(guān)于k8s之ingress-nginx詳解和部署方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 新版k8s拉取鏡像失敗問題解決辦法

    新版k8s拉取鏡像失敗問題解決辦法

    隨著Kubernetes?1.23版本的發(fā)布,Docker作為默認(rèn)容器運(yùn)行時(shí)被棄用,轉(zhuǎn)而默認(rèn)采用Containerd,這一改變意味著用戶在使用Kubernetes時(shí),將不再通過Docker來拉取鏡像,文中jiang,需要的朋友可以參考下
    2024-10-10
  • 某集團(tuán)任意文件下載到虛擬主機(jī)getshell的方法

    某集團(tuán)任意文件下載到虛擬主機(jī)getshell的方法

    這篇文章主要介紹了某集團(tuán)任意文件下載到虛擬主機(jī)getshell的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • 詳解K8S apiVersion對照表

    詳解K8S apiVersion對照表

    k8s更新迭代比較快,apiVersion也在不斷變化中,每個(gè)版本的對應(yīng)的apiVersion略有不同,這篇文章主要介紹了K8S apiVersion對照表,需要的朋友可以參考下
    2022-07-07
  • 再分享6個(gè)可無限激活阿里云盤邀請碼,不信你不能激活阿里云盤

    再分享6個(gè)可無限激活阿里云盤邀請碼,不信你不能激活阿里云盤

    這篇文章主要分享6個(gè)可無限激活的阿里云盤邀請碼,不信你不能激活阿里云盤,需要的朋友可以參考下
    2020-11-11
  • Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運(yùn)行流程

    Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運(yùn)行流程

    這篇文章主要為大家介紹了Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運(yùn)行流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • k8s如何使用NFS作為StorageClass提供動態(tài)存儲

    k8s如何使用NFS作為StorageClass提供動態(tài)存儲

    本文主要介紹了k8s中的StorageClass,包括其定義、引入的原因、實(shí)現(xiàn)方式、定義方法以及回收策略對數(shù)據(jù)的影響等,首先,StorageClass是在K8s集群中創(chuàng)建用于動態(tài)PV的管理,可以鏈接至不同的后端存儲,對存儲的請求可以指向StorageClass
    2024-09-09
  • Kubernetes(K8S)徹底卸載詳細(xì)教程

    Kubernetes(K8S)徹底卸載詳細(xì)教程

    網(wǎng)絡(luò)上有很多的K8S安裝安裝教程,但是唯獨(dú)很少有卸載教程,有也講得不清不楚,下面這篇文章主要給大家介紹了關(guān)于Kubernetes(K8S)徹底卸載的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • kubernetes日志備份解決ELK中日志丟失問題

    kubernetes日志備份解決ELK中日志丟失問題

    這篇文章主要為大家介紹了kubernetes日志備份方案的細(xì)節(jié)探究分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • K8S節(jié)點(diǎn)本地存儲被撐爆問題徹底解決方法

    K8S節(jié)點(diǎn)本地存儲被撐爆問題徹底解決方法

    這篇文章主要為大家介紹了K8S節(jié)點(diǎn)本地存儲被撐爆問題徹底解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評論

鹤峰县| 新宾| 阳春市| 泗阳县| 左云县| 遵化市| 休宁县| 洪泽县| 云林县| 铜梁县| 嵊州市| 托克托县| 昌图县| 榆中县| 宁明县| 嵊州市| 宣恩县| 蒲江县| 新蔡县| 新平| 桃江县| 乌拉特后旗| 岱山县| 尉犁县| 潜山县| 梁平县| 稻城县| 凉城县| 益阳市| 蓬莱市| 延安市| 邮箱| 福鼎市| 康平县| 河南省| 攀枝花市| 宣化县| 三门县| 大化| 公主岭市| 乌恰县|