kubernetes资源对象label

著作:行癫 <盗版必究> ------ ## 一:标签 #### 1.pod标签 作用: ​ 解决同类型的资源对象越来越多,为了更好的管理,按照标签分组 常见标签: ​ release(版本):stable(稳定版)、canary(金丝雀版本、可以理解为测试版)、beta(测试版) ​ environment(环境变量):dev(开发)、qa(测试)、production(生产) ​ application(应用):ui、as(应用软件)、pc、sc ​ tier(架构层级):frontend(前端)、backend(后端)、cache(缓存、隐藏) ​ partition(分区):customerA(客户A)、customerB(客户B) ​ track(品控级别):daily(每天)、weekly(每周) 注意: ​ K8s集群中虽然没有对有严格的要求,但是标签还是要做到:见名知意!方便自己也方便别人! 使用: ​ 为现有的pod添加一个标签 ```shell [root@master nginx]# kubectl label pod nginx-xingdian app=nginx -n default pod/nginx-xingdian labeled 注意: -n: 指定namespect名字空间 ``` ​ 查看pod标签 ```shell [root@master nginx]# kubectl get pods --show-labels -n default NAME READY STATUS RESTARTS AGE LABELS nginx-deployment-585449566-9459t 1/1 Running 0 99m app=nginx,pod-template-hash=585449566 nginx-deployment-585449566-z6qs8 1/1 Running 0 94m app=nginx,pod-template-hash=585449566 nginx-xingdian 1/1 Running 0 67m app=nginx,run=nginx-xingdian ``` ​ 删除标签 ```shell [root@master nginx]# kubectl label pod nginx-xingdian app- -n default pod/nginx-xingdian labeled ``` ​ 修改标签 ```shell [root@master nginx]# kubectl label pod nginx-xingdian release=stable -n default pod/nginx-xingdian labeled [root@master nginx]# kubectl get pods --show-labels -n default NAME READY STATUS RESTARTS AGE LABELS nginx-deployment-585449566-9459t 1/1 Running 0 112m app=nginx,pod-template-hash=585449566 nginx-deployment-585449566-z6qs8 1/1 Running 0 106m app=nginx,pod-template-hash=585449566 nginx-xingdian 1/1 Running 0 80m app=xingdian,release=stable,run=nginx-xingdian [root@master nginx]# kubectl label pod nginx-xingdian release=beta --overwrite -n default pod/nginx-xingdian labeled [root@master nginx]# kubectl get pods --show-labels -n default NAME READY STATUS RESTARTS AGE LABELS nginx-deployment-585449566-9459t 1/1 Running 0 112m app=nginx,pod-template-hash=585449566 nginx-deployment-585449566-z6qs8 1/1 Running 0 107m app=nginx,pod-template-hash=585449566 nginx-xingdian 1/1 Running 0 81m app=xingdian,release=beta,run=nginx-xingdian ``` 标签与标签选择器的关系: ​ 如果标签有多个,标签选择器选择其中一个,也可以关联成功! ​ 如果选择器有多个,那么标签必须满足条件,才可关联成功! 标签选择器:标签的查询过滤条件 ​ 基于等值关系的(equality-based):”=“、”==“、”!=“前两个等于,最后一个不等于 ​ 基于集合关系(set-based):in、notin、exists三种 使用标签选择器的逻辑: ​ 同时指定的多个选择器之间的逻辑关系为”与“操作 ​ 使用空值的标签选择器意味着每个资源对象都将被选择中 ​ 空的标签选择器无法选中任何资源 #### 2.node节点标签 查看标签: ```shell [root@master nginx]# kubectl get nodes --show-labels NAME STATUS ROLES AGE VERSION LABELS master Ready master 22h v1.19.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/master= node-1 Ready 22h v1.19.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node-1,kubernetes.io/os=linux node-2 Ready 22h v1.19.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node-2,kubernetes.io/os=linux ``` 增加标签: ```shell [root@master nginx]# kubectl label nodes node-1 kubernetes.io/username=xingdian node/node-1 labeled ``` 减少标签: ```shell [root@master nginx]# kubectl label nodes node-1 a- node/node-1 labeled ``` 修改标签: ```shell [root@master nginx]# kubectl label nodes node-1 kubernetes.io/username=diandian --overwrite node/node-1 labeled ```