• Label:对k8s中各种资源进行分类、分组,添加一个具有特别属性的标签

  • Selector:通过一个过滤的语法进行查找到对应标签的资源

Label是k8s中一个比较重要的概念。一个Label的一个key=value的键值对,可以附加到各种资源上。

现总结后讲解:

Label的匹配规则:

  • name=nginx:这类是直接匹配
  • name!=nginx:匹配标签中没有name=nginx的资源
  • name in (A,B):匹配所有具有name=A和name=B标签的资源
  • name not in (A):匹配所有不具有标签A的资源


通过上图可以看到:frontend通过service服务匹配到backend服务器,当service的标签是app=nginx时那么会匹配到backend的两组服务器,但是当service中筛选加上Role=backend-app时,Selector只会筛选到backend服务器组中包含这两种标签的服务器然后进行匹配。

通过下面这条命令可以看到Pod的标签:通过–show-labels参数
最后一列LABELS是Pod的标签

[root@k8s-master01 ~]# kubectl get pod --show-labels
NAME                        READY   STATUS    RESTARTS       AGE   LABELS
busybox                     1/1     Running   28 (16h ago)   9d    <none>
hpa-nginx-bd88bdd8f-h8vx7   1/1     Running   0              18h   app=hpa-nginx,pod-template-hash=bd88bdd8f

那么我们就可以尝试着用kubectl给Pod添加标签:从上列代码中我们是可以看到busybox是没有标签,通过下面这条命令在查看发现已经有标签app=busybox了。

[root@k8s-master01 ~]# kubectl label pod busybox app=busybox
pod/busybox labeled
[root@k8s-master01 ~]# kubectl get pod --show-labels
NAME                        READY   STATUS    RESTARTS       AGE   LABELS
busybox                     1/1     Running   28 (16h ago)   9d    app=busybox
hpa-nginx-bd88bdd8f-h8vx7   1/1     Running   0              18h   app=hpa-nginx,pod-template-hash=bd88bdd8f

如果一个集群中Pod非常多的时候,我们就可以通过用标签筛选的方式找到想要的Pod;-A参数是查看所有的Pod,但是加上-l app=busybox后只会找到符合这个条件的Pod。

[root@k8s-master01 ~]# kubectl get pod -A -l app=busybox
NAMESPACE   NAME      READY   STATUS    RESTARTS       AGE
default     busybox   1/1     Running   28 (16h ago)   9d

那么问题来了,要是我们不想要这个标签了或者说需要修改这个标签了怎么办?

  • 删除标签:
[root@k8s-master01 ~]# kubectl label pod busybox app-
pod/busybox unlabeled
[root@k8s-master01 ~]# kubectl get pod --show-labels
NAME                        READY   STATUS    RESTARTS       AGE   LABELS
busybox                     1/1     Running   28 (16h ago)   9d    <none>
hpa-nginx-bd88bdd8f-h8vx7   1/1     Running   0              18h   app=hpa-nginx,pod-template-hash=bd88bdd8f
  • 修改标签:可以看出标签已经是修改后的了。
[root@k8s-master01 ~]# kubectl get pod --show-labels
NAME                        READY   STATUS    RESTARTS       AGE   LABELS
busybox                     1/1     Running   28 (16h ago)   9d    app=busybox
hpa-nginx-bd88bdd8f-h8vx7   1/1     Running   0              18h   app=hpa-nginx,pod-template-hash=bd88bdd8f
[root@k8s-master01 ~]# kubectl label pod busybox app=busybox22222 --overwrite
pod/busybox labeled
[root@k8s-master01 ~]# kubectl get pod --show-labels
NAME                        READY   STATUS    RESTARTS       AGE   LABELS
busybox                     1/1     Running   28 (16h ago)   9d    app=busybox22222
hpa-nginx-bd88bdd8f-h8vx7   1/1     Running   0              18h   app=hpa-nginx,pod-template-hash=bd88bdd8f

Labels是很简单的一个东西,接下来我们看看Selector是怎么用的

我想过滤出多个条件的pod又该怎么做呢?

