《 Kubernetes进阶实战》一3.2.2metadata嵌套字段
3.2.2 metadata嵌套字段
metadata字段用于描述对象的属性信息,其内嵌多个字段用于定义资源的元数据,例如name和labels等,这些字段大体可分为必要字段和可选字段两大类。名称空间级别的资源的必选字段包括如下三项。
■ namespace:指定当前对象隶属的名称空间,默认值为default。
■ name:设定当前对象的名称,在其所属的名称空间的同一类型中必须唯一。
■ uid:当前对象的唯一标识符,其唯一性仅发生在特定的时间段和名称空间中;此标识符主要是用于区别拥有同样名字的“已删除”和“重新创建”的同一个名称的对象。
可选字段通常是指由Kubernetes系统自行维护和设置,或者存在默认,或者本身允许使用空值等类型的字段,常用的有如下几个:
■ labels:设定用于标识当前对象的标签,键值数据,常被用作挑选条件。
■ annotations:非标识型键值数据,用来作为挑选条件,用于labels的补充。
■ resourceVersion:当前对象的内部版本标识符,用于让客户端确定对象变动与否。
■ generation:用于标识当前对象目标状态的代别。
■ creationTimestamp:当前对象创建日期的时间戳。
■ deletionTimestamp:当前对象删除日期的时间戳。
此外,用户通过配置清单创建资源时,通常仅需要给出必选字段,可选字段可按需指定,对于用户未明确定义的嵌套字段,则需要由一系列的f?inalizer组件自动予以填充。而用户需要对资源创建的目标资源对象进行强制校验,或者在修改时需要用到initializer组件完成,例如,为每个待创建的Pod对象添加一个Sidecar容器等。不同的资源类型也会存在一些专有的嵌套字段,例如,Conf?igMap资源还支持使用clusterName等。
3.2.3 spec和status字段
Kubernetes用spec来描述所期望的对象应该具有的状态,而用status字段来记录对象在系统上的当前状态,因此status字段仅对活动对象才有意义。这两个字段都属于嵌套类型的字段。在定义资源配置清单时,spec是必须定义的字段,用于描述对象的目标状态,即用户期望对象需要表现出来的特征。status字段则记录了对象的当前状态(或实际状态),此字段值由Kubernetes系统负责填充或更新,用户不能手动进行定义。Master的controller-manager通过相应的控制器组件动态管理并确保对象的实际状态匹配用户所期望的状态,它是一种调和(reconciliation)配置系统。
例如,Deployment是一种用于描述集群中运行的应用的对象,因此,创建Deployment类型的对象时,需要为目标Deployment对象设定spec,指定期望需要运行的Pod副本数量、使用的标签选择器以及Pod模板等。Kubernetes系统读取待创建的Deployment对象的spec以及系统上相应的活动对象的当前状态,必要时进行对象更新以确保status字段吻合spec字段中期望的状态。如果这其中任一实例出现问题(status字段值发生了变化),那么Kubernetes系统则需要及时对spec和status字段的差异做出响应,例如,补足缺失的Pod副本数目等。
spec字段嵌套的字段对于不同的对象类型来说各不相同,具体需要参照Kubernetes API参考手册中的说明分别进行获取,核心资源对象的常用配置字段将会在本书后面的章节中进行讲解。
- 点赞
- 收藏
- 关注作者
评论(0)