Kubernetes——spec和status字段
spec和status字段
Kubernetes 用 spec 来描述所期望的对象应该具有的状态,而用 status 字段来记录对象在系统上的当前状态,因此 status 字段仅对活动对象才有意义。
这两个字段都属于嵌套类型的字段。在定义资源配置清单时,
spce 是必须定义的字段,用于描述对象的目标状态,即用户期望对象需要表现出来的特征,由用户手动定义填充。
status 字段则记录了对象的当前状态(或实际状态),此字段由 Kubernetes 系统负责填充或更新,用户不能手动进行定义。
Master 的 controller 通过相应的控制器组件动态管理并确保对象的实际状态匹配用户所期望的状态,它是一种调和(reconciliation)配置系统。
例如:Deployment 是一种用于描述集群中运行的应用对象,因此,创建 Deployment 类型的对象时,需要为目标 Deployment 对象设定 spec,指定期望需要运行的 Pod 副本数量、使用的标签选择器以及 Pod 模版等。Kubernetes 系统读取待创建的 Deployment 对象的 spec 以及系统上相应的活动对象的当前状态,必要时进行对象更新以及确保 status 字段吻合 spec 字段中期望的状态。如果这其中任一实例出现问题(status 字段值发生了变化),那么 Kubernetes 系统则需要及时对 spec 和 status 字段的差异做出响应,例如,补足确实的 Pod 副本数目等。