当前位置: 首页 > news >正文

九、K8S-label和label Selector

label和label selector 标签和标签选择器

1、label 标签: 一个label就是一个key/value对

        label 特性:

  1. label可以被附加到各种资源对象上
  2. 一个资源对象可以定义任意数量的label
  3. 同一个label可以被添加到任意数量的资源上

2、label selector 标签选择器

        Label selector是Kubernetes核心的分组机制,通过label selector客户端/用户能够识别一组有共同特征或属性的资源对象。

查询条件:

selector:matchLabels:app: mywebmatchExpressions:- {key: tier, operator: In, values: [frontend]}- {key: environment, operator: NorIn, values: [dev]}

        matchLabels用于定义一组Label,与直接写在Selector中作用相同:matchExpression用于定义一组基于集合的筛选条件,可用的条件运算符包括:In、NotIn、Exists和DoesNotExist。

        如果同时设置了matchLabels和matchExpression,则两组条件为“AND”关系,即所有条件需要满足才能完成Selector的筛选。

3、示例

  • 定义标签
#可以多创建几个deploy 方便演示
[root@k8s-master-1 test]# vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: label-test
spec:selector:matchLabels:app: nginxenv: prodreplicas: 1template:metadata:labels:app: nginxenv: prodspec:containers:- image: nginx:1.17.1name: nginx[root@k8s-master-1 test]# kubectl apply -f deployment.yaml 
deployment.apps/label-test created
#创建完成就可以看到他的标签
[root@k8s-master-1 test]# kubectl get pod --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELSlabel-test-7787b4694b-jvrz5   1/1     Running   0          16s   app=nginx,env=prod,pod-template-hash=7787b4694b[root@k8s-master-1 test]# kubectl get pod --show-labels -owide
NAME                          READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES   LABELSlabel-test-7787b4694b-jvrz5   1/1     Running   0          46s   10.244.0.164   k8s-node-1   <none>           <none>            app=nginx,env=prod,pod-template-hash=7787b4694b#查看所有标签  -A
[root@k8s-master-1 ~]# kubectl get pod -A --show-labels
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE     LABELS
default       busybox                                 1/1     Running   11         2d17h   <none>
default       label-test-7787b4694b-jvrz5             1/1     Running   2          41h     app=nginx,env=prod,pod-template-hash=7787b4694b
default       web-96d5df5c8-vmxgr                     1/1     Running   2          2d23h   app=web,pod-template-hash=96d5df5c8
kube-system   coredns-6b774d79bb-4ssxb                1/1     Running   48         18d     k8s-app=kube-dns,pod-template-hash=6b774d79bb
kube-system   kube-flannel-ds-amd64-7bpfs             1/1     Running   16         18d     app=flannel,controller-revision-hash=76ccd4ff4f,pod-template-generation=1,tier=node
kube-system   kube-flannel-ds-amd64-8d8fj             1/1     Running   17         18d     app=flannel,controller-revision-hash=76ccd4ff4f,pod-template-generation=1,tier=node
kube-system   kubernetes-dashboard-567f98444d-d9zb4   1/1     Running   2          2d23h   k8s-app=kubernetes-dashboard,pod-template-hash=567f98444d
kube-system   metrics-server-6f6c655778-66q5g         1/1     Running   2          2d23h   k8s-app=metrics-server,pod-template-hash=6f6c655778
kube-system   metrics-server-6f6c655778-m6r7g         1/1     Running   3          3d17h   k8s-app=metrics-server,pod-template-hash=6f6c655778#命令行方式给容器、node节点、deploy、等等添加标签
[root@k8s-master-1 ~]# kubectl label node k8s-node01 k8s-node02 env=test
[root@k8s-master-1 ~]# kubectl label pod busybox app=v1
pod/busybox labeled[root@k8s-master-1 ~]# 
[root@k8s-master-1 ~]# kubectl get pod --show-labels
NAME                          READY   STATUS    RESTARTS   AGE     LABELS
busybox                       1/1     Running   11         2d18h   app=v1[root@k8s-master-1 ~]# 
##修改标签使用  --overwrite
[root@k8s-master-1 ~]# kubectl label pod busybox app=v2 --overwrite
pod/busybox labeled
[root@k8s-master-1 ~]# [root@k8s-master-1 ~]# kubectl get pod --show-labels
NAME                          READY   STATUS    RESTARTS   AGE     LABELS
busybox                       1/1     Running   11         2d18h   app=v2
#删除标签
[root@k8s-master-1 ~]# kubectl label pod busybox app-
pod/busybox labeled
  • label selector

         命令行方式过滤

