k8s 标签和选择器

  • 标签

标签是附体在k8s 资源对象的一组键值对,其存在的意义是按照用户的意图来组织资源,同时不对资源的核心逻辑产生影响。

yaml 复制代码
metadata: 
  labels:   
	key1: value1   
	key2: value2

标签名:

○ 标签名部分是必须的。

○ 不能多余 63 个字符。

○ 必须由字母、数字开始和结尾。

○ 可以包含字母、数字、减号(-)、下划线(_)、小数点(.)。

标签的 value :

○ 不能多于 63 个字符。

○ 可以为空字符串。

○ 如果不为空,则必须由字母、数字开始和结尾。

○ 如果不为空,可以包含字母、数字、减号(-)、下划线(_)、小数点(.)。

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels: # 标签
    app: nginx
    environment: prod 
spec:
  containers:
  - name: nginx
    image: nginx

pod 中标签的操作

  1. 添加标签

kubectl label pod nginx-pod hello=world

  1. 更新标签

kubectl label pod nginx-pod hello=java --overwrite

  1. 删除标签

kubectl label pod nginx-pod hello-

node 中标签的操作

  1. 添加标签

kubectl label node k8s-node1 node-role=ingress

  1. 更新标签

kubectl label node k8s-node1 node-role=ingress2 --overwrite

  1. 删除标签

kubectl label node k8s-node1 node-role-

  • 标签选择器

● 通常来讲,会有多个 Kubernetes 对象包含相同的标签。通过使用标签选择器(label selector),用户/客户端可以选择一组对象。标签选择器是 Kubernetes 中最主要的分类和筛选手段。

● Kubernetes 的 api-server 支持两种形式的标签选择器,equality-based 基于等式的 和 set-based 基于集合的 。标签选择器可以包含多个条件,并使用逗号进行分隔,此时只要满足所有条件的 Kubernetes对象才会被选中。

● 基于等式的标签选择器,可以使用三种操作符 = 、== 、!=。前两个操作符含义是一样的,都代表相等;后一个操作符代表不相等。

复制代码
# 选择了标签名为 `environment` 且 标签值为 `production` 的Kubernetes对象
kubectl get pods -l environment=production,tier=frontend

# 选择了标签名为 `tier` 且标签值不等于 `frontend` 的对象,以及不包含标签 `tier` 的对象
kubectl get pods -l tier != frontend

# 选择所有包含 `partition` 标签的对象
kubectl get pods -l partition

# 选择所有不包含 `partition` 标签的对象
kubectl get pods -l !partition

基于集合标签选择器,可以根据标签名的一组值进行筛选。支持的操作符有三种:in、notin、exists。

复制代码
# 选择所有的包含 `environment` 标签且值为 `production` 或 `qa` 的对象
kubectl get pods -l environment in (production, qa)

# 选择所有的 `tier` 标签不为 `frontend` 和 `backend`的对象,或不含 `tier` 标签的对象
kubectl get pods -l tier notin (frontend, backend)

# 选择包含 `partition` 标签(不检查标签值)且 `environment` 不是 `qa` 的对象
kubectl get pods -l partition,environment notin (qa)
相关推荐
林浅不想努力4 小时前
LVS知识点总结
服务器·云原生·lvs
极客先躯6 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
ChaITSimpleLove9 小时前
SimpleIdServer 6.0.4 Docker Compose 实战部署指南
运维·docker·容器·身份认证·id-server·simpleidserver
阿里云云原生10 小时前
将内核专家经验封装进 Agent:SysOM 巡检 Skill 开源,赋能你的运维自动化闭环
云原生
自律懒人11 小时前
AI应用从原型到上线的最后一公里——灵光闪应用一键部署深度实测,30+免费API + Serverless零配置发布
人工智能·云原生·开源·serverless
程序喵大人11 小时前
【C++进阶】STL容器与迭代器 - 05 map 和 set 为什么按键保持有序
开发语言·c++·容器·迭代器·stl
风曦Kisaki13 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes
张忠琳13 小时前
【NVIDIA】NVIDIA k8s-device-plugin v0.19.3 资源管理器模块深度分析之三
云原生·容器·架构·kubernetes·nvidia
Chengbei1115 小时前
云安全漏洞挖掘SKILL、一站式云漏洞挖掘工具,支持S3爆破、IMDS探测、K8s检测与AK/SK权限利用
前端·人工智能·网络安全·云原生·容器·kubernetes·系统安全
Ai拆代码的曹操16 小时前
K8s 调度器 predicate 阶段揭秘:为什么你的 Pod 总是堆在同一台机器
后端·容器