Kubernetes(k8s)标签详解

Kubernetes(k8s)标签详解

作者:Gauss松鼠会 2022-09-05 08:26:29

云计算

云原生 所谓标签就是指一个键值数据,在 k8s 上任何资源都可以拥有标签;我们可以在创建资源时在配置清单中指定,也可以创建好资源以后再使用命令添加标签。

我们知道使用 pod 控制器创建的 pod,在 pod 故障以后重建后的 pod ip 地址和名称是变化的,为了解决 pod 访问问题,我们特此创建了 service,我们访问 service 的 ip 地址就可以正常访问到 pod;那么问题来了,service 是怎样去关联 pod 的呢?在 k8s 上如果使用 pod 控制创建的 pod,在 pod 发生故障以后,对应 pod 会被对应的控制器重启或重建,一个 pod 重建以后,对应的 ip 地址和名称都是会发生变化的,所以靠 ip 地址和名称关联 pod 是不行的;那靠什么关联 pod 呢?在 k8s 上是使用的标签和标签选择器的机制实现资源和资源间相互关联的。

什么是标签?它的作用是干嘛用的?

所谓标签就是指一个键值数据,在 k8s 上任何资源都可以拥有标签;我们可以在创建资源时在配置清单中指定,也可以创建好资源以后再使用命令添加标签;有了标签以后,我们后续就可以根据标签来管理对应的资源;一个资源可以拥有多个标签,同时一个标签也可以附加给多个资源;我们可以理解为标签就是用来逻辑的对资源进行分组,拥有相同标签的资源为一组;标签的作用是方便用户管理资源;比如在 k8s 上运行了几百个 pod,我们想要管理功能相同的 pod,就可以把具有相似功能的 pod 附加同一个标签,然后要管理这些 pod 的时,直接指定拥有指定标签的 pod 即可。

一、什么是 Kubernetes 标签

要学习 k8s 标签,需要从以下几个方面来学习。 首先,我们需要知道什么是 k8s 标签。

在 k8s 中,标签(Labels)是附加到 k8s 对象(比如 Pods)上的键值对。

标签的一个示例如下所示:

“metadata”:{

“labels”:{

“key1” : ”value1”
“key2” : ”value2”
}
}

标签的作用主要有两点:

  • 一是标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。
  • 二是标签可以用于组织和选择对象的子集。

标签的特点主要有如下三点:

  • 每个对象都可以定义一组键值标签。
  • 每个键对于给定对象必须是唯一的。
  • 标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的。

二、设计标签的目的

设计标签的主要目的是使用户能够以松耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。

有如下几个示例标签,例如:

在区分发行版本的时候,可以指定:

  • “release” : “canary”
  • “release” : “dev”
  • “release” : “beta”
  • “release” : “stable”
  • ……

在定义运行环境时,可以指定:

  • “environment”: “dev”
  • “environment”: “qa”
  • “environment”: “production”
  • ……

三、标签的语法

接着,我们来学习下标签的语法。

1. 前缀:

  • 前缀是可选的;
  • 如果指定,前缀必须是 DNS 子域:由点 “.” 分割的一系列 DNS 标签,总共不超过 253 个字符,后跟斜杠 “/”;
  • 如果省略前缀,则假定标签键对用户是私有的。向最终用户对象添加标签的自动系统组件(例如:kube-scheduler、kube-controller-manager、kube-apiserver、kubctl 或其他第三方自动化工具)必须指定前缀

2. 名称:

  • 名称段是必需的
  • 必须小于等于 63 个字符,以字母数字字符 “[a-z0-9A-Z]” 开头和结尾,带有破折号 “—”,下划线 “_”,点 “.” 和之前的字母数字

3. 小结:有效的标签值

  • 必须为 63 个字符或更少(可以为空);
  • 除非标签值为空,必须以字母数字字符 “[a-z0-9A-Z]” 开头和结尾;
  • 包含破折号 “—”,下划线 “_”,点 “.” 和之前的字母数字

示例:是一个有 environment 为 qa,同时 app 为 nginx 标签的 pod 配置文件。

apiVersion:v1
kind:Pod
metadata:
name:label-demo
labels:
environment:production
app:nginx
spec:
containers:
-name:nginx
Image:nginx:1.14.2
Ports:
-containerPort:80

四、标签选择运算符

然后,我们来学习下标签选择运算符。 标签选择运算符分为两种:

  • 一种是基于等值的需求:基于等值或基于不等值的需求允许按标签键和值进行过滤。 可接受的运算符有 “=”、“==”、“!=”。
  • 一种是基于集合的需求:基于集合的标签需求允许你通过一组值来过滤键。 持有三种操作符:“in”、“notin”、“exists”。

最后,我们来学习下如何使用 API 来使用标签。 前面提到的两种标签选择算符都可以通过 REST 客户端用于 list 或者 watch 资源。

基于等值的需求可以使用如下命令来获取 pods。

Kubectlgetpods–lenvironment-production,tier=frontend

基于集合的需求可以使用如下命令来获取 pods。

Kubectlgetpods–l‘environmentin (production),tierin (frontend)

五、标签的使用

K8S 中资源标签 label

1. 说明

标签 label:

  • 资源标志
  • 格式 key=value
  • 可添加删除多个标签

标签选择器 label selector:

  • 用于选择资源
name=name1
name!=name1
namein (name1,name2)
namenotin (name1,name2)

2. 指令

(1) 帮助:

kubectllabel--help

(2) 打标签:

pod:kubectllabelpodsbusyboxapp=busybox
node:kubectllabelnodek8s-node01k8s-node02env=test

(3) 查看:

  • 查看 pods 为 busybox 的标签:
kubectlgetpodsbusybox--show-labels
  • 查看默认名称空间下所有 pod 资源的标签:
kubectlgetpods--show-labels
  • 查看指定名称空间:
kubectlgetpods-nkube-system--show-labels

(4) 更新:

加上–overwrite 参数修改标签:

kubectlgetpods-nkube-system--show-labels

(5) 通过标签筛选:

  • 列出默认名称空间下标签 key 是 app 的 pod,不显示标签:
kubectlgetpods-lapp
  • 列出默认名称空间下标签 key 是 app、值是 busybox 的 pod,不显示标签:
kubectlgetpods-lapp=busybox
  • 多个筛选条件:
kubectlgetpo-lversion!=v1,app=nginx

(6) 删除:

pod:kubectllabelpobusyboxapp--nkube-public
node:kubectllabelnodek8s-node02env-

3. 配置

(1) 创建 label-nginx.yaml

apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: dev
labels:
version: "1.0.0"
env: "test"
spec:
containers:
-image: nginx
imagePullPolicy: IfNotPresent
name: pod
ports:
-name: nginx-port
containerPort: 80
protocol: TCP

(2) 创建

kubectlcreate-flabel-nginx.yaml

(3) 删除

kubectldelete-flabel-nginx.yaml

以上就是 K8s 标签的介绍。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/269725.html<

(0)
运维的头像运维
上一篇2025-05-07 11:53
下一篇 2025-05-07 11:55

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注