09 K8S之对象类资源配置
大多数的对象或列表类型的资源还会有metadata、spec和status这3个嵌套型的字段。其中metadata字段为资源提供元数据信息,例如名称、隶属的名称空间和标签等,因而也称为对象元数据(ObjectMeta);spec字段则是由用户负责声明对象期望状态的字段,不同资源类型的期望状态描述方式各不相同,因此其嵌套支持的字段也不尽相同;而status字段则记录活动对象的当前状态信息,也称为观察状态,它由Kubernetes系统自行维护,对用户来说为只读字段,不需要在配置清单中提供,而是在查询集群中的对象时由API Server在响应中返回。
Kubernetes API中定义的大部分资源都有spec和status两个字段:前一个是声明式API风格的期望状态,由用户负责定义而由系统读取;后一个是系统写入的实际观测到的状态,可被用户读取,以了解API对象的实际状况。控制器是Kubernetes的核心组件之一,负责将用户通过spec字段声明的API对象状态“真实”反映到集群之上,尤其是创建和更新操作,并持续确保系统观测到并写入status的实际状态符合用户期望的状态。
kubectl的命令也可大体分为3类:命令式命令(imperative command)、命令式对象配置(imperative object configuration)和声明式对象配置(declarative object configuration)。
(1)命令式命令是指将实施于目标对象的操作以选项及选项参数的方式提供给kubectl命令,并直接操作Kubernetes集群中的活动对象,因而无法提供之前配置的历史记录。这是在集群中运行“一次性”任务的最简单方法。
(2)命令式对象配置管理方式包括create、delete、get和replace等命令。与命令式命令不同,它通过资源配置清单读取要管理的目标资源对象,通用格式为kubectlcreate|delete| replace|get -f
(3)声明式对象配置并不直接指明要进行的对象管理操作,而是提供配置清单文件给Kubernetes系统,并委托系统来跟踪活动对象的状态变动。