1、过滤出所有包含env=prod的pod
[root@k8s-master-1 test]# kubectl get pod -l env=prod --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
label-test-7787b4694b-jvrz5   1/1     Running   0          34m   app=nginx,env=prod,pod-template-hash=7787b4694b
2、过滤出包含env=prod,app=nginx的pod
[root@k8s-master-1 test]# kubectl get pod -l 'env=prod,app=nginx' --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
label-test-7787b4694b-jvrz5   1/1     Running   0          38m   app=nginx,env=prod,pod-template-hash=7787b4694b
'env=prod,app in (nginx,nginx02,nginx03)',逗号分隔2个条件,表示要同时的满足
3、过滤出来不包含app=nginx1和app=nginx3的pod。语法:'app notin (nginx,nginx03)' ,用notin来实现
[root@k8s-master-1 test]# kubectl get pod -l 'app notin (nginx1,nginx2)' --show-labels
4、过滤出来不包含app=nginx的pod。  语法:'env != dev'
[root@k8s-master-1 test]# kubectl get pod -l 'app !=nginx' --show-labels
NAME                  READY   STATUS    RESTARTS   AGE   LABELSweb-96d5df5c8-vmxgr   1/1     Running   1          31h   app=web,pod-template-hash=96d5df5c8

4、yaml配置中的标签选择表达式

  •  基于等式的匹配
创建一个service[root@k8s-master-1 test]# vim deployment-service.yaml 
apiVersion: v1
kind: Service
metadata:name: service-label
spec:ports:- name: 80-80port: 80targetPort: 80selector: #标签选择器,选择标签为env: prod的podenv: prod
[root@k8s-master-1 test]# kubectl apply -f deployment-service.yaml 
service/service-label created
[root@k8s-master-1 test]# kubectl get svc service-label -owide
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE    SELECTORservice-label   ClusterIP   10.0.0.254   <none>        80/TCP    6m8s   env=prod
# 如下图,可以看到,service恰好就是关联到了这2个pod上了。
[root@k8s-master-1 ~]# kubectl get endpoints service-label
NAME            ENDPOINTS                         AGE
service-label   10.244.0.166:80,10.244.0.167:80   5h18m
[root@k8s-master-1 ~]# 
[root@k8s-master-1 ~]# 
[root@k8s-master-1 ~]# kubectl get pod -l env=prod -owide
NAME                          READY   STATUS    RESTARTS   AGE    IP             NODE         NOMINATED NODE   READINESS GATES
busybox                       1/1     Running   18         3d1h   10.244.0.166   k8s-node-1   <none>           <none>
label-test-7787b4694b-jvrz5   1/1     Running   2          2d1h   10.244.0.167   k8s-node-1   <none>           <none>

  • 基于集合的匹配

注意:job、deployment、replicaset、daemonset不仅仅支持基于等式的匹配,也支持基于集合的匹配

如第三个步骤,创建的deployment,matchlabels用于匹配一组的标签,与直接在selector中的作用相同

