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. 选择器语法

选择器主要分为两种。

  1. 基于平等的选择器。
  2. 基于集合的选择器。
  3. 组合选择器(可选)。

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 和服务。以下是在创建标签时需要遵循的一些最佳实践。

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

更新标签

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

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

 

 
 
 
 
 
 
 
 
 
 
posted @ 2024-06-05 02:06  wongchaofan  阅读(19)  评论(0编辑  收藏  举报