k8s对象
定义
Kubernetes 对象是持久化的实体。 Kubernetes 使用这些实体去表示整个集群的状态。
Kubernetes 对象是一种“意向表达(Record of Intent)”。
属性
每个 Kubernetes 对象包含两个嵌套的对象字段:对象 spec(规约) 和对象 status(状态)。
对于具有 spec 的对象,你必须在创建对象时设置其内容,描述你希望对象所具有的特征: 期望状态(Desired State)。
status 描述了对象的当前状态(Current State),它是由 Kubernetes 系统和组件设置并更新的。在任何时刻,Kubernetes 控制平面 都一直在积极地管理着对象的实际状态,以使之达成期望状态。
对象描述文件
必需字段:
apiVersion - 创建该对象所使用的 Kubernetes API 的版本
kind - 想要创建的对象的类别
metadata - 帮助唯一标识对象的一些数据,包括一个 name 字符串、UID 和可选的 namespace
spec - 你所期望的该对象的状态
apiVersion 和 kind 共同决定了当前的 YAML 配置文件应该由谁来进行处理,前者表示描述文件使用的 API 组,后者表示一个 API 组中的一个资源类型。
metadata 能够为我们提供一些用于唯一识别对象的数据,包括在虚拟集群 namespace 中唯一的 name 字段,用于组织和分类的 labels 以及用于扩展功能的注解 annotations。
metadata
该部分主要包括了用来识别资源的标签:Labels, 用来描述资源的注解;Annotations, 用来描述多个资源之间相互关系的 OwnerReference。
label:主要用来筛选资源和组合资源,可以使用类似于 SQL 查询 select,来根据 Label 查询相关的资源。
kubectl get pods --show-labels -l env=test,env=dev
label Selector 是通过 -l 这个选项来进行指定的
kubectl get pods--show-labels -l ’env in (dev,test)’
Selector:集合型和相等型的 Selector,也可以用“,”来连接,同样的标识逻辑”与“的关系。
annotations:一般是系统或者工具用来存储资源的非标示性信息,可以用来扩展资源的 spec/status 的描述,这些信息通常用于描述、标记或分类对象,但不直接用于对对象进行唯一标识或访问控制,这些信息可以为运维管理、监控、审计、自动化流程或自定义工具提供额外的上下文或指导。
ownerReference:集合类资源的控制器会创建对应的归属资源,使得用户可以方便地查找一个创建资源的对象,另外,还可以用来实现级联删除的效果。

浙公网安备 33010602011771号