标签选择器用于表达标签的查询条件或选择标准,Kubernetes API目前支持两个选择器:基于等值关系(equality-based)以及基于集合关系 (set-based)。例如,env=production和env!=qa是基于等值关系的选择器,而tier in(frontend,backend)则是基于集合关系的选择器。另外,使用标签选择器时还将遵循以下逻辑。

(1)同时指定的多个选择器之间的逻辑关系为 “与” 操作。

(2)使用空值的标签选择器意味着每个资源对象都将被选中。

(3)空的标签选择器将无法选出任何资源。

基于等值关系的标签选择器的可用操作符有 “=” “==” 和 “!=” 三种,其中前两个意义相同,都表示 “等值” 关系,最后一个表示 “不等” 关系。“kubectl get” 命令的 “-l” 选项能够指定使用标签选择器,例如显示键名env的值不为qa的所有Pod对象:

kubectl get pods -l "env!=qa" -L env
NAME READY STATUS RESTARTS AGE ENV
pod-example 1/1 Running 2 4h production
pod-with-labels 1/1 Running 0 40m testing

  再例如,显示标签键名env的值不为qa,且标签键名tier的值为frontend的所有Pod对象:

kubectl get pods -l "env!=qa,tier=frontend" -L env,tier
NAME READY STATUS RESTARTS AGE ENV TIER
pod-with-labels 1/1 Running 0 35d testing frontend

  

基于集合关系的标签选择器支持in、notin和exists 三种操作符,它们的使用格式及意义具体如下。

  • KEY in (VALUE1,VALUE2,···):指定的键名的值存在于给定的列表中即满足条件。

  • KEY notin (VALUE1,VALUE2,···):指定的键名的值不存在于给定的列表中即满足条件。

  • KEY:所有存在此键名标签的资源。

  • !KEY:所有不存在此键名标签的资源。

例如,显示标签键名env的值为production或dev的所有Pod对象:

kubectl get pods -l "env in (production,dev)" -L env
NAME READY STATUS RESTARTS AGE ENV
pod-example 1/1 Running 2 4h production

  再如,列出标签键名env的值为production或dev,且不存在键名为tier的标签的所有Pod对象:

kubectl get pods -l 'env in (production,dev),!tier' -L env,tier
NAME READY STATUS RESTARTS AGE ENV TIER
pod-example 1/1 Running 2 4h production

注意:为了避免shell解释器解析叹号(!),必须要为此类表达式使用单引号。

此外,Kubernetes的诸多资源对象必须以标签选择器的方式关联到Pod资源对象,比如Service、Deployment和ReplicaSet类型的的资源等,它们在sepc字段中嵌套使用嵌套的“selector”字段,通过“matchLabels”来指定标签选择器,有的甚至还支持使用“matchExpressions”构造复杂的标签选择机制。

  • matchLabels:通过直接给定键值对来指定标签选择器。
  • matchExpressions:基于表达式指定的标签选择器列表,每个选择器都形如“{key:KEY_NAME, operator:OPERATOR,values:[VALUE1, VALUE2,···]}”,选择器列表间为“逻辑与”关系;使用In或NotIn操作符时,其values不强制要求为非空的字符串列表,而使用Exists或DostNotExist,其values必须为空。

下面所示的资源清单片段是一个示例,它同事定义了两类标签选择器:

selector
matchLabels:
component:redis
matchExpressions:
- {key:tier,operator:In,values:[cache]}
- {key:environment,operator:Exists,values:}

  标签赋予了Kubernetes灵活操作资源对象的的能力,它也是Service和Deployment等核心资源类型得以实现的基本前提。

 

