什么是CRD
CRD的全稱為CustomResourceDefinitions,即自定義資源。k8s擁有一些內(nèi)置的資源,比如說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命令查看集群中已定義的資源:從如上輸出中可以略窺一二,CRD至少包括如下屬性:[]NAME SHORTNAMES APIGROUP NAMESPACED KINDconfigmaps cm true ConfigMapendpoints ep true Endpointsevents ev true Eventnamespaces ns false Namespacepersistentvolumes pv false PersistentVolumepods po true Podpodtemplates true PodTemplatestorageclasses sc storage.k8s.io false StorageClass...
- NAME:CRD的復數(shù)名稱
- SHORTNAMES:cli中使用的資源簡稱
- APIGROUP:API所使用的組名稱
- NAMESPACED:是否具有namespace屬性
- KIND:資源文件需要,用以識別資源
kube-controller-manager組件提供了多種內(nèi)置控制器,比如說:cronjob,daemonset,deployment,namespace等等,它們監(jiān)聽資源的創(chuàng)建/更新/刪除,且做出相應的動作。而對于CRD來說,也可以編寫相應的控制器來完成對應的功能。CRD使用
在k8s中CRD本身也是資源,大于1.7.0版本的集群可以使用apiextensions.k8s.io/v1beta1API訪問CRD,大于1.16.0版本則可以使用apiextensions.k8s.io/v1API。創(chuàng)建CRD
CRD資源文件示例:
# crd-test.ymlapiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:# 名稱必須符合如下格式:. name: crontabs.staight.k8s.iospec:# 組名,表示使用該API: /apis// group: staight.k8s.io# version列表,表示該CRD支持的版本versions:- name: v1# 開啟/關閉該APIserved: true# 有且只能有一個版本要將storage設置為truestorage: true# Namespaced/Cluster,表示該CRD是命令空間屬性還是集群屬性scope: Namespacednames:# API中使用的名稱:/apis// / plural: crontabs# 單數(shù)名稱,cli中使用singular: crontab# 往往是首字母大寫的單數(shù)名稱,資源文件中需要用到kind: CronTab# cli中的簡稱shortNames:- ct# 阻止無法識別的字段,集群版本1.15以上才可使用preserveUnknownFields: false# 創(chuàng)建資源文件時需驗證的字段validation:openAPIV3Schema:type: objectproperties:spec:type: objectproperties:cronSpec:type: stringimage:type: stringreplicas:type: integer
然后創(chuàng)建該CRD:
[root@node k8s]# kubectl create -f crd-test.ymlcustomresourcedefinition.apiextensions.k8s.io/crontabs.staight.k8s.io created
接著就能查到該CRD:
[root@node k8s]# kubectl get crd crontabs.staight.k8s.ioNAME CREATED ATcrontabs.staight.k8s.io 2019-10-08T1009Z
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.ymlapiVersion: "staight.k8s.io/v1"kind: CronTabmetadata:name: new-crontabspec:cronSpec: "* * * * *"image: new-image
注意spec中的字段應符合CRD的要求,創(chuàng)建它:
[]crontab.staight.k8s.io/new-crontab created
接著即可看到該對象:
[]NAME AGEnew-crontab 28s
小結
-
CRD用來自定義資源,是擴展k8s最常用的方式。
-
只創(chuàng)建CRD并沒有實際意義,想要CRD工作還需創(chuàng)建控制器,監(jiān)聽資源變動并做出相應動作。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
資源
+關注
關注
0文章
59瀏覽量
18402 -
CRD
+關注
關注
0文章
14瀏覽量
4241 -
kubernetes
+關注
關注
0文章
263瀏覽量
9492
原文標題:如何用 Kubernetes 自定義資源?一文聊聊 CRD
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
熱點推薦
中斷的概念及51單片機的中斷系統(tǒng)
中斷的概念及51單片機的中斷系統(tǒng)13-1. 演示范例——聲控小車13-2. 中斷的概念13-3. P89V51RD2單片中斷系統(tǒng)的構成
發(fā)表于 03-29 10:27
USB基本概念及從機編程方法介紹
慕課蘇州大學.嵌入式開發(fā)及應用.第四章.較復雜通信模塊.USB基本概念及從機編程方法0 目錄4 較復雜通信模塊4.4 USB基本概念及從機編程方法4.4.1 課堂重點4.4.2 測試與作業(yè)5 下一
發(fā)表于 11-08 09:14
嵌入式系統(tǒng)的概念及特點
文章目錄嵌入式系統(tǒng)概要嵌入式系統(tǒng)的概念及特點嵌入式系統(tǒng)硬件嵌入式系統(tǒng)軟件嵌入式系統(tǒng)的編程模式微控制器的程序開發(fā)方式嵌入式系統(tǒng)概要嵌入式系統(tǒng)的概念及特點1. 概念國外的定義:用于控制、監(jiān)視或者輔助操作
發(fā)表于 12-22 06:36
嵌入式系統(tǒng)的概念及特點
嵌入式系統(tǒng)概要嵌入式系統(tǒng)概要1.嵌入式系統(tǒng)的概念及特點2.嵌入式硬件3.嵌入式系統(tǒng)軟件4.嵌入式系統(tǒng)編程模式5.微控制器的程序開發(fā)方式嵌入式系統(tǒng)概要1.嵌入式系統(tǒng)的概念及特點2.嵌入式硬件3.嵌入式系統(tǒng)軟件4.嵌入式系統(tǒng)編程模式5.微控制器的程序開發(fā)方式...
發(fā)表于 12-22 07:21
相位噪聲和抖動的概念及其估算方法
相位噪聲和抖動的概念及其估算方法
時鐘頻率的不斷提高使相位噪聲和抖動在系統(tǒng)時序上占據(jù)日益重要的位置。本文介其概念及其對系統(tǒng)性能的影
發(fā)表于 12-27 13:30
?3233次閱讀
地和接地的概念及區(qū)別
地和接地的概念及區(qū)別
1.地?。?)電氣地 大地是一個電阻非常低、電容量非常大的物體,擁有吸收無限電荷的
發(fā)表于 12-31 11:09
?4157次閱讀
CRD的概念及使用
評論