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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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