[root@k8s-master01 ~]# kubectl get pod -A --show-labels
NAMESPACE              NAME                                         READY   STATUS    RESTARTS         AGE   LABELS
default                busybox                                      1/1     Running   29 (3m19s ago)   9d    app=busybox22222
default                hpa-nginx-bd88bdd8f-h8vx7                    1/1     Running   0                18h   app=hpa-nginx,pod-template-hash=bd88bdd8f
kube-system            calico-kube-controllers-5dffd5886b-4blh6     1/1     Running   2 (2d1h ago)     9d    k8s-app=calico-kube-controllers,pod-template-hash=5dffd5886b
kube-system            calico-node-fvbdq                            1/1     Running   2 (2d1h ago)     9d    controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1
kube-system            calico-node-g8nqd                            1/1     Running   0                9d    controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1
kube-system            calico-node-mdps8                            1/1     Running   0                9d    controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1
kube-system            calico-node-nf4nt                            1/1     Running   1 (4d1h ago)     9d    controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1
kube-system            calico-node-sq2ml                            1/1     Running   1 (2d1h ago)     9d    controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1
kube-system            calico-typha-8445487f56-mg6p8                1/1     Running   0                9d    k8s-app=calico-typha,pod-template-hash=8445487f56
kube-system            calico-typha-8445487f56-pxbpj                1/1     Running   1 (2d1h ago)     9d    k8s-app=calico-typha,pod-template-hash=8445487f56
kube-system            calico-typha-8445487f56-tnssl                1/1     Running   0                9d    k8s-app=calico-typha,pod-template-hash=8445487f56
kube-system            coredns-5db5696c7-67h79                      1/1     Running   1 (2d1h ago)     9d    k8s-app=kube-dns,pod-template-hash=5db5696c7
kube-system            metrics-server-6bf7dcd649-5fhrw              1/1     Running   2 (4d1h ago)     9d    k8s-app=metrics-server,pod-template-hash=6bf7dcd649
kubernetes-dashboard   dashboard-metrics-scraper-7fcdff5f4c-9kk86   1/1     Running   1 (2d1h ago)     9d    k8s-app=dashboard-metrics-scraper,pod-template-hash=7fcdff5f4c
kubernetes-dashboard   kubernetes-dashboard-85f59f8ff7-js9j2        1/1     Running   12 (2d1h ago)    9d    k8s-app=kubernetes-dashboard,pod-template-hash=85f59f8ff7

以上就是我们的所有Pod了,我想要找到标签中包含kubernetes-dashboard和kube-dns的容器:

[root@k8s-master01 ~]# kubectl get pod -A -l 'k8s-app in (kubernetes-dashboard,kube-dns)'
NAMESPACE              NAME                                    READY   STATUS    RESTARTS        AGE
kube-system            coredns-5db5696c7-67h79                 1/1     Running   1 (2d1h ago)    9d
kubernetes-dashboard   kubernetes-dashboard-85f59f8ff7-js9j2   1/1     Running   12 (2d1h ago)   9d

找到了这两个Pod,说明这两个Pod中包含这两个标签,可以在上面的所有容器列表里看看这两个Pod是否含有这两个标签。

还有一种情况是比如我有一批Pod的标签是这样:

我想查看其中不包含ABB=X的所有Pod,可以这样写:

kubectl get po -l ABB!=X,APC=A

这样的话只会找到Pod02和Pod03。

总结:这个功能不难但是比较重要,也比较常用,一定要知道。

