K8S资源管理之Label
1 Label标签概述
如果K8S集群节点数量非常多,可以将节点打上对应的标签,然后通过标签进行筛选及查看,更好的镜像资源对象的相关选择与匹配
一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等
一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上
Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除
常用的Label示例如下:
版本标签:"version":"1.0"
环境标签:"environment":"dev","environment":"test"
架构标签:"tier":"frontend","tier":"backend"
2 查看标签信息
查看node节点标签:--show-labels
# kubectl get node --show-labels
查看pod标签:--show-labels
# kubectl get pod --show-labels
3 设置标签信息
为pod打version标签:label
# kubectl label pod nginx -n test version=1.0
查看pod标签:--show-labels
# kubectl get pod -n test --show-labels
再次为该pod打标签(一个资源可以定义任意数量的Label)
# kubectl label pod nginx -n test env=test
查看pod标签:--show-labels
# kubectl get pod -n test --show-labels
4 更新标签信息
更新version标签:--overwrite
将pod版本标签更新为2.0
# kubectl label pod nginx -n test version=2.0 --overwrite
查看pod标签
# kubectl get pod -n test --show-labels
YAML文件形式更新标签
kubectl explain pod.metadata #在metadata属性中指定标签信息
# vim test_ngx_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: test
labels: #定义标签
version: "3.0" #标签信息
spec:
containers:
- name: nginxpod
image: nginx:1.18.0
更新资源
# kubectl apply -f test_ngx_pod.yaml
查看标签
# kubectl get pod -n test --show-labels
5 标签选择器
标签定义完毕以后还要考虑标签的筛选,标签选择器主要有2类:
等值关系: =, !=
集合关系: KEY in (VALUE1, VALUE2......)
案例:根据标签选择器筛选pod
等式筛选:筛选test空间"version=3.0"标签的pod
# kubectl get pod -l "version=3.0" -n test --show-labels
等式筛选:筛选test空间"version!=3.0"标签的pod
# kubectl get pod -l "version!=3.0" -n dev --show-labels
集合筛选:version in(3.0) 包含3.0
# kubectl get pod -l "version in (3.0)" -n test --show-labels
集合筛选:version notin(3.0) 排除3.0
kubectl get pod -l "version notin (3.0)" -n test --show-labels
6 标签删除
使用key加一个 -
(减号)的写法来删除标签
删除标签:标签名-
# kubectl label pod nginx -n test version-
查看标签
# kubectl get pod nginx -n test --show-labels
评论区