在yaml文件中基于集合的方式匹配
语法:
spec:  #  selector:#matchLabels: #matchlabels用于匹配一组的标签,与直接在selector中的作用相同app: nginx06#env: online#[root@k8s-master-1 test]# 
[root@k8s-master-1 test]#  kubectl get deployment label-test -owide
NAME         READY   UP-TO-DATE   AVAILABLE   AGE    CONTAINERS   IMAGES         SELECTOR
label-test   1/1     1            1           2d1h   nginx        nginx:1.17.1   app=nginx,env=prod[root@k8s-master-1 test]# kubectl get pod -owide
NAME                          READY   STATUS    RESTARTS   AGE    IP             NODE         NOMINATED NODE   READINESS GATES
busybox                       1/1     Running   18         3d1h   10.244.0.166   k8s-node-1   <none>           <none>
label-test-7787b4694b-jvrz5   1/1     Running   2          2d1h   10.244.0.167   k8s-node-1   <none>           <none>[root@k8s-master-1 test]# 
[root@k8s-master-1 test]# kubectl get pod label-test-7787b4694b-jvrz5 -owide --show-labels
NAME                          READY   STATUS    RESTARTS   AGE    IP             NODE         NOMINATED NODE   READINESS GATES   LABELS
label-test-7787b4694b-jvrz5   1/1     Running   2          2d1h   10.244.0.167   k8s-node-1   <none>           <none>            app=nginx,env=prod,pod-template-hash=7787b4694b#这样,deployment就和要控制、管理的pod进行了关联。另外,在集合的方式里,matchExpression也可以作为匹配的操作
spec:  selector:matchLabels:app: nginx06env: onlinematchExpressions:- {key: release, operator: In, values: [stable] }- {key: app,operator: NotIn, values: [nginx02,nginx03] }
语法:matchExpressions:- {key: release, operator: In, values: [stable] }- {key: app,operator: NotIn, values: [nginx02,nginx03] }

相关文章:

九、K8S-label和label Selector

label和label selector 标签和标签选择器 1、label 标签&#xff1a; 一个label就是一个key/value对 label 特性&#xff1a; label可以被附加到各种资源对象上一个资源对象可以定义任意数量的label同一个label可以被添加到任意数量的资源上 2、label selector 标签选择器 L…...

【.NET Core】 多线程之(Thread)详解

【.NET Core】 多线程之&#xff08;Thread&#xff09;详解 文章目录 【.NET Core】 多线程之&#xff08;Thread&#xff09;详解一、概述二、线程的创建和使用2.1 ThreadStart用于无返回值&#xff0c;无参数的方法2.2 ParameterizedThreadStart:用于带参数的方法 三、线程的…...

苹果笔记本 macbook 在 office word 中使用 mathtype 的方法

前言 想在 MacBook 中使用 mathtype&#xff0c;去搜索&#xff0c;去 Apple Store 下载也发现没有 解决方法 打开 office Word 的「插入」中的「获取加载项」、「我的加载项」。 在应用商店中下载&#xff0c;需要登录自己的微软账号。 加载成功后就可以使用了。 注意 和…...

课表排课小程序怎么制作?多少钱?

在当今的数字化时代&#xff0c;无论是购物、支付、点餐&#xff0c;还是工作、学习&#xff0c;都离不开各种各样的微信小程序。其中&#xff0c;课表排课小程序就是许多教育机构和学校必不可少的工具。那么课表排课小程序怎么制作呢&#xff1f;又需要多少钱呢&#xff1f; …...

C语言总结十三:程序环境和预处理详细总结

了解程序的运行环境可以让我们更加清楚的程序的底层运行的每一个步骤和过程&#xff0c;做到心中有数&#xff0c;预处理阶段是在预编译阶段完成&#xff0c;掌握常用的预处理命令语法&#xff0c;可以让我们正确的使用预处理命令&#xff0c;从而提高代码的开发能力和阅读别人…...

tinyxml2

使用tinyxml2&#xff0c;得知道一些xml基础 xml tutorial--菜鸟 tinyxml2类对象 链接 结构 XMLNode 什么是节点 节点&#xff1a;元素、声明、文本、注释等。 XMLDocument xml文档(文件)对象。 作用&#xff1a; 加载xml文件&#xff0c; tinyxml2作用 先定义两个宏 …...

What is `@Controller` does?

Controller 是SpringMVC注解&#xff0c;标记一个类作为Web控制器&#xff08;Controller&#xff09;&#xff0c;负责处理HTTP请求并返回响应结果 在SpringMVC中&#xff0c;控制器类的主要职责是&#xff1a; 1、接收来自客户端的HTTP请求 2、调用服务层或其他业务逻辑组件…...

新版AndroidStudio dependencyResolutionManagement出错

在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目&#xff1f;那下面这些坑我们就需要来避免了&#xff0c;否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…...

第三天业务题

3-1 你们的项目是如何进行参数校验的 在我们的项目中&#xff0c;通常使用以下2种方式进行参数校验&#xff1a; 1.手动校验&#xff1a;在方法内部&#xff0c;我们可以手动编写代码来对参数进行校验。例如&#xff0c;使用条件判断语句&#xff08;if-else&#xff09;来检…...

