Roy学Kubernetes(4):Kubernetes对象属性
在Kubernetes系统中,Kubernetes对象是持久化的实体。Kubernetes使用这些实体去表示整个集群的状态。它们描述了如下信息:
- 哪些容器化应用在运行(以及在哪个节点上)
- 可以被应用使用的资源
- 关于应用运行时表现的策略,比如重启策略、升级策略,以及容错策略
Kubernetes对象是“目标性记录”:一旦创建对象,Kubernetes系统将持续工作以确保对象存在。通过创建对象,本质上是在告知Kubernetes系统,所需要的集群工作负载看起来是什么样子的,这就是Kubernetes集群的期望状态(Desired State)。
操作Kubernetes对象,无论是创建、修改、或者删除,都需要调用Kubernetes API(kube-apiserver提供),关于Kubernetes API,后面章节再详细介绍。
Kubernetes对象属性(Spec和Status)
每个Kubernetes对象包含两个嵌套的对象字段,它们负责管理对象的配置:spec和status。
- spec是必需的,它描述了对象的期望状态(Desired State):希望对象所具有属性的特征。
- status描述了对象的实际状态(Actual State),它是由Kubernetes系统提供和更新的。在任何时刻,Kubernetes一直努力地管理着对象的实际状态以与期望状态相匹配。
例如,Kubernetes Deployment对象能够表示运行在集群中的应用。当创建Deployment时,可能需要设置Deployment的spec规约,以指定该应用需要有3个副本在运行。 Kubernetes系统读取Deployment规约,并启动我们所期望的该应用的3个实例:更新状态以与规约相匹配。 如果那些实例中有失败的(一种状态变更),Kubernetes系统通过修正来响应规约和状态之间的不一致:这种情况下,会启动一个新的实例来替换。我们下面来通过实际配置来更直观的了解它。
Kubernetes对象Spec配置示例
当创建Kubernetes对象时,必须提供对象的Spec规约,用来描述该对象的一些基本信息和期望状态。Kubernetes支持使用YAML格式文件描述你的对象Spec,下面是一个nginx服务的Deployment示例:
1 | apiVersion: apps/v1beta1 # API版本 |
kubectl是Kubernetes调用API的CLI命令,直接通过命令行创建如下:
1 | [root@k8s-master ~]# kubectl create -f nginx-deployment.yaml |
查看Deployment
1 | [root@k8s-master ~]# kubectl get deployment |
READY中"3/3",前面的3即是status,后面的3即为spec;所以可以看出部署正常。
必需字段
在想要创建的Kubernetes对象对应的.yaml文件中,需要配置如下的字段:
- apiVersion - 创建该对象所使用的Kubernetes API的版本,参考
- kind - 想要创建的对象的类型
- metadata - 帮助识别对象唯一性的数据,包括一个name字符串、UID和可选的namespace
也需要提供对象的spec字段。对象spec的精确格式对每个Kubernetes对象来说是不同的,包含了特定于该对象的嵌套字段。详细可查阅对象对应的官方文档,或使用kubectl explain命令查询。
- 本文链接:http://www.whyvv.top/k8s4.html
- 版权声明:版权所有,转载请注明出处。
分享