Kubernetes--标签选择器(标签)的更多相关文章

  1. python 全栈开发,Day46(列表标签,表格标签,表单标签,css的引入方式,css选择器)

    一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...

  2. 前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器

    前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器 一丶CSS简介    叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 ...

  3. K8S调度之标签选择器

    Kubernetes 调度简介 除了让 kubernetes 集群调度器自动为 pod 资源选择某个节点(默认调度考虑的是资源足够,并且 load 尽量平均),有些情况我们希望能更多地控制 pod 应 ...

  4. 容器编排系统之K8s资源标签、标签选择器、资源注解

    前文我们聊到了使用k8s资源配置清单定义资源的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14132890.html:今天我们来聊下资源标签,标签选 ...

  5. 008.kubernets的调度系统之标签选择器

    一 Kubernetes 调度简介 除了让 kubernetes 集群调度器自动为 pod 资源选择某个节点(默认调度考虑的是资源足够,并且 load 尽量平均),有些情况我们希望能更多地控制 pod ...

  6. jQuery标签选择器

    $(function() { //alert("hello jquery"); //选择器 //id选择器 $("#bt1").click( function( ...

  7. CSS标签选择器(二)

    一.CSS选择器概述 1.1.CSS功能 CSS语言具有两个基本功能:匹配和渲染 当浏览器在解析CSS样式时,首先应该确定哪些元素需要渲染,即匹配哪些HTML元素,这个操作由CSS样式中的选择器负责标 ...

  8. css标签选择器

    /*标签选择器*/ input[type="text"] { width: 60%; } </style>

  9. jquery基本选择器:id选择器、class选择器、标签选择器、通配符选择器

    全栈工程师开发手册 (作者:栾鹏) jquery系列教程1-选择器全解 jquery基本选择器 jquery基本选择器,包括id选择器.class选择器.标签选择器.通配符选择器,同时配合选择器的空格 ...

  10. H5 标签选择器

    08-标签选择器 我是段落 我是段落 我是段落 我是段落 我是段落 我是标题 <!DOCTYPE html> <html lang="en"> <he ...

随机推荐

  1. sync/atomic 原子操作使用与解析

    目录 前言 1. 引入 2. sync.atomic 原子操作 2.1 什么是原子操作 2.2 各种 API 的作用 2.2.1 Store 操作 2.2.2 Load 操作 2.2.3 Add 操作 ...

  2. Autodesk Maya2023 破解版安装教程(小白看了也说understand)

    前言 Maya是Autodesk旗下的著名三维建模和动画软件,应用对象是专业的影视广告,角色动画,电影特技等.Maya功能完善,工作灵活,制作效率极高,渲染真实感极强,是电影级别的高端制作软件. 安装 ...

  3. P22_条件渲染

    条件渲染 wx:if 在小程序中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块: 也可以用 wx:elif 和 wx:else 来添加 else 判 ...

  4. 记录一次vue部署docker步骤

    vue部署docker 拉取nginx镜像 docker pull nginx 有Dockerfile文件步骤: 1.打包vue npm run build 2.写一个default.conf 文件, ...

  5. C++ 练习11 string的使用

    1 #include <iostream> 2 #include<string>//调用string函数库 3 using namespace std; 4 int main( ...

  6. scrapy的pipline的不同操作

    针对json文件 import json import os class SpyOppoPipeline: def __init__(self): self.file = open('曹姐.json' ...

  7. Android:Fragment 和 include 标签引入布局的区别

    Fragment 存在于 Activity 中,但是 Fragment 管理自己的界面和逻辑,表面上看,Fragment 最终的布局还是要被压入到 Activity 中的布局中.03#Android ...

  8. 02#Web 实战:实现树形控件

    前言 这是一篇个人练习 Web 前端各种常见的控件.组件的实战系列文章.本篇文章将介绍个人通过 JQuery + 无序列表 + CSS 动画完成一个简易的树形控件. 最终实现的效果是: 这样结构比较复 ...

  9. CSS 子代选择器(>)

    后代选择器 后代选择器?是一种多个用空格分隔的选择器,别称包含选择器.范围是当前节点的所有子节点,包括其直接子节点. div#app下的所有 div 元素都使用下面的样式: div#app div { ...

  10. LeetCode-807 保持城市天际线

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline 题目描述 在二维数组grid ...