k8s Label 介绍及增删改查

label介绍

大多数情况下,我们创建的pod副本会被调度到集群中的任何一个可用节点上,而不会关心具体会调度到哪个节点。不过某些情况存在一种需求:希望某种pod的副本全部在指定的一个或这一些节点上运行,比如希望将MySQL数据库调度到一个具有SSD磁盘的目标节点上。

这时候我们就需要通过kuberneteslabel(标签)来实现这个功能。

label(标签)是k8s的一个核心概念,一个label是一个key=value的键值对,其中keyvalue都是用户自定义的。label可以添加到各种资源对象上,如NodePodServiceRCDeployment等。label通常在资源对象定义时确定,也可以在对象创建后动态添加和删除,通常给指定的资源对象捆绑一个或多个不同的label来实现多维度的资源分组管理功能,以便灵活、方便的进行资源分配、调度、配置、部署等管理工作。例如:部署不同版本的应用到不同的环境中,以及监控、分析应用(日志记录、监控、告警)等。

  • k8s特色的管理方式,便于分类管理资源对象
  • 一个标签可以对应多个资源,一个资源也可以有多个标签。
  • 一个资源拥有多个标签,可以实现不同维度的管理
  • 一个label是key=value的键值对
常用的label实例如下:
  • 版本标签:release: stablerelease: canary
  • 环境标签:environment: devenvironment: qaenvironment: production
  • 架构标签:tier: frontendtier: backendtier: middleware
  • 分区标签:partition: customerApartition: customerB
  • 质量管控标签:track: dailytrack: weekly

Node上label的增删改查

查看node的标签
[root@k8s-master ~]# kubectl get nodes --show-labels

增加node的标签

增加语法:kubectl label nodes <node-name> <label-name>=<label-value>

[root@k8s-master ~]# kubectl label nodes k8s-node01 zone=north

修改node的标签

在原有增加标签基础上,添加 --overwrite参数

修改语法:kubectl label nodes <node-name> <label-name>=<label-value> --overwrite

注意:修改的时候需要添加--overwrite参数,不然会报错

[root@k8s-master ~]# kubectl label nodes k8s-node01 zone=nginx --overwrite

删除node的标签

删除label,在命令行最后执行label的key-name并于一个减号相连

删除语法:kubectl label nodes <node-name> <label-name>-

[root@k8s-master ~]# kubectl label nodes k8s-node01 zone-

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