简单的Label居然有这么大的作用相关推荐

  1. java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​ 坐标.大小.颜色.方向.速度 2.抽象类:Ball ​ 设计类:BallMain-创建窗体 ​ BallJPanel- ...

  2. 车窗上为啥总有一些小黑点?没想到居然藏着大作用!

    全世界只有3.14 % 的人关注了 爆炸吧知识 经常坐车的人 可能会发现一个小细节 车窗边缘有一圈小黑点 好多人都以为这个厂家的贴纸 反正也不碍事就没去除它 其实,这些小黑点 确实有真正的科学用途 其 ...

  3. java做小窗体_java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​坐标.大小.颜色.方向.速度 2.抽象类:Ball ​设计类:BallMain-创建窗体 ​BallJPanel-画小球 ...

  4. 升压芯片很简单(三),SX1308升压芯片大串讲

    升压芯片在诸多电子电路中均有所应用,在现代生活中,升压芯片是不可或缺的器件之一.对于升压芯片,想必大家均具备一定了解.在本文中,将主要为大家讲解SX1308升压芯片,不知大家对这款升压芯片以及其应用是 ...

  5. 狼人杀服务器维护要多久,狼人杀:简单局的效率慢?大神教你如何速推简单局...

    狼人杀:简单局的效率慢?大神教你如何速推简单局 狼人杀这款以逻辑推理为主的大型桌游不仅受到广大年轻人的追捧,并快速成为了桌游界的标杆,而说到狼人杀的玩法相信大家都知道,要么狼人杀死人类,要么人类解决掉 ...

  6. lol个服务器在线人数,英雄联盟凉了?各服在线人数统计居然变化这么大

    原标题:英雄联盟凉了?各服在线人数统计居然变化这么大 英雄联盟已经走完第七个年头,随着新游戏不断的加入,总是有着LOL凉了,玩家越来越少的说法,在网吧也看不到人均LOL的景象了,那么英雄联盟现在还有多 ...

  7. 关于MSMQ(System.Messaging.MessageQueue)安装及在.NET Framework框架下的简单应用实现,以解决大并发请求问题

    目录 前言 一.MSMQ是什么? 二.安装步骤 1.Windows系统 2.Windows Server系统 三.使用步骤 1.引入库 2.封装读写消息类 3.发送业务消息数据到队列 4.接收队列中的 ...

  8. (原创)自已实现服务器控件 之 简单的Label控件

    标题:自已实现服务器控件之Label控件 声明:本帖只是一个测试Demo,所以,不会写得太规范,也不会考虑到安全性.以方便为  主.所以,用得到的朋友在项目中使用的时候,还希望对其进行改进. 环境 开 ...

  9. 简单通俗易懂 汽车入门知识图解大集合

    很多车主都想了解更多的汽车知识,以加深对爱车的了解,只是无奈汽车结构之复杂,机械知识之乏味,都一一放弃了.现在这些都不是问题!下面给大家准备了一系列的图解汽车文章,结合高清大图剖析汽车内部结构,让复杂 ...

最新文章

  1. 目标检测的常用数据处理方法!
  2. yolov3训练loss为0
  3. C/C++中的NULL讨论和总结
  4. 08查找满足条件的n个数
  5. CVE-2019-8660 iMessage 漏洞复现
  6. git为私有仓库设置密码_dnf仓库密码设置不跳出 dnf仓库密码设置流程
  7. C++成员函数指针的应用
  8. php 数据接口,初识 php 接口
  9. QQList列表功能实现
  10. 计算机视觉中的人类感知、理解和生成 (ICCV 2019 Workshop)
  11. iReport 中使用 Chart 图
  12. 正在更新office,应用程序无法正常启动
  13. 181010词霸扇贝有道每日一句
  14. LNMP自动部署脚本
  15. quartz之动态定时器实现
  16. mongovue mysql_MongoVUE模糊查询,更新单个字段
  17. 前端js生成自定义内容的PDF及word文件的实现
  18. 阿里云服务器常用配置价格表
  19. 1FN3直线电机基于海德汉光栅尺和SIMOTION的调试
  20. css3实现建筑物的旋转,CSS3实现旋转光环效果的实现步骤

热门文章

  1. libsvm数据格式
  2. End-to-End Semi-Supervised Object Detection with Soft Teacher 解读
  3. html下拉菜单模糊查询,下拉框模糊查询
  4. Visual Studio C#软件用法!
  5. 免费可用的企业工商信息API 接口推荐
  6. LSTM中的batch_size到底是什么
  7. 机器学习18-局部加权线性回归
  8. 2.6 数学公式增补
  9. 关于视频播放的伽马——gamma校正
  10. esp32系列(1):Hello world, 初识esp32