众所周知的标签、注释和污点

Kubernetes 保留 kubernetes.iok8s.io 命名空间中的所有标签和注释。

本文档既用作值的参考,也用作分配值的协调点。

API 对象上使用的标签、注释和污点

apf.kubernetes.io/autoupdate-spec

类型:注释

示例:apf.kubernetes.io/autoupdate-spec: "true"

用于:FlowSchemaPriorityLevelConfiguration 对象

如果此注释在 FlowSchema 或 PriorityLevelConfiguration 上设置为 true,则该对象的 spec 由 kube-apiserver 管理。如果 API 服务器无法识别 APF 对象,并且您对其进行了自动更新注释,则 API 服务器会删除整个对象。否则,API 服务器不会管理对象规范。有关更多详细信息,请阅读 强制和建议配置对象的维护

app.kubernetes.io/component

类型:标签

示例:app.kubernetes.io/component: "database"

用于:所有对象(通常用于 工作负载资源)。

应用程序架构中的组件。

推荐标签 之一。

app.kubernetes.io/created-by(已弃用)

类型:标签

示例:app.kubernetes.io/created-by: "controller-manager"

用于:所有对象(通常用于 工作负载资源)。

创建此资源的控制器/用户。

app.kubernetes.io/instance

类型:标签

示例:app.kubernetes.io/instance: "mysql-abcxyz"

用于:所有对象(通常用于 工作负载资源)。

一个唯一名称,用于标识应用程序实例。要分配非唯一名称,请使用 app.kubernetes.io/name

推荐标签 之一。

app.kubernetes.io/managed-by

类型:标签

示例:app.kubernetes.io/managed-by: "helm"

用于:所有对象(通常用于 工作负载资源)。

用于管理应用程序操作的工具。

推荐标签 之一。

app.kubernetes.io/name

类型:标签

示例:app.kubernetes.io/name: "mysql"

用于:所有对象(通常用于 工作负载资源)。

应用程序的名称。

推荐标签 之一。

app.kubernetes.io/part-of

类型:标签

示例:app.kubernetes.io/part-of: "wordpress"

用于:所有对象(通常用于 工作负载资源)。

此对象所属的更高级别应用程序的名称。

推荐标签 之一。

app.kubernetes.io/version

类型:标签

示例:app.kubernetes.io/version: "5.7.21"

用于:所有对象(通常用于 工作负载资源)。

应用程序的当前版本。

值的常见形式包括

推荐标签 之一。

applyset.kubernetes.io/additional-namespaces(alpha)

类型:注释

示例:applyset.kubernetes.io/additional-namespaces: "namespace1,namespace2"

用于:用作 ApplySet 父对象的那些对象。

此注释的使用是 Alpha。对于 Kubernetes 版本 1.30,您可以在 Secrets、ConfigMaps 或自定义资源上使用此注释,前提是定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签。

用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以将 ApplySet 的范围扩展到父对象自身命名空间(如果有)之外。该值是除父对象命名空间之外的命名空间名称的逗号分隔列表,其中找到对象。

applyset.kubernetes.io/contains-group-kinds(alpha)

类型:注释

示例:applyset.kubernetes.io/contains-group-kinds: "certificates.cert-manager.io,configmaps,deployments.apps,secrets,services"

用于:用作 ApplySet 父对象的那些对象。

此注释的使用是 Alpha。对于 Kubernetes 版本 1.30,您可以在 Secrets、ConfigMaps 或自定义资源上使用此注释,前提是定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签。

用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列表。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用其他优化。但是,从 Kubernetes 版本 1.30 开始,kubectl 需要它。如果存在,此注释的值必须是组种类的逗号分隔列表,以完全限定的名称格式,即 <resource>.<group>

applyset.kubernetes.io/contains-group-resources(已弃用)

类型:注释

示例:applyset.kubernetes.io/contains-group-resources: "certificates.cert-manager.io,configmaps,deployments.apps,secrets,services"

用于:用作 ApplySet 父对象的那些对象。

对于 Kubernetes 版本 1.30,您可以在 Secrets、ConfigMaps 或自定义资源上使用此注释,前提是定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签。

用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列表。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用其他优化。但是,在 Kubernetes 版本 1.30 中,kubectl 需要它。如果存在,此注释的值必须是组种类的逗号分隔列表,以完全限定的名称格式,即 <resource>.<group>

applyset.kubernetes.io/id(alpha)

类型:标签

示例:applyset.kubernetes.io/id: "applyset-0eFHV8ySqp7XoShsGvyWFQD3s96yqwHmzc4e0HR1dsY-v1"

用于:用作 ApplySet 父对象的那些对象。

此标签的使用是 Alpha。对于 Kubernetes 版本 1.30,您可以在 Secrets、ConfigMaps 或自定义资源上使用此标签,前提是定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签。

用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。此标签是使对象成为 ApplySet 父对象的标签。它的值是 ApplySet 的唯一 ID,该 ID 来自父对象本身的标识。此 ID **必须** 是对象所在组-种类-名称-命名空间的哈希的 base64 编码(使用 RFC4648 的 URL 安全编码),格式为:<base64(sha256(<name>.<namespace>.<kind>.<group>))>。此标签的值与对象 UID 之间没有关系。

applyset.kubernetes.io/is-parent-type(alpha)

类型:标签

示例:applyset.kubernetes.io/is-parent-type: "true"

用于:Custom Resource Definition (CRD)

此标签的使用是 Alpha。用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。您可以在 CustomResourceDefinition (CRD) 上设置此标签,以标识它定义的自定义资源类型(而不是 CRD 本身)作为 ApplySet 的允许父级。此标签的唯一允许值是 "true";如果您想将 CRD 标记为不是 ApplySet 的有效父级,请省略此标签。

applyset.kubernetes.io/part-of(alpha)

类型:标签

示例:applyset.kubernetes.io/part-of: "applyset-0eFHV8ySqp7XoShsGvyWFQD3s96yqwHmzc4e0HR1dsY-v1"

用于:所有对象。

此标签的使用是 Alpha。用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。此标签是使对象成为 ApplySet 成员的标签。标签的值**必须** 与父对象上的 applyset.kubernetes.io/id 标签的值匹配。

applyset.kubernetes.io/tooling(alpha)

类型:注释

示例:applyset.kubernetes.io/tooling: "kubectl/v1.30"

用于:用作 ApplySet 父对象的那些对象。

此注释的使用是 Alpha。对于 Kubernetes 版本 1.30,您可以在 Secrets、ConfigMaps 或自定义资源上使用此注释,前提是定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签。

用于实现 kubectl 中基于 ApplySet 的修剪 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以指示哪个工具管理该 ApplySet。工具应该拒绝修改属于其他工具的 ApplySet。该值必须采用 <toolname>/<semver> 格式。

apps.kubernetes.io/pod-index(beta)

类型:标签

示例:apps.kubernetes.io/pod-index: "0"

用于:Pod

当 StatefulSet 控制器为 StatefulSet 创建 Pod 时,它会在此 Pod 上设置此标签。标签的值是正在创建的 Pod 的序号索引。

有关更多详细信息,请参见 StatefulSet 主题中的 Pod 索引标签。请注意,必须启用 PodIndexLabel 功能门才能将此标签添加到 Pod。

cluster-autoscaler.kubernetes.io/safe-to-evict

类型:注释

示例:cluster-autoscaler.kubernetes.io/safe-to-evict: "true"

用于:Pod

当此注释设置为 "true" 时,即使其他规则通常会阻止 Pod 被驱逐,集群自动扩展器也可以驱逐 Pod。集群自动扩展器永远不会驱逐明确将此注释设置为 "false" 的 Pod;您可以在要保持运行的重要 Pod 上设置它。如果未设置此注释,则集群自动扩展器将遵循其 Pod 级别的行为。

config.kubernetes.io/local-config

类型:注释

示例:config.kubernetes.io/local-config: "true"

用于:所有对象

此注释用于清单中,以将对象标记为不应提交到 Kubernetes API 的本地配置。

此注释的值为 "true" 表示该对象仅由客户端工具使用,不应提交到 API 服务器。

"false" 可用于声明即使在通常情况下应被认为是本地配置时,也应将该对象提交到 API 服务器。