nestjs 装饰器

1、装饰器定义 装饰器是一种特殊的类型声明&#xff0c;它可以附加在类、方法、属性、参数上边 需开启tsconfig.json中 "experimentalDecorators":true 生成tsconfig.json文件 tsc -init 2、类装饰器 // 类装饰器 主要是通过符号添加装饰器 // 装饰器会自动把cl…...

一款开源且不限制大小可以设置过期时间的支持分享的的开源文件共享系统picoshare 部署教程

1.拉取镜像 2.部署 创建目录 mkdir -p /opt/picoshare/data 部署 其中:"somesecretpass"是密码 docker run \--env "PORT4001" \--env "PS_SHARED_SECRETsomesecretpass" \--publish 10005:4001/tcp \--volume "/opt/picoshare/data:…...

eBPF运行时安全

引言 eBPF作为当前linux系统上最为炙手可热的技术&#xff0c;通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控&#xff0c;当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目&#xff0c;致力于提供高效的容器通信和强大的安…...

Linux 系统中常见的命令,它们用于执行各种任务,包括文件和目录管理、系统信息查看、用户管理等

以下是一些在 Linux 系统中常见的命令&#xff0c;它们用于执行各种任务&#xff0c;包括文件和目录管理、系统信息查看、用户管理等。这里列举了一些基础的命令&#xff1a; 文件和目录管理&#xff1a; ls: 列出目录内容。 ls cd: 切换当前目录。 cd /path/to/directory …...

AutoEventWireup详解

AutoEventWireup详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们深入探讨.NET开发中一个神奇而强大的特性——AutoEventWireup&#xff…...

SAP ABAP 自定义流水号 编号范围

前言 在开发中经常会遇到生成编号的需求(如接口报文ID&#xff0c;自建表数据主键等)&#xff1b;为此&#xff0c;SAP提供了自动编号工具&#xff0c;能根用户需求设定并自动生成一组唯一的编号。 编号范围对象的创建 1.进入事务代码SNRO&#xff0c;创建一个编号范围对象。…...

安卓、ios系统详解

一、安卓 安卓系统架构:从上至下,依次是应用层、应用框架层、系统运行库层和Linux内核层 应用层(system app):系统内置的应用程序及非系统级的应用程序都属于应用层,负责与用于进行交互,一般都用java或者kotlin来开发应用框架层(java api framework):为应用层提供所需…...

含并行连结的网络(GoogLeNet)

目录 1.GoogLeNet 2.代码 1.GoogLeNet inception不改变高宽&#xff0c;只改变通道数。GoogLeNet也大量使用1*1卷积&#xff0c;把它当作全连接用。 V3耗内存比较多&#xff0c;计算比较慢&#xff0c;但是精度比较准确。 2.代码 import torch from torch import nn from t…...

计算机网络(第六版)复习提纲3

2.3 物理层下面的传输媒体 传输媒体是数据传输系统中在发送器和接收器之间的物理通道&#xff0c;有导引型传输媒体&#xff08;有线&#xff09;和非导引型传输媒体&#xff08;无线&#xff09; 1.双绞线&#xff1a;两条铜线绞合&#xff0c;以减少干扰&#xff0c;绞合度越…...

怿星科技测试实验室获CNAS实验室认可,汽车以太网检测能力达国际标准

2023年12月27日&#xff0c;上海怿星电子科技有限公司测试实验室&#xff08;下称&#xff1a;EPT LABS&#xff09;通过CNAS实验室认可批准&#xff0c;并于2024年1月5日正式取得CNAS实验室认可证书&#xff08;注册号CNAS L19826&#xff09;&#xff0c;标志着怿星科技的实验…...

GORM 介绍及快速入门

GORM 介绍及快速入门 前言 GORM 是一个用 GoLang 语言编写的 ORM&#xff08;对象关系映射&#xff09;库。它被设计为开发者友好的方式来进行数据库操作。GORM 提供了一种高级的 API 来处理数据库的 CRUD&#xff08;创建、读取、更新、删除&#xff09;操作&#xff0c;它支…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...