码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • K8S创建CRD yaml示例


    创建 CustomResourceDefinition

    当你创建新的 CustomResourceDefinition(CRD)时,Kubernetes API 服务器会为你所指定的每个版本生成一个新的 RESTful 资源路径。 基于 CRD 对象所创建的自定义资源可以是名字空间作用域的,也可以是集群作用域的, 取决于 CRD 对象 spec.scope 字段的设置。

    与其它的内置对象一样,删除名字空间也将删除该名字空间中的所有自定义对象。 CustomResourceDefinitions 本身是无名字空间的,可在所有名字空间中访问。

    例如,如果你将下面的 CustomResourceDefinition 保存到 resourcedefinition.yaml 文件:

    1. apiVersion: apiextensions.k8s.io/v1
    2. kind: CustomResourceDefinition
    3. metadata:
    4. # 名字必需与下面的 spec 字段匹配,并且格式为 '<名称的复数形式>.<组名>'
    5. name: crontabs.stable.example.com
    6. spec:
    7. # 组名称,用于 REST API: /apis/<组>/<版本>
    8. group: stable.example.com
    9. # 列举此 CustomResourceDefinition 所支持的版本
    10. versions:
    11. - name: v1
    12. # 每个版本都可以通过 served 标志来独立启用或禁止
    13. served: true
    14. # 其中一个且只有一个版本必需被标记为存储版本
    15. storage: true
    16. schema:
    17. openAPIV3Schema:
    18. type: object
    19. properties:
    20. spec:
    21. type: object
    22. properties:
    23. cronSpec:
    24. type: string
    25. image:
    26. type: string
    27. replicas:
    28. type: integer
    29. # 可以是 Namespaced 或 Cluster
    30. scope: Namespaced
    31. names:
    32. # 名称的复数形式,用于 URL:/apis/<组>/<版本>/<名称的复数形式>
    33. plural: crontabs
    34. # 名称的单数形式,作为命令行使用时和显示时的别名
    35. singular: crontab
    36. # kind 通常是单数形式的帕斯卡编码(PascalCased)形式。你的资源清单会使用这一形式。
    37. kind: CronTab
    38. # shortNames 允许你在命令行使用较短的字符串来匹配资源
    39. shortNames:
    40. - ct

    之后创建它:

    kubectl apply -f resourcedefinition.yaml
    

    这样一个新的受名字空间约束的 RESTful API 端点会被创建在:

    /apis/stable.example.com/v1/namespaces/*/crontabs/...
    

    此端点 URL 自此可以用来创建和管理定制对象。对象的 kind 将是来自你上面创建时 所用的 spec 中指定的 CronTab。

    创建端点的操作可能需要几秒钟。你可以监测你的 CustomResourceDefinition 的 Established 状况变为 true,或者监测 API 服务器的发现信息等待你的资源出现在 那里。

    创建定制对象

    在创建了 CustomResourceDefinition 对象之后,你可以创建定制对象(Custom Objects)。定制对象可以包含定制字段。这些字段可以包含任意的 JSON 数据。 在下面的例子中,在类别为 CronTab 的定制对象中,设置了cronSpec 和 image 定制字段。类别 CronTab 来自你在上面所创建的 CRD 的规约。

    如果你将下面的 YAML 保存到 my-crontab.yaml:

    1. apiVersion: "stable.example.com/v1"
    2. kind: CronTab
    3. metadata:
    4. name: my-new-cron-object
    5. spec:
    6. cronSpec: "* * * * */5"
    7. image: my-awesome-cron-image

    并执行创建命令:

    kubectl apply -f my-crontab.yaml
    

    你就可以使用 kubectl 来管理你的 CronTab 对象了。例如:

    kubectl get crontab
    

    应该会输出如下列表:

    1. NAME AGE
    2. my-new-cron-object 6s

    使用 kubectl 时,资源名称是大小写不敏感的,而且你既可以使用 CRD 中所定义的单数 形式或复数形式,也可以使用其短名称:

    kubectl get ct -o yaml
    

    你可以看到输出中包含了你创建定制对象时在 YAML 文件中指定的定制字段 cronSpec 和 image:

    1. apiVersion: v1
    2. items:
    3. - apiVersion: stable.example.com/v1
    4. kind: CronTab
    5. metadata:
    6. annotations:
    7. kubectl.kubernetes.io/last-applied-configuration: |
    8. {"apiVersion":"stable.example.com/v1","kind":"CronTab","metadata":{"annotations":{},"name":"my-new-cron-object","namespace":"default"},"spec":{"cronSpec":"* * * * */5","image":"my-awesome-cron-image"}}
    9. creationTimestamp: "2021-06-20T07:35:27Z"
    10. generation: 1
    11. name: my-new-cron-object
    12. namespace: default
    13. resourceVersion: "1326"
    14. uid: 9aab1d66-628e-41bb-a422-57b8b3b1f5a9
    15. spec:
    16. cronSpec: '* * * * */5'
    17. image: my-awesome-cron-image
    18. kind: List
    19. metadata:
    20. resourceVersion: ""
    21. selfLink: ""

    删除 CustomResourceDefinition

    当你删除某 CustomResourceDefinition 时,服务器会卸载其 RESTful API 端点,并删除服务器上存储的所有定制对象。

    1. kubectl delete -f resourcedefinition.yaml
    2. kubectl get crontabs
    1. Error from server (NotFound): Unable to list {"stable.example.com" "v1" "crontabs"}: the server could not
    2. find the requested resource (get crontabs.stable.example.com)

    如果你在以后创建相同的 CustomResourceDefinition 时,该 CRD 会是一个空的结构。


    参考链接:使用 CustomResourceDefinition 扩展 Kubernetes API | Kubernetes本页展示如何使用 CustomResourceDefinition 将 定制资源(Custom Resource) 安装到 Kubernetes API 上。准备开始 你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:Killercoda 玩转 Kubernetes 您的 Kubernetes 服务器版本必须不低于版本 1.16. 要获知版本信息,请输入 kubectl version. 如果你在使用较老的、仍处于被支持范围的 Kubernetes 版本,请切换到该版本的 文档查看对于的集群而言有用的建议。创建 CustomResourceDefinition 当你创建新的 CustomResourceDefinition(CRD)时,Kubernetes API 服务器会为你所指定的每个版本生成一个新的 RESTful 资源路径。 基于 CRD 对象所创建的自定义资源可以是名字空间作用域的,也可以是集群作用域的, 取决于 CRD 对象 spec.scope 字段的设置。与其它的内置对象一样,删除名字空间也将删除该名字空间中的所有自定义对象。 CustomResourceDefinitions 本身是无名字空间的,可在所有名字空间中访问。例如,如果你将下面的 CustomResourceDefinition 保存到 resourcedefinition.yaml 文件:apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: # 名字必需与下面的 spec 字段匹配,并且格式为 '<名称的复数形式>.https://kubernetes.io/zh-cn/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/

  • 相关阅读:
    第一个select选择不同选项,给第二个select赋不同值
    【Luogu】 P4619 [SDOI2018] 旧试题
    ubuntu系统(11):ubuntu20.04命令行安装vscode
    第十六章总结:反射和注解
    C++ 程序员入门之路——旅程的起点与挑战
    力扣 23. 合并K个升序链表 顺序合并
    阶乘(Python)
    PerparedStatement防止SQL注入
    AERMOD模型在大气环境影响评价中的实践
    (Tekla Structures二次开发)获取当前模型文件夹路径
  • 原文地址:https://blog.csdn.net/a772304419/article/details/126364478
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号