亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 什么是CRD
  • CRD使用
  • 小結
  • 總結

什么是CRD

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

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

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

可以使用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的復數名稱
  • SHORTNAMES:cli中使用的資源簡稱
  • APIGROUP:API所使用的組名稱
  • NAMESPACED:是否具有namespace屬性
  • KIND:資源文件需要,用以識別資源

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

CRD使用

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

創建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
      # 開啟/關閉該API
      served: true
      # 有且只能有一個版本要將storage設置為true
      storage: true
  # Namespaced/Cluster,表示該CRD是命令空間屬性還是集群屬性
  scope: Namespaced
  names:
    # API中使用的名稱:/apis/<group>/<version>/<plural>
    plural: crontabs
    # 單數名稱,cli中使用
    singular: crontab
    # 往往是首字母大寫的單數名稱,資源文件中需要用到
    kind: CronTab
    # cli中的簡稱
    shortNames:
    - ct
  # 阻止無法識別的字段,集群版本1.15以上才可使用
  preserveUnknownFields: false
  # 創建資源文件時需驗證的字段
  validation:
    openAPIV3Schema:
      type: object
      properties:
        spec:
          type: object
          properties:
            cronSpec:
              type: string
            image:
              type: string
            replicas:
              type: integer

然后創建該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創建完成。可以通過URL:https://169.254.128.15:60002/apis/staight.k8s.io/v1/namespaces/default/crontabs訪問到crontab資源。

創建自定義對象

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

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

注意spec中的字段應符合CRD的要求,創建它:

[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

小結

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

只創建CRD并沒有實際意義,想要CRD工作還需創建控制器,監聽資源變動并做出相應動作。

總結

分享到:
標簽:如何使用 服務器 自定義 詳解 資源
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定