11 K8S之节点资源
创建一个Node资源对象时,Kubernetes内部无法真正构建出这个主机设备来,而是仅创建了一个资源对象来代表该主机,真正的主机设备需要由集群外部的云服务商创建或由管理员手动创建。
kubelet是运行于节点之上的主代理程序,它负责从API Server接收并执行由自身承载的Pod管理任务,并需要向Master上报自身运行状态(心跳消息)以维持集群正常运行。
节点状态信息可使用kubectl describe nodes [NODE]命令予以打印,它通常包括节点地址(Addresses)、系统属性(System Info)、租约(Lease)、污点(Taints)、不可调度性(Unschedulable)、状况(Conditions)、系统容量(Capacity)、已分资源量(Allocated resources)、可分配容量(Allocatable)和Pod的可用地址池(PodCIDR和PodCIDRs)等。
Kubernetes系统上的每个Pod在创建时可分别声明其计算资源及存储资源的需求量(request)和限制量(limit),需求量表示运行时一个Pod必须确保的某项最小资源,而限制量表示该Pod能够申请占用的某项资源的上限。在已分配资源量中,Requests代表所有Pod对象声明的资源需求量之和所占节点资源的比例,而Limits则表示所有Pod对象声明的资源限制量之和所占节点资源的比例。
标签可在资源创建时直接指定,也可随时按需添加在活动对象上。一个对象可拥有不止一个标签,而同一个标签也可添加至多个对象之上,较为常用的标签如下:
版本标签:"release" : "stable","release" : "canary","release" : "beta"。
环境标签:"environment" : "dev","environment" : "qa","environment" :"prod"。
应用标签:"app" : "ui","app" : "as","app" : "pc","app" : "sc"。
架构层级标签:"tier" : "frontend","tier" : "backend","tier" : "cache"。
分区标签:"partition" : "customerA","partition" : "customerB"。
品控级别标签:"track" : "daily","track" : "weekly"。
标签选择器用于表达标签的查询条件或选择标准,目前Kubernetes API支持两个选择器:基于等值关系(equality-based)的标签选项器与基于集合关系(set-based)的标签选择器。同时,在指定多个选择器时需要以逗号分隔,各选择器之间遵循逻辑“与”,即必须要满足所有条件,而且空值的选择器将不选择任何对象。
除了标签之外,Kubernetes的API对象还支持使用资源注解(annotations)。类似于标签,注解也是键值型数据,不过它不能用作标签,也不能用于挑选API对象。资源注解的核心目的是为资源提供“元数据”信息,但注解的值不受字符数量的限制,它可大可小,可以是结构化或非结构化形式,也支持在标签中禁用其他字符。