问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Kubernetes – 标签和选择器

创作时间:
作者:
@小白创作中心

Kubernetes – 标签和选择器

引用
1
来源
1.
https://www.cnblogs.com/wonchaofan/p/18232108

Kubernetes作为主流的容器编排工具,其标签和选择器机制在资源管理和调度中扮演着重要角色。本文将详细介绍Kubernetes中标签和选择器的概念、语法以及最佳实践,帮助读者更好地理解和使用这一机制。

一个名为Kubernetes的开源容器管理平台可自动执行容器的部署、扩展、降级和负载平衡(也称为容器编排工具)。它由 Google 使用 Golang 创建,因此拥有一个相当大的社区。Google 最终将其捐赠给了 CNCF(云原生计算基金会)。本质上,部署是 pod 上方的一层抽象。它类似于 pod 的设计计划。

标签和选择器

在 Kubernetes 中,部署和服务的配置文件中提到了标签和选择器。它们用于将Kubernetes 服务与Kubernetes Pod 连接起来。
标签是用于标识该 Pod 的任何键值对。Pod 通过部署获取其标签,部署就像是创建 Pod 之前的 Pod 蓝图。选择器与标签匹配。标签和选择器是必需的,以便在部署、Pod 和服务之间建立连接。
部署被赋予以下格式的标签:

"metadata": 
{
 "labels": 
 {
 "key1" : "value1",
 "key2" : "value2"
 }
}

该服务使用以下格式的选择器来识别 pod 和部署:

"selector":
 {
 "key" : "value"
 }

要查看标签,我们可以使用该命令。

$ kubectl get pods 
--show-labels


我们可以在创建 pod 期间附加标签,获取标签,附加标签,甚至在创建 pod 之后添加标签。
要在部署中添加标签,我们可以使用以下命令

$ kubectl label pod <pod_name>
 label:label_name

语法和字符集

在 kubernetes 中,标签和选择器在组织集群对象(它们相互依赖)方面起着重要作用。如果您想要识别 pod 或与 kubernetes 中的任何服务进行互连,则需要使用标签和选择器。
根据您所使用的类型,创建标签和选择器时需要遵循一定的规则和语法。

1. 标签语法

标签是键:值对,它由键和一个值组成,通常是字符串,如下所示。

labels:
Key: Value
app: nginx

键和值区分大小写,最大长度为 63 个字符。

2. 选择器语法

选择器主要分为两种。
2. 基于平等的选择器。
4. 基于集合的选择器。
6. 组合选择器(可选)。

1.基于相等性的选择器

名称本身表明基于平等,其中使用的运算符是**=、==以及不等式!=。**
例子:

“app = myapp” where app key set to myapp value

2.基于集合的选择器。

根据“in”、“notin”、“exists”和“does not exist”等运算符,它将使用给定的键组输入值,例如
例子:
app in (web,api) ”它将知道与键为 app 且值为“web 或 api”的对象匹配

3. 组合选择器(可选)

您将使用 AND 或 OR 来组合多个选择器。
例子:
“app = newapp” AND “app = firstapp” 这里将有一个键和两个值来表示键值对。

有效使用标签

标签在 Kubernetes 集群中起着重要作用,用于连接容器、pod 和服务。以下是在创建标签时需要遵循的一些最佳实践。
2. 选择有意义的标签:标签应该由有意义的名称组成,当将它们分配给任何对象时,它们应该代表您正在创建的对象的用途,并且您不应该在 kubernets 中对标签使用键或保留字。标签示例,您可以使用myapp:prod-environment,就像它代表这个 pod 属于生产环境一样。
4. 保持一致性:您在 kubernets 集群中创建的标签确保它们在整个集群中保持一致。这将帮助您轻松管理资源。
6. 唯一标签:标签彼此之间必须非常唯一,否则会在服务、pod 和节点之间产生冲突。
8. 使用标签进行扩展:将同一服务下的某组 pod 分组,并使用标签一次扩展所有 pod,而不是单独管理它们。
10. 使用标签进行组织:标签可用于对具有相同功能的 pod 进行分组。

更新标签

一开始,你创建了一组带有特定标签的 pod,一段时间后,由于业务需求,你想更改 pod 的标签,那么你可以使用 CLI 命令来修改,而不是直接在 YAML 文件中进行修改,这是比编辑源文件更好的做法。要更新 pod 的标签,请使用以下命令。

kubectl label pods -l Existing-Key: Existing-value New-Key: New-value

本文原文来自cnblogs

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号