码农知识堂 - 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/

  • 相关阅读:
    大数据项目之电商数仓、业务数据介绍、电商系统表结构
    vue3+el-tale封装(编辑、删除、查看详情按钮一起封装)
    【linux】软件管理
    每日一题 2520. 统计能整除数字的位数(简单)
    Vue路由&nodejs环境搭建
    通过命令设置Maven/JDK环境变量
    #新学期,新FLAG#:这些年,一直在路上
    无影云桌面 1块钱体验
    相机模型总结
    LeetCode 260. 只出现一次的数字 III 中等
  • 原文地址:https://blog.csdn.net/a772304419/article/details/126364478
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号