k8s Label 介绍及增删改查
k8s Label 介绍及增删改查label介绍大多数情况下,我们创建的pod副本会被调度到集群中的任何一个可用节点上,而不会关心具体会调度到哪个节点。不过某些情况存在一种需求:希望某种pod的副本全部在指定的一个或这一些节点上运行,比如希望将MySQL数据库调度到一个具有SSD磁盘的目标节点上。这时候我们就需要通过kubernetes的label(标签)来实现这个功能。label(标签)是k8s
k8s Label 介绍及增删改查
label介绍
大多数情况下,我们创建的pod
副本会被调度到集群中的任何一个可用节点上,而不会关心具体会调度到哪个节点。不过某些情况存在一种需求:希望某种pod的副本全部在指定的一个或这一些节点上运行,比如希望将MySQL
数据库调度到一个具有SSD
磁盘的目标节点上。
这时候我们就需要通过kubernetes
的label
(标签)来实现这个功能。
label
(标签)是k8s
的一个核心概念,一个label
是一个key=value
的键值对,其中key
与value
都是用户自定义的。label
可以添加到各种资源对象上,如Node
、Pod
、Service
、RC
、Deployment
等。label
通常在资源对象定义时确定,也可以在对象创建后动态添加和删除,通常给指定的资源对象捆绑一个或多个不同的label来实现多维度的资源分组管理功能,以便灵活、方便的进行资源分配、调度、配置、部署等管理工作。例如:部署不同版本的应用到不同的环境中,以及监控、分析应用(日志记录、监控、告警)等。
- k8s特色的管理方式,便于分类管理资源对象
- 一个标签可以对应多个资源,一个资源也可以有多个标签。
- 一个资源拥有多个标签,可以实现不同维度的管理
- 一个label是key=value的键值对
常用的label实例如下:
- 版本标签:
release: stable
和release: canary
- 环境标签:
environment: dev
、environment: qa
和environment: production
- 架构标签:
tier: frontend
、tier: backend
和tier: middleware
- 分区标签:
partition: customerA
和partition: customerB
- 质量管控标签:
track: daily
和track: 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-
更多推荐
所有评论(0)