15、K8S实战:Kubernetes实战入门--Label

一、概念

label是kubernetes中一个重要概念,它的作用是在资源上添加标识,用来对他们进行区分和选择。
label的特点:
1)一个label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等
2)一个资源对象可以定义任意数量的label,同一个label也可以被添加到任意数量的资源对象上去
3)label通常在资源对象定义时确定,当然也可以在对象创建后动态添加或者删除。

二、label selector

1、 可以通过标签实现资源的多维度分组,以便灵活、方便的进行资源分配、调度、配置、部署等管理工作、;
一些常用的label实例如下:
版本信息:“version”:“release”
环境信息:“environment”:“dev”
架构信息:“tier”:“frontend”
标签定义完成之后,需要考虑到标签的选择,这就要用到label selectot, label用于给某个资源对象进行标识,label selector用于查询和筛选拥有某些标签的资源对象。
当前有两种label selector:
1)基于等式的label selector
name = slave: 选择所有包含label中key=name且value=slave的对象
env != prod:选择所有包含label中key=env且value!=prod的对象
2)基于集合的label selector
name in (master, slave) 选择所有包含label中key=name且value=master或slave的对象
name not in (master, slave) 选择所有包含label中key=name且value!=master且!=slave的对象
2、 标签的选择可以有多个,此时将多个labelselector进行组合,使逗号隔开,例如:namein(master,slave),env!=prod;

三、标签的使用

1、 命令方式;

#为pod资源打标签
kubectl label pod nginx-pod version=1.0 -n dev
#为pod资源更新标签
kubectl label pod nginx-pod version=2.0 -n dev --overwrite
#查看标签
kubectl get pod nginx-pod -n dev --show-labels
#筛选标签
kebectl get pod -n dev -l "version=2.0" --show-labels
#删除标签tier
kubectl label pod nginx -n dev tier-

1、 配置方式;
创建一个pod-nginx.yaml,配置文件指定label

apiVersion: v1
kind: Pod
metadata: 
	name: nginx
	namespace: dev
	label: 
		version: 1.0
		env: dev
spec:
	containers:
	- image: nginx:1.17.1
	  imagePullPolicy: IfNotPresent
	  name: pod
	  port: 
	  - name: nginx-port
	    containerPort: 80
	    protocol: TCP

执行对应的更新命令:

kubectl apply -f pod-nginx.yaml

》》》博主长期更新学习心得,推荐点赞关注!!!
》》》若有错误之处,请在评论区留言,谢谢!!!

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: