如何 做网站跳转,微信小程序开发怎么做,大同建设网站,天津公司建站创建自定义资源定义 CustomResourceDefinition 当你创建新的 CustomResourceDefinition#xff08;CRD#xff09;时#xff0c;Kubernetes API 服务器会为你所 指定的每一个版本生成一个 RESTful 的 资源路径。CRD 可以是名字空间作用域的#xff0c;也可以是集群作用域的…创建自定义资源定义 CustomResourceDefinition 当你创建新的 CustomResourceDefinitionCRD时Kubernetes API 服务器会为你所 指定的每一个版本生成一个 RESTful 的 资源路径。CRD 可以是名字空间作用域的也可以是集群作用域的取决于 CRD 的 scope 字段设置。和其他现有的内置对象一样删除 一个名字空间时该名字空间下的所有定制对象也会被删除。CustomResourceDefinition 本身是不受名字空间限制的对所有名字空间可用。 总结: 自定义资源会有不同的作用域,当创建时会有不同的rest资源路径
集群命名空间
自定义资源 yaml详细格式
# apiextensions.k8s.io/v1 是 Kubernetes API 的一个组和版本它与自定义资源定义Custom Resource Definitions, CRDs相关。CRDs 允许用户在 Kubernetes 集群中定义和使用他们自己的资源类型这是 Kubernetes 扩展性的一个关键特性。
# apiextensions.k8s.io 是 API 组API group它标识了一组相关的 API 对象。v1 表示这个组内的 API 版本。在 Kubernetes 中API 版本控制非常重要它确保了向后兼容性或明确了不兼容的更改。
# 从 Kubernetes 的某个版本开始通常是较新版本比如 v1.16 之后apiextensions.k8s.io/v1beta1 被 apiextensions.k8s.io/v1 所取代后者成为稳定版本的 API。这意味着在创建或更新 CRDs 时应使用 v1 版本以确保与新版本 Kubernetes 的兼容性。
# 总之当你看到 apiextensions.k8s.io/v1这通常意味着你正在处理与 Kubernetes 自定义资源定义相关的API调用或配置。
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:# 名字必需与下面的 spec 字段匹配并且格式为 名称的复数形式.组名name: packages.transport.io
spec:group: transport.io# 可以是 Namespaced 或 Cluster,该API的生效范围可选项为Namespaced由Namespace限定和Cluster在集群范围全局生效不局限于任何Namespace默认值为Namespacedscope: Namespacednames: # kind 通常是单数形式的驼峰编码CamelCased形式。你的资源清单会使用这一形式kind: Package#CRD列表默认被设置为kindList格式listKind: PackageList# 名称的复数形式用于 URL/apis/组/版本/名称的复数形式要求全部小写plural: packages# 名称的单数形式作为命令行使用时和显示时的别名,要求全部小写singular: package# shortNames 允许你在命令行使用较短的字符串来匹配资源,要求全部小写shortNames:- pkg# CRD所属的资源组列表。例如Package属于 test-io组和test-network-io组用户通过查询test-network-io组和test-io组也可以查询到该CRD实例categories:- test-io- test-network-ioversions:# 固定格式 # - name: v1# served: true# storage: true# schema:# openAPIV3Schema:# description: Package Think of these as function-level images.# properties:- name: v1# 必填项 每个版本都可以通过 served 标志来独立启用或禁止served: true#必填项 其中一个且只有一个版本必需被标记为存储版本storage: trueschema:openAPIV3Schema:description: Package Think of these as function-level images.properties:# 属性名name: description: 描述type: string # 上面的属性必填项required:- name type: object yaml 创建资源
apiVersion: transport.io/v1
kind: Package
spec: name: 123这样报错了 error: error validating “b.yaml”: error validating data: [ValidationError(Package): unknown field “spec” in io.transport.v1.Package, ValidationError(Package): missing required field “name” in io.transport.v1.Package]; if you choose to ignore these errors, turn validation off with --validatefalse 这个意思是说 我的name属性 是必须的 但是没发现name属性 这个由于我没有声明spec属性这个貌似是k8s的自己的命名规范所以修改一下
apiVersion: transport.io/v1
kind: Package
name: 123这样还是报错了 error: error when retrieving current configuration of: Resource: “transport.io/v1, Resourcepackages”, GroupVersionKind: “transport.io/v1, KindPackage” Name: “”, Namespace: “default” from server for: “b.yaml”: resource name may not be empty 这个意思是说资源名是空的难道是metadata里面的名字是空的修改一下
apiVersion: transport.io/v1
kind: Package
metadata:name: test-package
name: 123创建成功 自此一个自定义资源就创建成功了