此注释是 Kubernetes 资源模型 (KRM) 函数规范的一部分,该规范由 Kustomize 和类似的第三方工具使用。例如,Kustomize 会从其最终构建输出中删除具有此注释的对象。

container.apparmor.security.beta.kubernetes.io/*(已弃用)

类型:注释

示例:container.apparmor.security.beta.kubernetes.io/my-container: my-custom-profile

用于:Pod

此注释允许您为 Kubernetes Pod 中的容器指定 AppArmor 安全配置文件。从 Kubernetes v1.30 开始,应使用 appArmorProfile 字段设置此项。要了解更多信息,请参阅 AppArmor 教程。该教程演示了如何使用 AppArmor 来限制容器的功能和访问权限。

指定的配置文件规定了容器化进程必须遵守的一组规则和限制。这有助于为您的容器实施安全策略和隔离。

internal.config.kubernetes.io/* (保留前缀)

类型:注释

用于:所有对象

此前缀保留供根据 Kubernetes 资源模型 (KRM) 函数规范充当协调器的工具内部使用。带有此前缀的注释在协调过程中是内部的,不会持久保存到文件系统上的清单中。换句话说,协调器工具应在从本地文件系统读取文件时设置这些注释,并在将函数的输出写回文件系统时删除它们。

KRM 函数**不得**修改带有此前缀的注释,除非对特定注释另有说明。这使协调器工具能够添加其他内部注释,而无需更改现有函数。

internal.config.kubernetes.io/path

类型:注释

示例:internal.config.kubernetes.io/path: "relative/file/path.yaml"

用于:所有对象

此注释记录了加载对象的清单文件的斜杠分隔、与操作系统无关的相对路径。该路径相对于文件系统上的固定位置,由协调器工具确定。

此注释是 Kubernetes 资源模型 (KRM) 函数规范的一部分,该规范由 Kustomize 和类似的第三方工具使用。

KRM 函数**不应**修改输入对象上的此注释,除非它正在修改引用的文件。KRM 函数**可以**在它生成的物体上包含此注释。

internal.config.kubernetes.io/index

类型:注释

示例:internal.config.kubernetes.io/index: "2"

用于:所有对象

此注释记录了包含对象的 YAML 文档在加载对象的清单文件中的零索引位置。请注意,YAML 文档由三个连字符 (---) 分隔,每个文档可以包含一个对象。当未指定此注释时,隐含值为 0。

此注释是 Kubernetes 资源模型 (KRM) 函数规范的一部分,该规范由 Kustomize 和类似的第三方工具使用。

KRM 函数**不应**修改输入对象上的此注释,除非它正在修改引用的文件。KRM 函数**可以**在它生成的物体上包含此注释。

kubernetes.io/arch

类型:标签

示例:kubernetes.io/arch: "amd64"

用于:节点

Kubelet 使用 Go 定义的 runtime.GOARCH 来填充此项。如果您混合使用 ARM 和 x86 节点,这将非常有用。

kubernetes.io/os

类型:标签

示例:kubernetes.io/os: "linux"

用于:节点、Pod

对于节点,Kubelet 使用 Go 定义的 runtime.GOOS 来填充此项。如果您在集群中混合使用操作系统(例如:混合使用 Linux 和 Windows 节点),这将非常有用。

您也可以在 Pod 上设置此标签。Kubernetes 允许您为此标签设置任何值;如果您使用此标签,您仍然应该将其设置为与该 Pod 实际使用的操作系统的 Go runtime.GOOS 字符串一致。

当 Pod 的 kubernetes.io/os 标签值与节点上的标签值不匹配时,节点上的 Kubelet 不会接受该 Pod。但是,Kube-scheduler 不会考虑这一点。或者,如果您指定了 Pod 操作系统,而该操作系统与运行该 Kubelet 的节点的操作系统不同,则 Kubelet 会拒绝运行该 Pod。只需查找 Pod 操作系统 以获取更多详细信息。

kubernetes.io/metadata.name

类型:标签

示例:kubernetes.io/metadata.name: "mynamespace"

用于:命名空间

Kubernetes API 服务器(是 控制平面 的一部分)在所有命名空间上设置此标签。标签值设置为命名空间的名称。您无法更改此标签的值。

如果您想使用标签 选择器 针对特定命名空间,这将非常有用。

kubernetes.io/limit-ranger

类型:注释

示例:kubernetes.io/limit-ranger: "LimitRanger plugin set: cpu, memory request for container nginx; cpu, memory limit for container nginx"

用于:Pod

Kubernetes 默认情况下不提供任何资源限制,这意味着除非您明确定义限制,否则您的容器可以消耗无限的 CPU 和内存。您可以为 Pod 定义默认请求或默认限制。您可以通过在相关命名空间中创建 LimitRange 来实现。在您定义 LimitRange 之后部署的 Pod 将应用这些限制。注释 kubernetes.io/limit-ranger 记录了为 Pod 指定了资源默认值,并且已成功应用。有关更多详细信息,请阅读有关 LimitRanges 的内容。

kubernetes.io/config.hash

类型:注释

示例:kubernetes.io/config.hash: "df7cc47f8477b6b1226d7d23a904867b"

用于:Pod

当 Kubelet 根据给定清单创建静态 Pod 时,它会将此注释附加到静态 Pod。注释的值是 Pod 的 UID。请注意,Kubelet 还将 .spec.nodeName 设置为当前节点名称,就好像 Pod 已调度到该节点一样。

kubernetes.io/config.mirror

类型:注释

示例:kubernetes.io/config.mirror: "df7cc47f8477b6b1226d7d23a904867b"

用于:Pod

对于 Kubelet 在节点上创建的静态 Pod,将在 API 服务器上创建 镜像 Pod。Kubelet 添加一个注释来指示此 Pod 实际上是一个镜像 Pod。注释值从 kubernetes.io/config.hash 注释复制,该注释是 Pod 的 UID。

当更新带有此注释设置的 Pod 时,无法更改或删除该注释。如果 Pod 没有此注释,则无法在 Pod 更新期间添加它。

kubernetes.io/config.source

类型:注释

示例:kubernetes.io/config.source: "file"

用于:Pod

此注释由 Kubelet 添加,以指示 Pod 来自何处。对于静态 Pod,注释值可以是 filehttp 之一,具体取决于 Pod 清单的位置。对于在 API 服务器上创建然后调度到当前节点的 Pod,注释值为 api

kubernetes.io/config.seen

类型:注释

示例:kubernetes.io/config.seen: "2023-10-27T04:04:56.011314488Z"

用于:Pod

当 Kubelet 第一次看到 Pod 时,它可能会在 Pod 中添加此注释,其值为当前时间戳,格式为 RFC3339。

addonmanager.kubernetes.io/mode

类型:标签

示例:addonmanager.kubernetes.io/mode: "Reconcile"

用于:所有对象

要指定如何管理附加组件,您可以使用 addonmanager.kubernetes.io/mode 标签。此标签可以具有以下三个值之一:ReconcileEnsureExistsIgnore

  • Reconcile:附加组件资源将定期与预期状态进行协调。如果有任何差异,附加组件管理器将根据需要重新创建、重新配置或删除资源。如果未指定标签,这是默认模式。
  • EnsureExists:附加组件资源将仅检查是否存在,但在创建后不会修改。当没有具有该名称的资源实例时,附加组件管理器将创建或重新创建资源。
  • Ignore:附加组件资源将被忽略。此模式适用于与附加组件管理器不兼容或由其他控制器管理的附加组件。

有关更多详细信息,请参阅 Addon-manager

beta.kubernetes.io/arch (已弃用)

类型:标签

此标签已弃用。请改用 kubernetes.io/arch

beta.kubernetes.io/os (已弃用)

类型:标签

此标签已弃用。请改用 kubernetes.io/os

kube-aggregator.kubernetes.io/automanaged

类型:标签

示例:kube-aggregator.kubernetes.io/automanaged: "onstart"

用于:APIService

kube-apiserver 在 API 服务器自动创建的任何 APIService 对象上设置此标签。该标签标记了控制平面应该如何管理该 APIService。您不应该自己添加、修改或删除此标签。

有两个可能的值

  • onstart:API 服务器应该在 API 服务器启动时协调 APIService,但其他情况下则不应协调。
  • true:API 服务器应该持续协调此 APIService。

service.alpha.kubernetes.io/tolerate-unready-endpoints (已弃用)

类型:注释

用于:StatefulSet

服务上的此注释表示 Endpoints 控制器是否应该继续为未就绪的 Pod 创建 Endpoints。这些服务的 Endpoints 保留其 DNS 记录,并从 Kubelet 启动 Pod 中的所有容器并将其标记为正在运行的那一刻起,一直到 Kubelet 停止所有容器并将 Pod 从 API 服务器中删除为止,继续接收来自服务的流量。

kubernetes.io/hostname

类型:标签

示例:kubernetes.io/hostname: "ip-172-20-114-199.ec2.internal"

用于:节点

Kubelet 使用节点的主机名来填充此标签。请注意,主机名可以通过将 --hostname-override 标志传递给 kubelet 来从“实际”主机名更改。

此标签也用作拓扑层次结构的一部分。有关更多信息,请参阅 topology.kubernetes.io/zone

kubernetes.io/change-cause

类型:注释

示例:kubernetes.io/change-cause: "kubectl edit --record deployment foo"

用于:所有对象

此注释是对更改原因的最佳猜测。

当将 --record 添加到可能更改对象的 kubectl 命令时,它会被填充。

kubernetes.io/description

类型:注释

示例:kubernetes.io/description: "Description of K8s object."

用于:所有对象

此注释用于描述给定对象的特定行为。

kubernetes.io/enforce-mountable-secrets

类型:注释

示例:kubernetes.io/enforce-mountable-secrets: "true"

用于:ServiceAccount

此注释的值必须为 true 才能生效。当您将此注释设置为“true”时,Kubernetes 会对以该 ServiceAccount 身份运行的 Pod 实施以下规则

  1. 作为卷挂载的 Secret 必须列在 ServiceAccount 的 secrets 字段中。
  2. 容器(包括 sidecar 容器和 init 容器)的 envFrom 中引用的 Secret 也必须列在 ServiceAccount 的 secrets 字段中。如果 Pod 中的任何容器引用了 ServiceAccount 的 secrets 字段中未列出的 Secret(即使引用被标记为 optional),则 Pod 将无法启动,并且会生成一个指示不符合要求的 Secret 引用的错误。
  3. Pod 的 imagePullSecrets 中引用的 Secret 必须存在于 ServiceAccount 的 imagePullSecrets 字段中,否则 Pod 将无法启动,并且会生成一个指示不符合要求的镜像拉取 Secret 引用的错误。

创建或更新 Pod 时,会检查这些规则。如果 Pod 不符合这些规则,它将无法启动,您会看到错误消息。如果 Pod 正在运行,并且您将 kubernetes.io/enforce-mountable-secrets 注释更改为 true,或者您编辑了关联的 ServiceAccount 以删除对 Pod 正在使用的 Secret 的引用,则 Pod 将继续运行。

node.kubernetes.io/exclude-from-external-load-balancers

类型:标签

示例:node.kubernetes.io/exclude-from-external-load-balancers

用于:节点

您可以将标签添加到特定的工作节点,以将其从外部负载均衡器使用的后端服务器列表中排除。以下命令可用于将工作节点从后端集中的后端服务器列表中排除

kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers=true

controller.kubernetes.io/pod-deletion-cost

类型:注释

示例:controller.kubernetes.io/pod-deletion-cost: "10"

用于:Pod

此注释用于设置 Pod 删除成本,允许用户影响 ReplicaSet 的缩容顺序。注释值解析为 int32 类型。

cluster-autoscaler.kubernetes.io/enable-ds-eviction

类型:注释

示例:cluster-autoscaler.kubernetes.io/enable-ds-eviction: "true"

用于:Pod

此注释控制 ClusterAutoscaler 是否应该驱逐 DaemonSet Pod。此注释需要在 DaemonSet 清单中的 DaemonSet Pod 上指定。当此注释设置为 "true" 时,ClusterAutoscaler 被允许驱逐 DaemonSet Pod,即使其他规则通常会阻止这种情况。要禁止 ClusterAutoscaler 驱逐 DaemonSet Pod,您可以将此注释设置为 "false",以用于重要的 DaemonSet Pod。如果未设置此注释,则 ClusterAutoscaler 将遵循其整体行为(即根据其配置驱逐 DaemonSet)。

kubernetes.io/ingress-bandwidth

类型:注释

示例:kubernetes.io/ingress-bandwidth: 10M

用于:Pod

您可以将服务质量流量整形应用于 Pod,并有效地限制其可用带宽。对 Pod 的入站流量通过整形排队数据包来处理,以有效地处理数据。要限制 Pod 上的带宽,请编写一个对象定义 JSON 文件,并使用 kubernetes.io/ingress-bandwidth 注释指定数据流量速度。用于指定入站速率的单位是每秒比特数,作为 数量。例如,10M 表示每秒 10 兆比特。

kubernetes.io/egress-bandwidth

类型:注释

示例:kubernetes.io/egress-bandwidth: 10M

用于:Pod

来自 Pod 的出站流量通过策略处理,该策略只是丢弃超过配置速率的数据包。您对 Pod 设置的限制不会影响其他 Pod 的带宽。要限制 Pod 上的带宽,请编写一个对象定义 JSON 文件,并使用 kubernetes.io/egress-bandwidth 注释指定数据流量速度。用于指定出站速率的单位是每秒比特数,作为 数量。例如,10M 表示每秒 10 兆比特。

beta.kubernetes.io/instance-type(已弃用)

类型:标签

node.kubernetes.io/instance-type

类型:标签

示例:node.kubernetes.io/instance-type: "m3.medium"

用于:节点

Kubelet 使用云提供商定义的实例类型填充此项。仅当您使用云提供商时才会设置此项。如果您想将某些工作负载定位到某些实例类型,此设置非常有用,但通常您希望依靠 Kubernetes 调度程序执行基于资源的调度。您应该以属性为目标进行调度,而不是以实例类型为目标(例如:需要 GPU,而不是需要 g2.2xlarge)。

failure-domain.beta.kubernetes.io/region(已弃用)

类型:标签

failure-domain.beta.kubernetes.io/zone(已弃用)

类型:标签

pv.kubernetes.io/bind-completed

类型:注释

示例:pv.kubernetes.io/bind-completed: "yes"

用于:PersistentVolumeClaim

当此注释在 PersistentVolumeClaim (PVC) 上设置时,表示 PVC 的生命周期已通过初始绑定设置。当存在时,该信息会改变控制平面解释 PVC 对象状态的方式。此注释的值对 Kubernetes 并不重要。

pv.kubernetes.io/bound-by-controller

类型:注释

示例:pv.kubernetes.io/bound-by-controller: "yes"

用于:PersistentVolume、PersistentVolumeClaim

如果此注释在 PersistentVolume 或 PersistentVolumeClaim 上设置,则表示存储绑定(PersistentVolume → PersistentVolumeClaim 或 PersistentVolumeClaim → PersistentVolume)是由 控制器 安装的。如果未设置注释,并且存在存储绑定,则缺少该注释意味着绑定是手动完成的。此注释的值并不重要。

pv.kubernetes.io/provisioned-by

类型:注释

示例:pv.kubernetes.io/provisioned-by: "kubernetes.io/rbd"

用于:PersistentVolume

此注释添加到由 Kubernetes 动态配置的 PersistentVolume(PV)。它的值是创建卷的卷插件的名称。它既服务于用户(显示 PV 来自哪里),也服务于 Kubernetes(在决策中识别动态配置的 PV)。

pv.kubernetes.io/migrated-to

类型:注释

示例:pv.kubernetes.io/migrated-to: pd.csi.storage.gke.io

用于:PersistentVolume、PersistentVolumeClaim

它被添加到 PersistentVolume(PV) 和 PersistentVolumeClaim(PVC),这些对象应该通过 CSIMigration 功能网关由其相应的 CSI 驱动程序动态配置/删除。当设置此注释时,Kubernetes 组件将“停止”,而 external-provisioner 将对这些对象进行操作。

statefulset.kubernetes.io/pod-name

类型:标签

示例:statefulset.kubernetes.io/pod-name: "mystatefulset-7"

用于:Pod

当 StatefulSet 控制器为 StatefulSet 创建 Pod 时,控制平面会在此 Pod 上设置此标签。标签的值是正在创建的 Pod 的名称。

有关更多详细信息,请参阅 StatefulSet 主题中的 Pod 名称标签

scheduler.alpha.kubernetes.io/node-selector

类型:注释

示例:scheduler.alpha.kubernetes.io/node-selector: "name-of-node-selector"

用于:Namespace

PodNodeSelector 使用此注释键将节点选择器分配给命名空间中的 Pod。

topology.kubernetes.io/region

类型:标签

示例:topology.kubernetes.io/region: "us-east-1"

用于:Node、PersistentVolume

请参阅 topology.kubernetes.io/zone

topology.kubernetes.io/zone

类型:标签

示例:topology.kubernetes.io/zone: "us-east-1c"

用于:Node、PersistentVolume

在 Node 上kubelet 或外部 cloud-controller-manager 使用来自云提供商的信息填充此项。仅当您使用云提供商时才会设置此项。但是,如果您认为在您的拓扑中这样做有意义,您可以考虑在节点上设置此项。

在 PersistentVolume 上:支持拓扑的卷配置程序会自动在 PersistentVolume 上设置节点亲和性约束。

区域表示一个逻辑故障域。Kubernetes 集群通常跨越多个区域以提高可用性。虽然区域的精确定义留给基础设施实现,但区域的常见属性包括区域内非常低的网络延迟、区域内无成本网络流量以及与其他区域的故障独立性。例如,区域内的节点可能共享一个网络交换机,但不同区域的节点不应该共享。

区域表示一个更大的域,由一个或多个区域组成。Kubernetes 集群很少跨越多个区域,虽然区域或区域的精确定义留给基础设施实现,但区域的常见属性包括它们之间的网络延迟高于它们内部的网络延迟、它们之间网络流量的非零成本以及与其他区域或区域的故障独立性。例如,区域内的节点可能共享电源基础设施(例如 UPS 或发电机),但不同区域的节点通常不会共享。

Kubernetes 对区域和区域的结构做了一些假设

  1. 区域和区域是分层的:区域是区域的严格子集,任何区域都不能位于 2 个区域中
  2. 区域名称在所有区域中都是唯一的;例如,区域“africa-east-1”可能包含区域“africa-east-1a”和“africa-east-1b”

可以安全地假设拓扑标签不会更改。即使标签是严格可变的,它们的使用者也可以假设给定节点不会在区域之间移动,除非被销毁并重新创建。

Kubernetes 可以通过多种方式使用此信息。例如,调度程序会自动尝试将单区域集群中的 ReplicaSet 中的 Pod 分散到不同的节点(以减少节点故障的影响,请参阅 kubernetes.io/hostname)。对于多区域集群,这种分散行为也适用于区域(以减少区域故障的影响)。这是通过SelectorSpreadPriority 实现的。

SelectorSpreadPriority 是一种尽力而为的放置方式。如果集群中的区域是异构的(例如:节点数量不同、节点类型不同或 Pod 资源需求不同),这种放置方式可能会阻止 Pod 在区域之间均匀分散。如果需要,可以使用同构区域(相同数量和类型的节点)来降低不均匀分散的可能性。

调度程序(通过VolumeZonePredicate 谓词)还会确保声明给定卷的 Pod 仅放置在与该卷相同的区域中。卷不能跨区域附加。

如果 PersistentVolumeLabel 不支持自动标记您的持久卷,您应该考虑手动添加标签(或添加对 PersistentVolumeLabel 的支持)。使用 PersistentVolumeLabel,调度程序会阻止 Pod 在不同的区域挂载卷。如果您的基础设施没有此约束,则根本不需要将区域标签添加到卷中。

volume.beta.kubernetes.io/storage-provisioner(已弃用)

类型:注释

示例:volume.beta.kubernetes.io/storage-provisioner: "k8s.io/minikube-hostpath"

用于:PersistentVolumeClaim

此注释已在 v1.23 中弃用。请参阅 volume.kubernetes.io/storage-provisioner

volume.beta.kubernetes.io/storage-class(已弃用)

类型:注释

示例:volume.beta.kubernetes.io/storage-class: "example-class"

用于:PersistentVolume、PersistentVolumeClaim

此注释可用于持久卷 (PV) 或持久卷声明 (PVC) 以指定 存储类 的名称。当同时指定 storageClassName 属性和 volume.beta.kubernetes.io/storage-class 注释时,注释 volume.beta.kubernetes.io/storage-class 优先于 storageClassName 属性。

此注释已弃用。改为为持久卷声明或持久卷设置 storageClassName 字段

volume.beta.kubernetes.io/mount-options(已弃用)

类型:注释

示例:volume.beta.kubernetes.io/mount-options: "ro,soft"

用于:PersistentVolume

Kubernetes 管理员可以在将持久卷挂载到节点时,为其指定其他 挂载选项

volume.kubernetes.io/storage-provisioner

类型:注释

用于:PersistentVolumeClaim

此注释将添加到应该动态预配的 PVC。其值是应该为该 PVC 预配卷的卷插件的名称。

volume.kubernetes.io/selected-node

类型:注释

用于:PersistentVolumeClaim

此注释将添加到由调度程序触发以进行动态预配的 PVC。其值是所选节点的名称。

volumes.kubernetes.io/controller-managed-attach-detach

类型:注释

用于:节点

如果节点具有注释 volumes.kubernetes.io/controller-managed-attach-detach,则其存储挂载和卸载操作由卷挂载/卸载 控制器 管理。

注释的值并不重要。

node.kubernetes.io/windows-build

类型:标签

示例:node.kubernetes.io/windows-build: "10.0.17763"

用于:节点

当 kubelet 在 Microsoft Windows 上运行时,它会自动标记其节点以记录正在使用的 Windows Server 版本。

标签的值采用“主版本号.次版本号.内部版本号”格式。

service.kubernetes.io/headless

类型:标签

示例:service.kubernetes.io/headless: ""

用于:端点

当拥有服务的 Service 为无头服务时,控制平面会将此标签添加到端点对象。要了解更多信息,请阅读 无头服务

service.kubernetes.io/topology-aware-hints(已弃用)

示例:service.kubernetes.io/topology-aware-hints: "Auto"

用于:服务

此注释用于在服务上启用拓扑感知提示。拓扑感知提示已重命名:该概念现在称为 拓扑感知路由。在服务上将注释设置为 Auto 会配置 Kubernetes 控制平面,以便在与该服务关联的 EndpointSlices 上添加拓扑提示。您也可以将注释显式设置为 Disabled

如果您运行的是早于 1.30 的 Kubernetes 版本,请查看该 Kubernetes 版本的文档,了解该版本中拓扑感知路由的工作方式。

此注释没有其他有效值。如果您不希望服务使用拓扑感知提示,请不要添加此注释。

service.kubernetes.io/topology-mode

类型:注释

示例:service.kubernetes.io/topology-mode: Auto

用于:服务

此注释提供了一种方法来定义服务处理网络拓扑的方式;例如,您可以配置服务,以便 Kubernetes 优先将客户端和服务器之间的流量保持在单个拓扑区域内。在某些情况下,这有助于降低成本或提高网络性能。

有关更多详细信息,请参阅 拓扑感知路由

kubernetes.io/service-name

类型:标签

示例:kubernetes.io/service-name: "my-website"

用于:EndpointSlice

Kubernetes 使用此标签将 EndpointSlices服务 关联。

此标签记录了 EndpointSlice 支持的服务的 名称。所有 EndpointSlices 应将此标签设置为其关联服务的名称。

kubernetes.io/service-account.name

类型:注释

示例:kubernetes.io/service-account.name: "sa-name"

用于:Secret

此注释记录了令牌(存储在类型为 kubernetes.io/service-account-token 的 Secret 中)所代表的 ServiceAccount 的 名称

kubernetes.io/service-account.uid

类型:注释

示例:kubernetes.io/service-account.uid: da68f9c6-9d26-11e7-b84e-002dc52800da

用于:Secret

此注释记录了令牌(存储在类型为 kubernetes.io/service-account-token 的 Secret 中)所代表的 ServiceAccount 的 唯一 ID

kubernetes.io/legacy-token-last-used

类型:标签

示例:kubernetes.io/legacy-token-last-used: 2022-10-24

用于:Secret

控制平面仅将此标签添加到类型为 kubernetes.io/service-account-token 的 Secret。此标签的值记录了控制平面上次看到客户端使用服务帐户令牌进行身份验证的请求的日期(ISO 8601 格式,UTC 时区)。

如果旧令牌最后一次使用是在集群获得该功能之前(在 Kubernetes v1.26 中添加),则不会设置该标签。

kubernetes.io/legacy-token-invalid-since

类型:标签

示例:kubernetes.io/legacy-token-invalid-since: 2023-10-27

用于:Secret

控制平面会自动将此标签添加到类型为 kubernetes.io/service-account-token 的自动生成的 Secret。此标签将基于 Secret 的令牌标记为对身份验证无效。此标签的值记录了控制平面检测到自动生成的 Secret 在指定持续时间内(默认为一年)未被使用时的日期(ISO 8601 格式,UTC 时区)。

endpointslice.kubernetes.io/managed-by

类型:标签

示例:endpointslice.kubernetes.io/managed-by: endpointslice-controller.k8s.io

用于:EndpointSlices

该标签用于指示管理 EndpointSlice 的控制器或实体。此标签旨在使不同的 EndpointSlice 对象能够由同一个集群中的不同控制器或实体管理。

endpointslice.kubernetes.io/skip-mirror

类型:标签

示例:endpointslice.kubernetes.io/skip-mirror: "true"

用于:端点

可以在 Endpoints 资源上将标签设置为 "true",以指示 EndpointSliceMirroring 控制器不应使用 EndpointSlices 镜像此资源。

service.kubernetes.io/service-proxy-name

类型:标签

示例:service.kubernetes.io/service-proxy-name: "foo-bar"

用于:服务

kube-proxy 具有此标签,用于自定义代理,该代理将服务控制委托给自定义代理。

experimental.windows.kubernetes.io/isolation-type(已弃用)

类型:注释

示例:experimental.windows.kubernetes.io/isolation-type: "hyperv"

用于:Pod

该注释用于使用 Hyper-V 隔离运行 Windows 容器。

ingressclass.kubernetes.io/is-default-class

类型:注释

示例:ingressclass.kubernetes.io/is-default-class: "true"

用于:IngressClass

当 IngressClass 资源将此注释设置为 "true" 时,没有指定类的新的 Ingress 资源将被分配此默认类。

kubernetes.io/ingress.class(已弃用)

类型:注释

用于:Ingress

storageclass.kubernetes.io/is-default-class

类型:注释

示例:storageclass.kubernetes.io/is-default-class: "true"

用于:StorageClass

当单个 StorageClass 资源将此注释设置为 "true" 时,没有指定类的新的 PersistentVolumeClaim 资源将被分配此默认类。

alpha.kubernetes.io/provided-node-ip(alpha)

类型:注释

示例:alpha.kubernetes.io/provided-node-ip: "10.0.0.1"

用于:节点

kubelet 可以将此注释设置为节点,以表示其配置的 IPv4 和/或 IPv6 地址。

当 kubelet 使用 --cloud-provider 标志启动并将其设置为任何值(包括外部和传统的树内云提供商)时,它会将此注释设置为节点,以表示从命令行标志(--node-ip)设置的 IP 地址。此 IP 由云控制器管理器使用云提供商验证为有效。

batch.kubernetes.io/job-completion-index

类型:注释、标签

示例:batch.kubernetes.io/job-completion-index: "3"

用于:Pod

kube-controller-manager 中的作业控制器将此设置为使用索引 完成模式 创建的 Pod 的标签和注释。

请注意,必须启用 PodIndexLabel 功能门,才能将其添加为 pod 标签,否则它将只是一种注释。

batch.kubernetes.io/cronjob-scheduled-timestamp

类型:注释

示例:batch.kubernetes.io/cronjob-scheduled-timestamp: "2016-05-19T03:00:00-07:00"

用于:由 CronJobs 控制的作业和 Pod

此注释用于记录作业的原始(预期)创建时间戳,当该作业是 CronJob 的一部分时。控制平面将该值设置为 RFC3339 格式的该时间戳。如果作业属于指定了时区的 CronJob,则时间戳采用该时区。否则,时间戳采用控制器管理器的本地时间。

kubectl.kubernetes.io/default-container

类型:注释

示例:kubectl.kubernetes.io/default-container: "front-end-app"

注释的值是此 Pod 的默认容器名称。例如,kubectl logskubectl exec 不带 -c--container 标志将使用此默认容器。

kubectl.kubernetes.io/default-logs-container(已弃用)

类型:注释

示例:kubectl.kubernetes.io/default-logs-container: "front-end-app"

注释的值是此 Pod 的默认日志记录容器名称。例如,kubectl logs 不带 -c--container 标志将使用此默认容器。

kubectl.kubernetes.io/last-applied-configuration

类型:注释

示例:请参阅以下代码段

    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"example","namespace":"default"},"spec":{"selector":{"matchLabels":{"app.kubernetes.io/name":foo}},"template":{"metadata":{"labels":{"app.kubernetes.io/name":"foo"}},"spec":{"containers":[{"image":"container-registry.example/foo-bar:1.42","name":"foo-bar","ports":[{"containerPort":42}]}]}}}}      

用于:所有对象

kubectl 命令行工具使用此注释作为跟踪更改的传统机制。该机制已被 服务器端应用 取代。

kubectl.kubernetes.io/restartedAt

类型:注释

示例:kubectl.kubernetes.io/restartedAt: "2024-06-21T17:27:41Z"

用于:部署、副本集、有状态集、守护程序集、Pod

此注释包含资源(部署、副本集、有状态集或守护程序集)的最新重启时间,其中 kubectl 触发了滚动更新以强制创建新的 Pod。命令 kubectl rollout restart <RESOURCE> 通过使用此注释修补所有资源 Pod 的模板元数据来触发重启。在上面的示例中,最新的重启时间显示为 2024 年 6 月 21 日 17:27:41 UTC。

您不应该假设此注释代表最近更新的日期/时间;自上次手动触发的滚动更新以来,可能进行了其他更改。

如果您在 Pod 上手动设置此注释,则不会发生任何事情。重启副作用来自工作负载管理和 Pod 模板的工作方式。

endpoints.kubernetes.io/over-capacity

类型:注释

示例:endpoints.kubernetes.io/over-capacity:truncated

用于:端点

如果与之关联的 服务 拥有超过 1000 个后端端点,控制平面 会将此注释添加到 端点 对象中。该注释表明端点对象已超过容量,端点数量已被截断为 1000 个。

如果后端端点数量降至 1000 个以下,控制平面将删除此注释。

endpoints.kubernetes.io/last-change-trigger-time

类型:注释

示例:endpoints.kubernetes.io/last-change-trigger-time: "2023-07-20T04:45:21Z"

用于:端点

此注释设置为 端点 对象,表示时间戳(时间戳以 RFC 3339 日期时间字符串格式存储。例如,'2018-10-22T19:32:52.1Z')。这是触发对端点对象进行更改的某些 Pod 或服务对象最后一次更改的时间戳。

control-plane.alpha.kubernetes.io/leader (已弃用)

类型:注释

示例:control-plane.alpha.kubernetes.io/leader={"holderIdentity":"controller-0","leaseDurationSeconds":15,"acquireTime":"2023-01-19T13:12:57Z","renewTime":"2023-01-19T13:13:54Z","leaderTransitions":1}

用于:端点

控制平面 以前在 端点 对象上设置注释。此注释提供了以下详细信息

  • 当前领导者是谁。
  • 获取当前领导权的时间。
  • 租约(领导权)的持续时间(以秒为单位)。
  • 当前租约(当前领导权)应续订的时间。
  • 过去发生的领导权转换次数。

Kubernetes 现在使用 租约 来管理 Kubernetes 控制平面的领导者分配。

batch.kubernetes.io/job-tracking (已弃用)

类型:注释

示例:batch.kubernetes.io/job-tracking: ""

用于:作业

作业上存在此注释,用于指示控制平面 使用终结器跟踪作业状态。添加或删除此注释不再有任何影响(Kubernetes v1.27 及更高版本)所有作业都使用终结器进行跟踪。

job-name (已弃用)

类型:标签

示例:job-name: "pi"

用于:作业和由作业控制的 Pod

controller-uid (已弃用)

类型:标签

示例:controller-uid: "$UID"

用于:作业和由作业控制的 Pod

batch.kubernetes.io/job-name

类型:标签

示例:batch.kubernetes.io/job-name: "pi"

用于:作业和由作业控制的 Pod

此标签用作一种用户友好的方式,用于获取与作业相对应的 Pod。job-name 来自作业的 name,并提供了一种简单的方法来获取与作业相对应的 Pod。

batch.kubernetes.io/controller-uid

类型:标签

示例:batch.kubernetes.io/controller-uid: "$UID"

用于:作业和由作业控制的 Pod

此标签用作一种编程方式,用于获取与作业相对应的所有 Pod。
controller-uid 是一个唯一的标识符,它在 selector 字段中设置,以便作业控制器可以获取所有相应的 Pod。

scheduler.alpha.kubernetes.io/defaultTolerations

类型:注释

示例:scheduler.alpha.kubernetes.io/defaultTolerations: '[{"operator": "Equal", "value": "value1", "effect": "NoSchedule", "key": "dedicated-node"}]'

用于:Namespace

此注释需要启用 PodTolerationRestriction 准入控制器。此注释键允许将容忍度分配给命名空间,并且在此命名空间中创建的任何新 Pod 都将添加这些容忍度。

scheduler.alpha.kubernetes.io/tolerationsWhitelist

类型:注释

示例:scheduler.alpha.kubernetes.io/tolerationsWhitelist: '[{"operator": "Exists", "effect": "NoSchedule", "key": "dedicated-node"}]'

用于:Namespace

此注释仅在启用(Alpha)PodTolerationRestriction 准入控制器时有用。注释值是一个 JSON 文档,它定义了其注释的命名空间允许的容忍度列表。当您创建 Pod 或修改其容忍度时,API 服务器会检查容忍度以查看它们是否在允许列表中。仅当检查成功时,才会承认 pod。

scheduler.alpha.kubernetes.io/preferAvoidPods (已弃用)

类型:注释

用于:节点

此注释需要启用 NodePreferAvoidPods 调度插件。该插件自 Kubernetes 1.22 起已弃用。请改用 污点和容忍度

node.kubernetes.io/not-ready

类型:污点

示例:node.kubernetes.io/not-ready: "NoExecute"

用于:节点

节点控制器通过监控节点的运行状况来检测节点是否已准备好,并相应地添加或删除此污点。

node.kubernetes.io/unreachable

类型:污点

示例:node.kubernetes.io/unreachable: "NoExecute"

用于:节点

节点控制器将污点添加到与 节点条件 ReadyUnknown 相对应的节点。

node.kubernetes.io/unschedulable

类型:污点

示例:node.kubernetes.io/unschedulable: "NoSchedule"

用于:节点

在初始化节点时,将向节点添加污点,以避免竞争条件。

node.kubernetes.io/memory-pressure

类型:污点

示例:node.kubernetes.io/memory-pressure: "NoSchedule"

用于:节点

kubelet 根据在节点上观察到的 memory.availableallocatableMemory.available 来检测内存压力。然后将观察到的值与可以在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/删除节点条件和污点。

node.kubernetes.io/disk-pressure

类型:污点

示例:node.kubernetes.io/disk-pressure :"NoSchedule"

用于:节点

kubelet 根据在节点上观察到的 imagefs.availableimagefs.inodesFreenodefs.availablenodefs.inodesFree(仅限 Linux)来检测磁盘压力。然后将观察到的值与可以在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/删除节点条件和污点。

node.kubernetes.io/network-unavailable

类型:污点

示例:node.kubernetes.io/network-unavailable: "NoSchedule"

用于:节点

最初由 kubelet 设置,当使用的云提供商指示需要额外的网络配置时。只有当云上的路由配置正确后,云提供商才会删除污点。

node.kubernetes.io/pid-pressure

类型:污点

示例:node.kubernetes.io/pid-pressure: "NoSchedule"

用于:节点

kubelet 检查 /proc/sys/kernel/pid_max 大小的 D 值和 Kubernetes 在节点上消耗的 PID,以获取称为 pid.available 指标的可用 PID 数量。然后将该指标与可以在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/删除节点条件和污点。

node.kubernetes.io/out-of-service

类型:污点

示例:node.kubernetes.io/out-of-service:NoExecute

用于:节点

用户可以手动将污点添加到节点,将其标记为停用。如果在 kube-controller-manager 上启用了 NodeOutOfServiceVolumeDetach 功能门控,并且节点使用此污点标记为停用,则如果节点上没有匹配的容忍度,则节点上的 Pod 将被强制删除,并且节点上终止的 Pod 的卷分离操作将立即发生。这允许节点上的 Pod 在另一个节点上快速恢复。

node.cloudprovider.kubernetes.io/uninitialized

类型:污点

示例:node.cloudprovider.kubernetes.io/uninitialized: "NoSchedule"

用于:节点

在节点上设置此污点,将其标记为不可用,当 kubelet 使用“外部”云提供商启动时,直到来自云控制器管理器的控制器初始化此节点,然后删除污点。

node.cloudprovider.kubernetes.io/shutdown

类型:污点

示例:node.cloudprovider.kubernetes.io/shutdown: "NoSchedule"

用于:节点

如果节点处于云提供商指定的关闭状态,则节点将使用 node.cloudprovider.kubernetes.io/shutdownNoSchedule 的污点效果相应地进行标记。

feature.node.kubernetes.io/*

类型:标签

示例:feature.node.kubernetes.io/network-sriov.capable: "true"

用于:节点

这些标签由节点功能发现 (NFD) 组件用于在节点上宣传功能。所有内置标签都使用 feature.node.kubernetes.io 标签命名空间,并具有 feature.node.kubernetes.io/<feature-name>: "true" 格式。NFD 具有许多扩展点,用于创建供应商和应用程序特定的标签。有关详细信息,请参阅 自定义指南

nfd.node.kubernetes.io/master.version

类型:注释

示例:nfd.node.kubernetes.io/master.version: "v0.6.0"

用于:节点

对于调度了节点功能发现 (NFD) 主节点 的节点,此注释记录了 NFD 主节点的版本。它仅用于信息性用途。

nfd.node.kubernetes.io/worker.version

类型:注释

示例:nfd.node.kubernetes.io/worker.version: "v0.4.0"

用于:节点

此注释记录了节点功能发现的 工作节点 的版本(如果有),如果该节点上运行了工作节点。它仅用于信息性用途。

nfd.node.kubernetes.io/feature-labels

类型:注释

示例:nfd.node.kubernetes.io/feature-labels: "cpu-cpuid.ADX,cpu-cpuid.AESNI,cpu-hardware_multithreading,kernel-version.full"

用于:节点

此注释记录了由 节点功能发现 (NFD) 管理的节点功能标签的逗号分隔列表。NFD 将其用于内部机制。您不应该自己编辑此注释。

nfd.node.kubernetes.io/extended-resources

类型:注释

示例:nfd.node.kubernetes.io/extended-resources: "accelerator.acme.example/q500,example.com/coprocessor-fx5"

用于:节点

此注释记录了由 节点功能发现 (NFD) 管理的 扩展资源 的逗号分隔列表。NFD 将其用于内部机制。您不应该自己编辑此注释。

nfd.node.kubernetes.io/node-name

类型:标签

示例:nfd.node.kubernetes.io/node-name: node-1

用于:节点

它指定了节点功能对象的目标节点。节点功能对象的创建者必须设置此标签,并且对象的使用者应该使用此标签来过滤指定给特定节点的功能。

service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "5"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置服务的负载均衡器。该值决定负载均衡器写入日志条目的频率。例如,如果您将值设置为 5,则日志写入每 5 秒发生一次。

service.beta.kubernetes.io/aws-load-balancer-access-log-enabled (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "false"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置服务的负载均衡器。如果您将注释设置为“true”,则启用访问日志记录。

service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: example

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置服务的负载均衡器。负载均衡器将日志写入您指定的名称的 S3 存储桶。

service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "/example"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置服务的负载均衡器。负载均衡器使用您指定的 前缀写入日志对象。

service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "Environment=demo,Project=example"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释的值中逗号分隔的键值对配置负载均衡器的标签(AWS 概念)。

service.beta.kubernetes.io/aws-load-balancer-alpn-policy (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-alpn-policy: HTTP2Optional

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-attributes (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-attributes: "deletion_protection.enabled=true"

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-backend-protocol (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释的值配置负载均衡器监听器。

service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "false"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。负载均衡器的连接 排空设置取决于您设置的值。

service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout: "60"

用于:服务

如果您为 type: LoadBalancer 的服务配置了 连接排空,并且您使用 AWS 云,则集成将根据此注释配置排空时间段。您设置的值决定了排空超时(以秒为单位)。

service.beta.kubernetes.io/aws-load-balancer-ip-address-type (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-ip-address-type: ipv4

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。负载均衡器具有配置的空闲超时时间段(以秒为单位),该时间段适用于其连接。如果在空闲超时时间段到期时没有发送或接收数据,则负载均衡器将关闭连接。

service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。如果您将此注释设置为 “true”,则每个负载均衡器节点将在所有启用的 可用区 中注册的目标之间均匀地分配请求。如果您禁用跨区域负载均衡,则每个负载均衡器节点仅在其可用区中注册的目标之间均匀地分配请求。

service.beta.kubernetes.io/aws-load-balancer-eip-allocations (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-eip-allocations: "eipalloc-01bcdef23bcdef456,eipalloc-def1234abc4567890"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。该值是弹性 IP 地址分配 ID 的逗号分隔列表。

此注释仅与 type: LoadBalancer 的服务相关,其中负载均衡器是 AWS 网络负载均衡器。

service.beta.kubernetes.io/aws-load-balancer-extra-security-groups (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-12abcd3456,sg-34dcba6543"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值是用于为负载均衡器配置的额外 AWS VPC 安全组的逗号分隔列表。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold: "3"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值指定后端被视为对流量健康的连续成功健康检查次数。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval: "30"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值指定负载均衡器执行健康检查探测之间的间隔(以秒为单位)。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-path (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: /healthcheck

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值决定用于 HTTP 健康检查的 URL 的路径部分。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-port (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "24"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值决定负载均衡器在执行健康检查时连接到的端口。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol: TCP

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值决定负载均衡器如何检查后端目标的健康状况。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout: "3"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值指定尚未成功的探测被自动视为失败之前的秒数。

service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold: "3"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。注释值指定后端被视为对流量不健康的连续失败健康检查次数。

service.beta.kubernetes.io/aws-load-balancer-internal (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-internal: "true"

用于:服务

云控制器管理器与 AWS 弹性负载均衡的集成根据此注释配置负载均衡器。当您将此注释设置为 “true”时,集成将配置内部负载均衡器。

如果您使用 AWS 负载均衡器控制器,请参阅 service.beta.kubernetes.io/aws-load-balancer-scheme

service.beta.kubernetes.io/aws-load-balancer-manage-backend-security-group-rules (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-manage-backend-security-group-rules: "true"

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-name (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-name: my-elb

用于:服务

如果您在服务上设置了此注释,并且您还使用 service.beta.kubernetes.io/aws-load-balancer-type: "external" 注释了该服务,并且您在集群中使用了 AWS 负载均衡器控制器,那么 AWS 负载均衡器控制器将把该负载均衡器的名称设置为您为注释设置的值。

请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-nlb-target-type (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "true"

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-private-ipv4-addresses (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-private-ipv4-addresses: "198.51.100.0,198.51.100.64"

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-proxy-protocol (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"

用于:服务

AWS 弹性负载均衡的官方 Kubernetes 集成根据此注释配置负载均衡器。唯一允许的值是 "*",它表示负载均衡器应该使用 PROXY 协议包装到后端 Pod 的 TCP 连接。

service.beta.kubernetes.io/aws-load-balancer-scheme (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-scheme: internal

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-security-groups (已弃用)

示例:service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-53fae93f,sg-8725gr62r"

用于:服务

AWS 负载均衡器控制器使用此注释来指定要附加到 AWS 负载均衡器的安全组的逗号分隔列表。安全组的名称和 ID 都受支持,其中名称与 Name 标签匹配,而不是 groupName 属性。

当此注释添加到服务时,负载均衡器控制器会将注释引用的安全组附加到负载均衡器。如果您省略此注释,AWS 负载均衡器控制器会自动创建一个新的安全组并将其附加到负载均衡器。

service.beta.kubernetes.io/load-balancer-source-ranges (已弃用)

示例:service.beta.kubernetes.io/load-balancer-source-ranges: "192.0.2.0/25"

用于:服务

AWS 负载均衡器控制器 使用此注释。您应该为服务设置 .spec.loadBalancerSourceRanges

service.beta.kubernetes.io/aws-load-balancer-ssl-cert (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"

用于:服务

AWS 弹性负载均衡的官方集成根据此注释为 type: LoadBalancer 的服务配置 TLS。注释的值是负载均衡器监听器应使用的 X.509 证书的 AWS 资源名称 (ARN)。

(TLS 协议基于较旧的技术,缩写为 SSL。)

service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: ELBSecurityPolicy-TLS-1-2-2017-01

AWS 弹性负载均衡的官方集成根据此注释为 type: LoadBalancer 的服务配置 TLS。注释的值是与客户端对等方协商 TLS 的 AWS 策略的名称。

service.beta.kubernetes.io/aws-load-balancer-ssl-ports (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "*"

AWS 弹性负载均衡的官方集成根据此注释为 type: LoadBalancer 的服务配置 TLS。注释的值是 "*"(表示负载均衡器的所有端口都应使用 TLS),或者是一个逗号分隔的端口号列表。

service.beta.kubernetes.io/aws-load-balancer-subnets (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-subnets: "private-a,private-b"

Kubernetes 与 AWS 的官方集成使用此注释来配置负载均衡器并确定在哪些 AWS 可用区中部署托管负载均衡服务。该值可以是子网名称的逗号分隔列表,也可以是子网 ID 的逗号分隔列表。

service.beta.kubernetes.io/aws-load-balancer-target-group-attributes (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: "stickiness.enabled=true,stickiness.type=source_ip"

用于:服务

AWS 负载均衡器控制器 使用此注释。请参阅 AWS 负载均衡器控制器文档中的 注释

service.beta.kubernetes.io/aws-load-balancer-target-node-labels (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-target-node-labels: "kubernetes.io/os=Linux,topology.kubernetes.io/region=us-east-2"

Kubernetes 与 AWS 的官方集成使用此注释来确定集群中的哪些节点应被视为负载均衡器的有效目标。

service.beta.kubernetes.io/aws-load-balancer-type (beta)

示例:service.beta.kubernetes.io/aws-load-balancer-type: external

Kubernetes 与 AWS 的官方集成使用此注释来确定 AWS 云提供商集成是否应该管理 type: LoadBalancer 的服务。

有两个允许的值

nlb
云控制器管理器配置网络负载均衡器
external
云控制器管理器不配置任何负载均衡器

如果您在 AWS 上部署了 type: LoadBalancer 的服务,并且您没有设置任何 service.beta.kubernetes.io/aws-load-balancer-type 注释,则 AWS 集成将部署经典的弹性负载均衡器。这种行为(没有注释存在)是默认行为,除非您另行指定。

当您将此注释设置为external,并且您的集群具有正在运行的 AWS Load Balancer 控制器时,AWS Load Balancer 控制器将尝试根据服务规范部署负载均衡器。

service.beta.kubernetes.io/azure-load-balancer-disable-tcp-reset (已弃用)

示例:service.beta.kubernetes.io/azure-load-balancer-disable-tcp-reset: "false"

用于:服务

此注释仅适用于 Azure 标准负载均衡器支持的服务。此注释用于在服务上指定负载均衡器是否应在空闲超时时禁用或启用 TCP 重置。如果启用,它有助于应用程序表现得更可预测,检测连接的终止,删除过期的连接并启动新的连接。您可以将值设置为 true 或 false。

有关更多信息,请参阅 负载均衡器 TCP 重置

pod-security.kubernetes.io/enforce

类型:标签

示例:pod-security.kubernetes.io/enforce: "baseline"

用于:Namespace

值**必须**是privilegedbaselinerestricted之一,它们对应于Pod 安全标准级别。具体来说,enforce标签**禁止**在标记的命名空间中创建任何不满足指定级别中概述的要求的 Pod。

有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性

pod-security.kubernetes.io/enforce-version

类型:标签

示例:pod-security.kubernetes.io/enforce-version: "1.30"

用于:Namespace

值**必须**是latest或格式为v<major>.<minor>的有效 Kubernetes 版本。这决定了在验证 Pod 时要应用的Pod 安全标准策略的版本。

有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性

pod-security.kubernetes.io/audit

类型:标签

示例:pod-security.kubernetes.io/audit: "baseline"

用于:Namespace

值**必须**是privilegedbaselinerestricted之一,它们对应于Pod 安全标准级别。具体来说,audit标签不会阻止在标记的命名空间中创建任何不满足指定级别中概述的要求的 Pod,但会将此注释添加到 Pod 中。

有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性

pod-security.kubernetes.io/audit-version

类型:标签

示例:pod-security.kubernetes.io/audit-version: "1.30"

用于:Namespace

值**必须**是latest或格式为v<major>.<minor>的有效 Kubernetes 版本。这决定了在验证 Pod 时要应用的Pod 安全标准策略的版本。

有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性

pod-security.kubernetes.io/warn

类型:标签

示例:pod-security.kubernetes.io/warn: "baseline"

用于:Namespace

值**必须**是privilegedbaselinerestricted之一,它们对应于Pod 安全标准级别。具体来说,warn标签不会阻止在标记的命名空间中创建任何不满足指定级别中概述的要求的 Pod,但在执行此操作后会向用户返回警告。请注意,在创建或更新包含 Pod 模板的对象(如 Deployment、Job、StatefulSet 等)时,也会显示警告。

有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性

pod-security.kubernetes.io/warn-version

类型:标签

示例:pod-security.kubernetes.io/warn-version: "1.30"

用于:Namespace

值**必须**是latest或格式为v<major>.<minor>的有效 Kubernetes 版本。这决定了在验证提交的 Pod 时要应用的Pod 安全标准策略的版本。请注意,在创建或更新包含 Pod 模板的对象(如 Deployment、Job、StatefulSet 等)时,也会显示警告。

有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性

rbac.authorization.kubernetes.io/autoupdate

类型:注释

示例:rbac.authorization.kubernetes.io/autoupdate: "false"

用于:ClusterRole、ClusterRoleBinding、Role、RoleBinding

当此注释在 API 服务器创建的默认 RBAC 对象上设置为"true"时,它们会在服务器启动时自动更新,以添加缺少的权限和主体(额外的权限和主体将保留在原位)。要阻止自动更新特定角色或角色绑定,请将此注释设置为"false"。如果您创建自己的 RBAC 对象并将此注释设置为"false"kubectl auth reconcile(允许在清单中协调任意 RBAC 对象)会尊重此注释,并且不会自动添加缺少的权限和主体。

kubernetes.io/psp (已弃用)

类型:注释

示例:kubernetes.io/psp: restricted

用于:Pod

此注释仅在您使用PodSecurityPolicy对象时才相关。Kubernetes v1.30 不支持 PodSecurityPolicy API。

当 PodSecurityPolicy 准入控制器承认一个 Pod 时,准入控制器会修改 Pod 以具有此注释。注释的值是用于验证的 PodSecurityPolicy 的名称。

seccomp.security.alpha.kubernetes.io/pod (非功能性)

类型:注释

用于:Pod

v1.25 之前的 Kubernetes 允许您使用此注释配置 seccomp 行为。有关如何为 Pod 指定 seccomp 限制的受支持方法,请参阅使用 seccomp 限制容器的系统调用

container.seccomp.security.alpha.kubernetes.io/[NAME] (非功能性)

类型:注释

用于:Pod

v1.25 之前的 Kubernetes 允许您使用此注释配置 seccomp 行为。有关如何为 Pod 指定 seccomp 限制的受支持方法,请参阅使用 seccomp 限制容器的系统调用

snapshot.storage.kubernetes.io/allow-volume-mode-change

类型:注释

示例:snapshot.storage.kubernetes.io/allow-volume-mode-change: "true"

用于:VolumeSnapshotContent

值可以是truefalse。这决定了用户在从 VolumeSnapshot 创建 PersistentVolumeClaim 时是否可以修改源卷的模式。

有关更多信息,请参阅转换快照的卷模式Kubernetes CSI 开发人员文档

scheduler.alpha.kubernetes.io/critical-pod (已弃用)

类型:注释

示例:scheduler.alpha.kubernetes.io/critical-pod: ""

用于:Pod

此注释让 Kubernetes 控制平面了解 Pod 是关键 Pod,以便调度程序不会删除此 Pod。

用于审计的注释

有关更多详细信息,请参阅审计注释

kubeadm

kubeadm.alpha.kubernetes.io/cri-socket

类型:注释

示例:kubeadm.alpha.kubernetes.io/cri-socket: unix:///run/containerd/container.sock

用于:节点

kubeadm 使用的注释,用于保留在init/join时提供给 kubeadm 的 CRI 套接字信息,以便以后使用。kubeadm 使用此信息对 Node 对象进行注释。注释仍然是“alpha”,因为理想情况下这应该是 KubeletConfiguration 中的一个字段。

kubeadm.kubernetes.io/etcd.advertise-client-urls

类型:注释

示例:kubeadm.kubernetes.io/etcd.advertise-client-urls: https://172.17.0.18:2379

用于:Pod

kubeadm 在本地管理的 etcd Pod 上放置的注释,用于跟踪 etcd 客户端应连接到的 URL 列表。这主要用于 etcd 集群健康检查目的。

kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint

类型:注释

示例:kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: https://172.17.0.18:6443

用于:Pod

kubeadm 在本地管理的kube-apiserver Pod 上放置的注释,用于跟踪该 API 服务器实例的公开的广告地址/端口端点。

kubeadm.kubernetes.io/component-config.hash

类型:注释

示例:kubeadm.kubernetes.io/component-config.hash: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae

用于:ConfigMap

kubeadm 在其管理的 ConfigMap 上放置的注释,用于配置组件。它包含一个哈希(SHA-256),用于确定用户是否为特定组件应用了与 kubeadm 默认值不同的设置。

node-role.kubernetes.io/control-plane

类型:标签

用于:节点

一个标记标签,用于指示节点用于运行控制平面组件。kubeadm 工具将此标签应用于其管理的控制平面节点。其他集群管理工具通常也会设置此污点。

您可以使用此标签标记控制平面节点,以便更轻松地仅将 Pod 调度到这些节点,或避免在控制平面上运行 Pod。如果设置了此标签,EndpointSlice 控制器会在计算拓扑感知提示时忽略该节点。

node-role.kubernetes.io/control-plane

类型:污点

示例:node-role.kubernetes.io/control-plane:NoSchedule

用于:节点

kubeadm 在控制平面节点上应用的污点,以限制放置 Pod 并允许仅特定 Pod 调度到它们。

如果应用了此污点,控制平面节点仅允许关键工作负载调度到它们。您可以使用以下命令在特定节点上手动删除此污点。

kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-

node-role.kubernetes.io/master (已弃用)

类型:污点

用于:节点

示例:node-role.kubernetes.io/master:NoSchedule

kubeadm 以前在控制平面节点上应用的污点,以允许仅关键工作负载调度到它们。被node-role.kubernetes.io/control-plane污点取代。kubeadm 不再设置或使用此已弃用的污点。

上次修改时间:2024 年 7 月 10 日下午 2:00 PST:更新了语法修正 (aab0ae1be7)