日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

K8S的 Custom Resource Definition(CRD)之初体验

發布時間:2025/1/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K8S的 Custom Resource Definition(CRD)之初体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

K8S Custom Resource Definition(CRD)之初體驗

CRD(Custom Resource Definition) 是 kubernetes 強大擴展能力的一處體現,聯系到編程場景,CRD 相當于是類(class),custom resource 相當于是對象或者實例,通過 CRD 可以創建自己定義的資源類型,api server 會直接支持,可以通過 kubectl 命令創建對應的資源并對資源進行刪/查/改的操作,資源對象會被保存在 etcd 中,可以像操作 pod 那樣操作自己創建的 resouce。

這篇隨筆以發布博文場景為例體驗一下 kubernetes 的 CRD,對應的 custom resource 就是 BlogPost。

首先,編寫 BlogPost 的 CRD 清單文件 blogpost-crd.yaml,給 BlogPost 定義了3個屬性:title, pushishdate, body,從編程角度就是創建了一個 BlogPost 類

apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata:name: blogposts.kube.zxl.com spec:group: kube.zxl.comscope: Namespacednames:kind: BlogPostsingular: blogpostplural: blogpostslistKind: BlogPostListversions:- name: v1# Each version can be enabled/disabled by Served flag.served: true# One and only one version must be marked as the storage version.storage: trueschema:openAPIV3Schema:type: objectproperties:spec:type: objectproperties:title:type: stringurl:type: stringpublishdate:type: string body:type: string

編寫清單注意事項:

  • metadata.name 是 spec.names.plural + “.” + spec. group 的組合,如果寫 blogposts.kube.zxl.com,會包下面的錯誤 metadata.name: Invalid value: "blogpost.kube.zxl.com": must be spec.names.plural+"."+spec.group
  • scope 有2種,一種是 Cluster,一種是 Namespaced,比如 node 資源的 scope 是 Cluster,pod 資源的 scope 是 Namespaced,Cluster 資源的 url 路徑是 /clusters/{cluster}/{plural},Namespaced 資源的 url 路徑是 /clusters/{cluster}/namespaces/{namespace}/{plural}
  • 屬性不支持日期類型,只支持 “array”, “boolean”, “integer”, “number”, “object”, “string” 五種類型。

然后,基于清單文件創建 CRD

$ kubectl create -f blogpost-crd.yaml customresourcedefinition.apiextensions.k8s.io/blogposts.kube.zxl.com created

查看已創建的 CRD

kubectl get crd | grep blogposts blogposts.kube.zxl.com 2021-03-08T08:28:17Z

接下來基于創建好的 CRD 創建 BlogPost 資源,從編程角度就是 new 一個 BlogPost 對象,從需求角度就是發布一篇博文。

編寫清單文件 blogpost-1.yaml

apiVersion: kube.zxl.com/v1 kind: BlogPost metadata:name: blogpost-1 spec:title: "學亮編程手記title部分"url: "https://www.zxl.com"publishdate: "2021-03-02 16:28"body: "學亮編程手記body部分"

創建資源

$ kubectl create -f blogpost-1.yaml blogpost.kube.zxl.com/blogpost-1 created

創建成功之后就可以用 kubectl 命令操作 blogposts 資源

列出資源

$ kubectl get blogposts NAME AGE blogpost-1 94s

查看資源

kubectl describe blogposts blogpost-1

輸出如下

kubectl describe blogposts blogpost-1 Name: blogpost-1 Namespace: production Labels: <none> Annotations: <none> API Version: kube.zxl.com/v1 Kind: BlogPost Metadata:Creation Timestamp: 2021-03-08T09:09:51ZGeneration: 2Managed Fields:API Version: kube.zxl.com/v1Fields Type: FieldsV1fieldsV1:f:spec:.:f:body:f:publishdate:f:title:Manager: kubectl-createOperation: UpdateTime: 2021-03-08T09:09:51ZAPI Version: kube.zxl.com/v1Fields Type: FieldsV1fieldsV1:f:metadata:f:annotations:.:f:kubectl.kubernetes.io/last-applied-configuration:f:spec:f:url:Manager: kubectl-client-side-applyOperation: UpdateTime: 2021-03-08T09:16:31ZResource Version: 151288200UID: 75930e48-0c1a-4450-b9ef-e010201b154a Spec:Body: 學亮編程手記body部分Publishdate: 2021-03-02 16:28Title: 學亮編程手記title部分URL: https://www.zxl.com Events: <none>

體驗完畢。

總結

以上是生活随笔為你收集整理的K8S的 Custom Resource Definition(CRD)之初体验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。