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

Kubernetes 保留 kubernetes.iok8s.io 命名空间下的所有标签、注解和污点。

本文档既是对这些值的参考,也是分配值的协调点。

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

apf.kubernetes.io/autoupdate-spec

类型:Annotation

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

用于:FlowSchemaPriorityLevelConfiguration 对象

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

app.kubernetes.io/component

类型:Label

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

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

应用程序架构中的组件。

属于推荐标签之一。

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

类型:Label

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

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

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

app.kubernetes.io/instance

类型:Label

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

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

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

属于推荐标签之一。

app.kubernetes.io/managed-by

类型:Label

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

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

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

属于推荐标签之一。

app.kubernetes.io/name

类型:Label

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

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

应用程序的名称。

属于推荐标签之一。

app.kubernetes.io/part-of

类型:Label

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

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

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

属于推荐标签之一。

app.kubernetes.io/version

类型:Label

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

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

应用程序的当前版本。

常见的值形式包括

属于推荐标签之一。

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

类型:Annotation

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

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

此注解的使用为 Alpha 阶段。对于 Kubernetes 1.33 版本,如果定义这些对象的CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,你可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。

这是实现基于 ApplySet 的 kubectl 资源修剪所用规约的一部分。此注解用于跟踪 ApplySet 的父对象,以便将 ApplySet 的作用域扩展到父对象自身命名空间之外(如果有)。其值是一个逗号分隔的命名空间列表,这些命名空间不同于父对象所在命名空间,但在其中找到 ApplySet 中的对象。

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

类型:Annotation

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

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

此注解的使用为 Alpha 阶段。对于 Kubernetes 1.33 版本,如果定义这些对象的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,你可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。

这是实现基于 ApplySet 的 kubectl 资源修剪所用规约的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列举。它在 ApplySet 规约中是可选的,因为工具可以执行发现或使用不同的优化方法。然而,在 Kubernetes 1.33 版本中,kubectl 要求必须存在此注解。当此注解存在时,其值必须是逗号分隔的 group-kinds 列表,格式为完全限定名,即 <resource>.<group>

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

类型:Annotation

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

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

对于 Kubernetes 1.33 版本,如果定义这些对象的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,你可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。

这是实现基于 ApplySet 的 kubectl 资源修剪所用规约的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列举。它在 ApplySet 规约中是可选的,因为工具可以执行发现或使用不同的优化方法。然而,在 Kubernetes 1.33 版本中,kubectl 要求必须存在此注解。当此注解存在时,其值必须是逗号分隔的 group-kinds 列表,格式为完全限定名,即 <resource>.<group>

applyset.kubernetes.io/id (alpha)

类型:Label

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

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

此标签的使用为 Alpha 阶段。对于 Kubernetes 1.33 版本,如果定义这些对象的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,你可以在 Secrets、ConfigMaps 或自定义资源上使用此标签。

这是实现基于 ApplySet 的 kubectl 资源修剪所用规约的一部分。此标签使对象成为 ApplySet 的父对象。其值为 ApplySet 的唯一 ID,该 ID 源自父对象自身的标识。此 ID **必须**是对象 group-kind-name-namespace 的哈希值(使用 RFC4648 的 URL 安全编码)的 base64 编码,格式为:<base64(sha256(<name>.<namespace>.<kind>.<group>))>。此标签的值与对象 UID 没有关系。

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

类型:Label

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

用于:Custom Resource Definition (CRD)

此标签的使用为 Alpha 阶段。这是实现基于 ApplySet 的 kubectl 资源修剪所用规约的一部分。你可以在 CustomResourceDefinition (CRD) 上设置此标签,以将其定义的自定义资源类型(而非 CRD 本身)标识为 ApplySet 允许的父类型。此标签唯一允许的值是 "true";如果你想将 CRD 标记为不是有效的 ApplySet 父类型,则省略此标签。

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

类型:Label

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

用于:所有对象。

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

applyset.kubernetes.io/tooling (alpha)

类型:Annotation

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

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

此注解的使用为 Alpha 阶段。对于 Kubernetes 1.33 版本,如果定义这些对象的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,你可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。

这是实现基于 ApplySet 的 kubectl 资源修剪所用规约的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以表明是由哪个工具来管理该 ApplySet。工具应拒绝修改属于其他工具的 ApplySet。其值必须采用 <工具名称>/<语义化版本> 的格式。

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

类型:Label

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

用于:Pod

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

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

resource.kubernetes.io/pod-claim-name

类型:Annotation

示例:resource.kubernetes.io/pod-claim-name: "my-pod-claim"

用于:ResourceClaim

此注解被分配给生成的 ResourceClaims。其值对应于为其创建 ResourceClaim 的任何 Pod 的 .spec 中的资源声明名称。此注解是动态资源分配的内部实现细节。你不应该读取或修改此注解的值。

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

类型:Annotation

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

用于:Pod

当此注解设置为 "true" 时,即使其他规则通常会阻止驱逐 Pod,集群自动扩缩器也允许驱逐该 Pod。集群自动扩缩器绝不会驱逐那些明确设置此注解为 "false" 的 Pod;你可以在你想一直运行的重要 Pod 上设置此值。如果未设置此注解,则集群自动扩缩器遵循其 Pod 级别的行为。

config.kubernetes.io/local-config

类型:Annotation

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

用于:所有对象

此注解用于清单文件中,将对象标记为不应提交给 Kubernetes API 的本地配置。

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

可以使用 "false" 值来声明对象应该提交给 API 服务器,即使在其他情况下它会被假定为本地配置。

此注解是 Kubernetes Resource Model (KRM) Functions 规约的一部分,Kustomize 和类似的第三方工具都使用此规约。例如,Kustomize 会从其最终构建输出中移除带有此注解的对象。

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

类型:Annotation

示例: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/* (保留前缀)

类型:Annotation

用于:所有对象

此前缀保留供依照 Kubernetes Resource Model (KRM) Functions 规约运行的编排工具内部使用。带有此前缀的注解是编排过程的内部信息,不会持久化到文件系统上的清单文件。换句话说,编排工具在从本地文件系统读取文件时应设置这些注解,并在将函数输出写回文件系统时将其移除。

KRM 函数**不得**修改带有此前缀的注解,除非针对特定注解另有说明。这使得编排工具可以添加额外的内部注解,而无需更改现有函数。

internal.config.kubernetes.io/path

类型:Annotation

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

用于:所有对象

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

此注解是 Kubernetes Resource Model (KRM) Functions 规约的一部分,Kustomize 和类似的第三方工具都使用此规约。

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

internal.config.kubernetes.io/index

类型:Annotation

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

用于:所有对象

此注解记录了对象加载自的清单文件中包含该对象的 YAML 文档的零基位置。请注意,YAML 文档由三个破折号 (---) 分隔,每个文档可以包含一个对象。当未指定此注解时,默认为 0。

此注解是 Kubernetes Resource Model (KRM) Functions 规约的一部分,Kustomize 和类似的第三方工具都使用此规约。

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

kube-scheduler-simulator.sigs.k8s.io/bind-result

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/bind-result: '{"DefaultBinder":"success"}'

用于:Pod

此注解记录了 bind 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/filter-result

类型:Annotation

示例

kube-scheduler-simulator.sigs.k8s.io/filter-result: >-
      {"node-282x7":{"AzureDiskLimits":"passed","EBSLimits":"passed","GCEPDLimits":"passed","InterPodAffinity":"passed","NodeAffinity":"passed","NodeName":"passed","NodePorts":"passed","NodeResourcesFit":"passed","NodeUnschedulable":"passed","NodeVolumeLimits":"passed","PodTopologySpread":"passed","TaintToleration":"passed","VolumeBinding":"passed","VolumeRestrictions":"passed","VolumeZone":"passed"},"node-gp9t4":{"AzureDiskLimits":"passed","EBSLimits":"passed","GCEPDLimits":"passed","InterPodAffinity":"passed","NodeAffinity":"passed","NodeName":"passed","NodePorts":"passed","NodeResourcesFit":"passed","NodeUnschedulable":"passed","NodeVolumeLimits":"passed","PodTopologySpread":"passed","TaintToleration":"passed","VolumeBinding":"passed","VolumeRestrictions":"passed","VolumeZone":"passed"}}      

用于:Pod

此注解记录了 filter 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/finalscore-result

类型:Annotation

示例

kube-scheduler-simulator.sigs.k8s.io/finalscore-result: >-
      {"node-282x7":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"200","TaintToleration":"300","VolumeBinding":"0"},"node-gp9t4":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"200","TaintToleration":"300","VolumeBinding":"0"}}      

用于:Pod

此注解记录了调度器根据 score 调度器插件分数计算出的最终分数,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/permit-result

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/permit-result: '{"CustomPermitPlugin":"success"}'

用于:Pod

此注解记录了 permit 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/permit-result-timeout

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/permit-result-timeout: '{"CustomPermitPlugin":"10s"}'

用于:Pod

此注解记录了 permit 调度器插件返回的超时信息,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/postfilter-result

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/postfilter-result: '{"DefaultPreemption":"success"}'

用于:Pod

此注解记录了 postfilter 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/prebind-result

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/prebind-result: '{"VolumeBinding":"success"}'

用于:Pod

此注解记录了 prebind 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/prefilter-result

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/prebind-result: '{"NodeAffinity":"[\"node-\a"]"}'

用于:Pod

此注解记录了 prefilter 调度器插件的 PreFilter 结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/prefilter-result-status

类型:Annotation

示例

kube-scheduler-simulator.sigs.k8s.io/prefilter-result-status: >-
      {"InterPodAffinity":"success","NodeAffinity":"success","NodePorts":"success","NodeResourcesFit":"success","PodTopologySpread":"success","VolumeBinding":"success","VolumeRestrictions":"success"}      

用于:Pod

此注解记录了 prefilter 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/prescore-result

类型:Annotation

示例

    kube-scheduler-simulator.sigs.k8s.io/prescore-result: >-
      {"InterPodAffinity":"success","NodeAffinity":"success","NodeNumber":"success","PodTopologySpread":"success","TaintToleration":"success"}      

用于:Pod

此注解记录了 prefilter 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/reserve-result

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/reserve-result: '{"VolumeBinding":"success"}'

用于:Pod

此注解记录了 reserve 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/result-history

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/result-history: '[]'

用于:Pod

此注解记录了调度器插件的所有历史调度结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/score-result

类型:Annotation

    kube-scheduler-simulator.sigs.k8s.io/score-result: >-
      {"node-282x7":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"0","TaintToleration":"0","VolumeBinding":"0"},"node-gp9t4":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"0","TaintToleration":"0","VolumeBinding":"0"}}      

用于:Pod

此注解记录了 score 调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kube-scheduler-simulator.sigs.k8s.io/selected-node

类型:Annotation

示例:kube-scheduler-simulator.sigs.k8s.io/selected-node: node-282x7

用于:Pod

此注解记录了由调度周期选定的节点,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。

kubernetes.io/arch

类型:Label

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

用于:Node

Kubelet 根据 Go 中定义的 runtime.GOARCH 来填充此标签。如果你混合使用 ARM 和 x86 节点,这会很有用。

kubernetes.io/os

类型:Label

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

用于:Node, Pod

对于节点,kubelet 根据 Go 中定义的 runtime.GOOS 来填充此标签。如果你在集群中混合使用操作系统(例如:混合使用 Linux 和 Windows 节点),这会很有用。

你也可以在 Pod 上设置此标签。Kubernetes 允许你为此标签设置任何值;如果你使用此标签,无论如何都应将其设置为此 Pod 实际工作的操作系统的 Go runtime.GOOS 字符串。

当 Pod 的 kubernetes.io/os 标签值与 Node 上的标签值不匹配时,Node 上的 kubelet 将拒绝接纳此 Pod。然而,kube-scheduler 不会考虑此因素。或者,如果你指定了 Pod 的操作系统,而该操作系统与运行 kubelet 的节点操作系统不同,则 kubelet 将拒绝运行该 Pod。更多详情,请参阅Pod 操作系统

kubernetes.io/metadata.name

类型:Label

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

用于:Namespaces

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

如果你想使用标签选择器来定位特定的命名空间,这会很有用。

kubernetes.io/limit-ranger

类型:Annotation

示例: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 指定了资源默认值,并且这些默认值已成功应用。有关更多详细信息,请阅读LimitRange

kubernetes.io/config.hash

类型:Annotation

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

用于:Pod

当 kubelet 基于给定的清单文件创建静态 Pod 时,它会将此注解附加到静态 Pod 上。此注解的值是 Pod 的 UID。请注意,kubelet 还会将 .spec.nodeName 设置为当前节点名称,就如同该 Pod 被调度到该节点一样。

kubernetes.io/config.mirror

类型:Annotation

示例: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

类型:Annotation

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

用于:Pod

此注解由 kubelet 添加,以指示 Pod 的来源。对于静态 Pod,注解值可以是 filehttp,具体取决于 Pod 清单文件所在的位置。对于在 API 服务器上创建然后调度到当前节点的 Pod,注解值为 api

kubernetes.io/config.seen

类型:Annotation

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

用于:Pod

当 kubelet 第一次看到一个 Pod 时,它可能会将此注解添加到 Pod 中,其值为 RFC3339 格式的当前时间戳。

addonmanager.kubernetes.io/mode

类型:Label

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

用于:所有对象

要指定如何管理插件(add-on),可以使用 addonmanager.kubernetes.io/mode 标签。此标签可以有三个值之一:ReconcileEnsureExistsIgnore

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

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

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

类型:Label

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

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

类型:Label

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

kube-aggregator.kubernetes.io/automanaged

类型:Label

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

用于:APIService

kube-apiserver 会为 API 服务器自动创建的任何 APIService 对象设置此标签。此标签用于标记控制平面应如何管理该 APIService。你不应该自行添加、修改或移除此标签。

可能有两个取值

  • onstart:APIService 应该在 API 服务器启动时被协调(reconciled),其他时候则不协调。
  • true:API 服务器应持续协调(reconcile)此 APIService。

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

类型:Annotation

用于:StatefulSet

Service 上的此注解表示 Endpoints 控制器是否应继续为未就绪(unready)的 Pod 创建 Endpoints。这些 Service 的 Endpoints 会保留其 DNS 记录,并从 kubelet 启动 Pod 中所有容器并将其标记为 Running 的那一刻起,直到 kubelet 停止所有容器并从 API 服务器中删除该 Pod 为止,持续接收该 Service 的流量。

autoscaling.alpha.kubernetes.io/behavior (已废弃)

类型:Annotation

用于:HorizontalPodAutoscaler

在早期 Kubernetes 版本中,此注解用于配置 HorizontalPodAutoscaler (HPA) 的扩缩容行为。它允许你指定 HPA 如何扩缩容 Pod,包括设置稳定窗口(stabilization windows)和扩缩容策略(scaling policies)。在任何受支持的 Kubernetes 版本中设置此注解都没有效果。

kubernetes.io/hostname

类型:Label

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

用于:Node

Kubelet 会用节点的 hostname 填充此标签。请注意,可以通过向 kubelet 传递 --hostname-override 标志来更改 hostname,使其与“实际”hostname 不同。

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

kubernetes.io/change-cause

类型:Annotation

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

用于:所有对象(All Objects)

此注解是对某物为何被改变的最佳猜测。

当对可能改变对象的 kubectl 命令添加 --record 时,会填充此注解。

kubernetes.io/description

类型:Annotation

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

用于:所有对象(All Objects)

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

kubernetes.io/enforce-mountable-secrets (已废弃)

类型:Annotation

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

用于:ServiceAccount

此注解的值必须为 true 才能生效。当你将此注解设置为 "true" 时,Kubernetes 会对以此 ServiceAccount 运行的 Pod 强制执行以下规则:

  1. 作为卷挂载的 Secret 必须列在 ServiceAccount 的 secrets 字段中。
  2. 容器(包括 sidecar 容器和初始化容器)的 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

类型:Label

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

用于:Node

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

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

controller.kubernetes.io/pod-deletion-cost

类型:Annotation

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

用于:Pod

此注解用于设置 Pod 删除开销(Pod Deletion Cost),允许用户影响 ReplicaSet 的缩容顺序。注解值会解析为 int32 类型。

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

类型:Annotation

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

用于:Pod

此注解控制 DaemonSet Pod 是否应被 ClusterAutoscaler 逐出(evict)。此注解需要在 DaemonSet 清单中的 DaemonSet Pod 上指定。当此注解设置为 "true" 时,即使其他规则通常会阻止,ClusterAutoscaler 也允许逐出 DaemonSet Pod。要禁止 ClusterAutoscaler 逐出 DaemonSet Pod,可以将重要 DaemonSet Pod 的此注解设置为 "false"。如果未设置此注解,则 ClusterAutoscaler 会遵循其总体行为(即根据其配置逐出 DaemonSet)。

kubernetes.io/ingress-bandwidth

类型:Annotation

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

用于:Pod

你可以对 Pod 应用服务质量(quality-of-service)流量整形(traffic shaping),从而有效限制其可用带宽。到达 Pod 的入口流量通过对排队的数据包进行整形来有效处理数据。要限制 Pod 的带宽,请编写一个对象定义 JSON 文件,并使用 kubernetes.io/ingress-bandwidth 注解指定数据流量速度。指定入口速率的单位是比特/秒(bits per second),表示为 Quantity。例如,10M 表示 10 兆比特/秒。

kubernetes.io/egress-bandwidth

类型:Annotation

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

用于:Pod

从 Pod 出去的出口流量通过策略控制(policing)进行处理,这简单地丢弃超过配置速率的数据包。你对 Pod 设置的限制不会影响其他 Pod 的带宽。要限制 Pod 的带宽,请编写一个对象定义 JSON 文件,并使用 kubernetes.io/egress-bandwidth 注解指定数据流量速度。指定出口速率的单位是比特/秒(bits per second),表示为 Quantity。例如,10M 表示 10 兆比特/秒。

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

类型:Label

node.kubernetes.io/instance-type

类型:Label

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

用于:Node

Kubelet 会使用云提供商定义的实例类型填充此标签。仅当你使用云提供商时才会设置此项。如果你想将特定工作负载定向到特定实例类型,此设置会很方便,但通常你更希望依赖 Kubernetes 调度器执行基于资源的调度。你应该根据属性而非实例类型进行调度(例如:需要 GPU,而不是需要 g2.2xlarge)。

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

类型:Label

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

类型:Label

pv.kubernetes.io/bind-completed

类型:Annotation

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

用于:PersistentVolumeClaim

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

pv.kubernetes.io/bound-by-controller

类型:Annotation

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

用于:PersistentVolume, PersistentVolumeClaim

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

pv.kubernetes.io/provisioned-by

类型:Annotation

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

用于:PersistentVolume

此注解添加到由 Kubernetes 动态预配的 PersistentVolume(PV) 中。其值是创建该卷的卷插件的名称。它既用于用户(显示 PV 来自何处),也用于 Kubernetes(在其决策中识别动态预配的 PV)。

pv.kubernetes.io/migrated-to

类型:Annotation

示例: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

类型:Label

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

用于:Pod

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

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

scheduler.alpha.kubernetes.io/node-selector

类型:Annotation

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

用于:Namespace

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

topology.kubernetes.io/region

类型:Label

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

用于:Node, PersistentVolume

参见 topology.kubernetes.io/zone

topology.kubernetes.io/zone

类型:Label

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

用于:Node, PersistentVolume

在 Node 上kubelet 或外部 cloud-controller-manager 会根据云提供商的信息填充此项。仅当你使用云提供商时才会设置此项。但是,如果你的拓扑结构合理,你也可以考虑在节点上设置此项。

在 PersistentVolume 上:拓扑感知的卷预配器(topology-aware volume provisioners)会自动在 PersistentVolume 上设置节点亲和性约束。

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

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

Kubernetes 对 zone 和 region 的结构做了一些假设:

  1. region 和 zone 是分层的:zone 是 region 的严格子集,没有一个 zone 可以属于 2 个 region。
  2. zone 名称在不同 region 之间是唯一的;例如,region "africa-east-1" 可能由 zone "africa-east-1a" 和 "africa-east-1b" 组成。

假定拓扑标签不会改变应该是安全的。尽管标签严格来说是可变的,但使用它们的用户可以假定一个给定的节点不会在不被销毁和重新创建的情况下在 zone 之间移动。

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

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

调度器(通过 VolumeZonePredicate 断言)还会确保,声明给定卷的 Pod 只会被放置到与该卷相同的区域。卷不能跨区域挂载。

如果 PersistentVolumeLabel 不支持自动为你的 PersistentVolumes 添加标签,你应该考虑手动添加标签(或添加对 PersistentVolumeLabel 的支持)。使用 PersistentVolumeLabel,调度器会阻止 Pod 挂载位于不同区域的卷。如果你的基础设施没有此限制,则根本无需向卷添加区域标签。

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

类型:Annotation

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

用于:PersistentVolumeClaim

此注解自 v1.23 起已废弃。参见 volume.kubernetes.io/storage-provisioner

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

类型:Annotation

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

用于:PersistentVolume, PersistentVolumeClaim

此注解可用于 PersistentVolume(PV) 或 PersistentVolumeClaim(PVC),以指定 StorageClass 的名称。当同时指定 storageClassName 属性和 volume.beta.kubernetes.io/storage-class 注解时,注解 volume.beta.kubernetes.io/storage-class 的优先级高于 storageClassName 属性。

此注解已废弃。请改为在 PersistentVolumeClaim 或 PersistentVolume 上设置 storageClassName 字段

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

类型:Annotation

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

用于:PersistentVolume

Kubernetes 管理员可以指定 PersistentVolume 在节点上挂载时的附加挂载选项(mount options)

volume.kubernetes.io/storage-provisioner

类型:Annotation

用于:PersistentVolumeClaim

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

volume.kubernetes.io/selected-node

类型:Annotation

用于:PersistentVolumeClaim

此注解被添加到由调度器触发进行动态预配的 PVC 中。其值是选定节点的名称。

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

类型:Annotation

用于:Node

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

此注解的值并不重要。

node.kubernetes.io/windows-build

类型:Label

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

用于:Node

当 kubelet 运行在 Microsoft Windows 上时,它会自动为其 Node 添加标签,记录正在使用的 Windows Server 版本。

该标签的值格式为 "MajorVersion.MinorVersion.BuildNumber"。

storage.alpha.kubernetes.io/migrated-plugins

类型:Annotation

示例:storage.alpha.kubernetes.io/migrated-plugins: "kubernetes.io/cinder"

用于:CSINode (一个扩展 API)

对于映射到已安装 CSIDriver 的节点的 CSINode 对象,此注解会自动添加。此注解显示已迁移插件的 in-tree 插件名称。其值取决于你的集群的 in-tree 云提供商存储类型。

例如,如果 in-tree 云提供商存储类型是 CSIMigrationvSphere,则应将该节点的 CSINodes 实例更新为:storage.alpha.kubernetes.io/migrated-plugins: "kubernetes.io/vsphere-volume"

service.kubernetes.io/headless

类型:Label

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

用于:Endpoints

当所属 Service 是无头 Service(headless)时,控制平面会向 Endpoints 对象添加此标签。要了解更多信息,请阅读无头 Service (Headless Services)

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

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

用于:Service

此注解曾用于为 Service 启用拓扑感知提示(topology aware hints)。拓扑感知提示现已更名:该概念现在称为拓扑感知路由(topology aware routing)。在 Service 上将此注解设置为 Auto,会配置 Kubernetes 控制平面以向与该 Service 关联的 EndpointSlice 添加拓扑提示。你也可以明确将注解设置为 Disabled

如果你运行的 Kubernetes 版本低于 1.33,请查阅该版本 Kubernetes 的文档以了解拓扑感知路由在该版本中如何工作。

此注解没有其他有效值。如果你不想为 Service 添加拓扑感知提示,请不要添加此注解。

service.kubernetes.io/topology-mode

类型:Annotation

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

用于:Service

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

有关更多详细信息,请参见拓扑感知路由(Topology Aware Routing)

kubernetes.io/service-name

类型:Label

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

用于:EndpointSlice

Kubernetes 使用此标签将EndpointSlicesServices 关联起来。

此标签记录 EndpointSlice 所属 Service 的名称(name)。所有 EndpointSlice 都应该设置此标签,其值是关联 Service 的名称。

kubernetes.io/service-account.name

类型:Annotation

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

用于:Secret

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

kubernetes.io/service-account.uid

类型:Annotation

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

用于:Secret

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

kubernetes.io/legacy-token-last-used

类型:Label

示例: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

类型:Label

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

用于:Secret

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

endpoints.kubernetes.io/managed-by (已废弃)

类型:Label

示例:endpoints.kubernetes.io/managed-by: endpoint-controller

用于:Endpoints

此标签在内部使用,用于标记由 Kubernetes 创建的 Endpoints 对象(与用户或外部控制器创建的 Endpoints 相反)。

endpointslice.kubernetes.io/managed-by

类型:Label

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

用于:EndpointSlices

此标签用于指示管理 EndpointSlice 的控制器或实体。此标签旨在允许同一集群内的不同 EndpointSlice 对象由不同的控制器或实体管理。值 endpointslice-controller.k8s.io 表示由 Kubernetes 为具有选择器(selectors)的 Service 自动创建的 EndpointSlice 对象。

endpointslice.kubernetes.io/skip-mirror

类型:Label

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

用于:Endpoints

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

service.kubernetes.io/service-proxy-name

类型:Label

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

用于:Service

kube-proxy 为自定义代理设置此标签,将服务控制权委托给自定义代理。

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

类型:Annotation

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

用于:Pod

此注解用于通过 Hyper-V 隔离运行 Windows 容器。

ingressclass.kubernetes.io/is-default-class

类型:Annotation

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

用于:IngressClass

当 IngressClass 资源设置此注解为 "true" 时,未指定 class 的新 Ingress 资源将被分配此默认 class。

nginx.ingress.kubernetes.io/configuration-snippet

类型:Annotation

示例:nginx.ingress.kubernetes.io/configuration-snippet: " more_set_headers \"Request-Id: $req_id\";\nmore_set_headers \"Example: 42\";\n"

用于:Ingress

你可以使用此注解为使用NGINX Ingress Controller 的 Ingress 设置额外的配置。自 Ingress 控制器 1.9.0 版本起,configuration-snippet 注解默认被忽略。必须明确启用 NGINX Ingress 控制器设置 allow-snippet-annotations 才能使用此注解。在多租户集群中启用此注解可能很危险,因为它可能导致权限本来受限的用户能够检索集群中的所有 Secret。

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

类型:Annotation

用于:Ingress

kubernetes.io/cluster-service (已废弃)

类型:Label

示例:kubernetes.io/cluster-service: "true"

用于:Service

如果此标签的值设置为 true,则表示该 Service 为集群提供服务。当你运行 kubectl cluster-info 时,该工具会查询此标签设置为 true 的 Service。

然而,在任何 Service 上设置此标签的行为已废弃。

storageclass.kubernetes.io/is-default-class

类型:Annotation

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

用于:StorageClass

当单个 StorageClass 资源设置此注解为 "true" 时,未指定 class 的新 PersistentVolumeClaim 资源将被分配此默认 class。

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

类型:Annotation

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

用于:Node

kubelet 可以在 Node 上设置此注解,以指示其配置的 IPv4 和/或 IPv6 地址。

当 kubelet 以设置了 --cloud-provider 标志(任意值,包括外部和遗留的 in-tree 云提供商)启动时,它会在 Node 上设置此注解,以指示从命令行标志(--node-ip)设置的 IP 地址。此 IP 地址由 cloud-controller-manager 与云提供商验证其有效性。

batch.kubernetes.io/job-completion-index

类型:注解(Annotation),标签(Label)

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

用于:Pod

kube-controller-manager 中的 Job 控制器会将其设置为使用索引完成模式(completion mode)创建的 Pod 的标签和注解。

请注意,必须启用PodIndexLabel 特性门控,此项才会作为 Pod 标签添加,否则它只会是一个注解。

batch.kubernetes.io/cronjob-scheduled-timestamp

类型:Annotation

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

用于:Job 和 CronJob 控制的 Pod

当 Job 是 CronJob 的一部分时,此注解用于记录该 Job 的原始(预期)创建时间戳。控制平面将该时间戳设置为 RFC3339 格式的值。如果该 Job 属于指定了时区的 CronJob,则时间戳位于该时区。否则,时间戳位于 controller-manager 的本地时间。

kubectl.kubernetes.io/default-container

类型:Annotation

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

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

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

类型:Annotation

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

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

kubectl.kubernetes.io/last-applied-configuration

类型:Annotation

示例:参见以下代码片段

    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 命令行工具使用此注解作为遗留机制来跟踪更改。此机制已被服务器端应用(Server-side apply)取代。

kubectl.kubernetes.io/restartedAt

类型:Annotation

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

用于:Deployment, ReplicaSet, StatefulSet, DaemonSet, Pod

此注解包含资源的最新重启时间(Deployment、ReplicaSet、StatefulSet 或 DaemonSet),此时 kubectl 触发了 rollout 以强制创建新的 Pod。命令 kubectl rollout restart <RESOURCE> 通过使用此注解修补资源的 Pod 的模板元数据来触发重启。在上述示例中,最新重启时间显示为 2024 年 6 月 21 日 17:27:41 UTC。

你不应该假设此注解代表最新更新的日期/时间;自上次手动触发 rollout 以来可能发生了单独的更改。

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

endpoints.kubernetes.io/over-capacity

类型:Annotation

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

用于:Endpoints

控制平面(control plane)在关联的Service 后端 Endpoint 数量超过 1000 个时,会向Endpoints 对象添加此注解。此注解表明 Endpoints 对象已超容且 Endpoint 数量已被截断至 1000 个。

如果后端 Endpoint 的数量降至 1000 以下,控制平面会移除此注解。

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

类型:Annotation

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

用于:Endpoints

此注解设置到Endpoints 对象上,表示时间戳(时间戳以 RFC 3339 日期时间字符串格式存储。例如,'2018-10-22T19:32:52.1Z')。这是某些 Pod 或 Service 对象的最后一次更改的时间戳,该更改触发了对 Endpoints 对象的更改。

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

类型:Annotation

示例: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}

用于:Endpoints

控制平面(control plane)之前在 Endpoints 对象上设置此注解。此注解提供以下详细信息:

  • 当前领导者是谁。
  • 当前领导权获得的时间。
  • 租约(领导权)的持续时间(秒)。
  • 当前租约(当前领导权)应续约的时间。
  • 过去发生的领导权转移次数。

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

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

类型:Annotation

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

用于:Jobs

此注解在 Job 上存在曾经表示控制平面正在使用 finalizers 跟踪 Job 状态。添加或移除此注解不再有任何效果(Kubernetes v1.27 及更高版本)。所有 Job 都使用 finalizers 进行跟踪。

job-name (已废弃)

类型:Label

示例:job-name: "pi"

用于:Jobs 和由 Job 控制的 Pod

controller-uid (已废弃)

类型:Label

示例:controller-uid: "$UID"

用于:Jobs 和由 Job 控制的 Pod

batch.kubernetes.io/job-name

类型:Label

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

用于:Jobs 和由 Job 控制的 Pod

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

batch.kubernetes.io/controller-uid

类型:Label

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

用于:Jobs 和由 Job 控制的 Pod

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

scheduler.alpha.kubernetes.io/defaultTolerations

类型:Annotation

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

用于:Namespace

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

scheduler.alpha.kubernetes.io/tolerationsWhitelist

类型:Annotation

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

用于:Namespace

此注解仅在(Alpha)PodTolerationRestriction 准入控制器启用时有用。注解值为一个 JSON 文档,它定义了注解的命名空间的允许容忍度列表。创建 Pod 或修改其容忍度时,API 服务器将检查这些容忍度是否在允许列表中。只有检查成功,Pod 才会被准入。

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

类型:Annotation

用于:Node

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

node.kubernetes.io/not-ready

类型:Taint

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

用于:Node

节点控制器通过监控节点的健康状况来检测节点是否就绪,并据此添加或移除此污点。

node.kubernetes.io/unreachable

类型:Taint

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

用于:Node

当节点的 NodeCondition ReadyUnknown 时,节点控制器向该节点添加此污点。

node.kubernetes.io/unschedulable

类型:Taint

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

用于:Node

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

node.kubernetes.io/memory-pressure

类型:Taint

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

用于:Node

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

node.kubernetes.io/disk-pressure

类型:Taint

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

用于:Node

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

node.kubernetes.io/network-unavailable

类型:Taint

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

用于:Node

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

node.kubernetes.io/pid-pressure

类型:Taint

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

用于:Node

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

node.kubernetes.io/out-of-service

类型:Taint

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

用于:Node

用户可以手动向节点添加此污点,将其标记为“停止服务”。如果节点被标记为“停止服务”且没有匹配的容忍度,则节点上的 Pod 将被强制删除,并且节点上正在终止的 Pod 的卷分离操作会立即发生。这使得停止服务节点上的 Pod 可以在不同的节点上快速恢复。

node.cloudprovider.kubernetes.io/uninitialized

类型:Taint

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

用于:Node

当 kubelet 启动时使用“外部”云厂商时,此污点被设置在节点上,将其标记为不可用,直到 cloud-controller-manager 的控制器初始化此节点,然后移除该污点。

node.cloudprovider.kubernetes.io/shutdown

类型:Taint

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

用于:Node

如果节点处于云厂商指定的关机状态,则节点会相应地被标记上 node.cloudprovider.kubernetes.io/shutdown 污点,污点效果为 NoSchedule

feature.node.kubernetes.io/*

类型:Label

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

用于:Node

这些标签由节点特性发现(Node Feature Discovery,NFD)组件使用,用于通告节点上的特性。所有内置标签都使用 feature.node.kubernetes.io 标签命名空间,格式为 feature.node.kubernetes.io/<feature-name>: "true"。NFD 有许多扩展点用于创建厂商和应用程序特定的标签。详情请参阅定制指南

nfd.node.kubernetes.io/master.version

类型:Annotation

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

用于:Node

对于调度了 Node Feature Discovery (NFD) master 的节点,此注解记录了 NFD master 的版本。仅供参考。

nfd.node.kubernetes.io/worker.version

类型:Annotation

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

用于:节点

如果节点上运行着 Node Feature Discovery 的 worker,此注解记录其版本。仅供参考。

nfd.node.kubernetes.io/feature-labels

类型:Annotation

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

用于:节点

此注解记录了由 Node Feature Discovery (NFD) 管理的节点特性标签的逗号分隔列表。NFD 将其用于内部机制。您不应自行编辑此注解。

nfd.node.kubernetes.io/extended-resources

类型:Annotation

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

用于:节点

此注解记录了由 Node Feature Discovery (NFD) 管理的扩展资源的逗号分隔列表。NFD 将其用于内部机制。您不应自行编辑此注解。

nfd.node.kubernetes.io/node-name

类型:Label

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

用于:节点

它指定了 NodeFeature 对象的目标节点。NodeFeature 对象的创建者必须设置此标签,而对象的使用者应使用此标签来过滤指定节点的特性。

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

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

用于:Service

云控制器管理器与 AWS 弹性负载均衡的集成根据此注解配置 Service 的负载均衡器。此值确定负载均衡器写入日志条目的频率。例如,如果将值设置为 5,则每隔 5 秒写入一次日志。

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

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

用于:Service

云控制器管理器与 AWS 弹性负载均衡的集成根据此注解配置 Service 的负载均衡器。如果将注解设置为 "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

用于:Service

云控制器管理器与 AWS 弹性负载均衡的集成根据此注解配置 Service 的负载均衡器。负载均衡器将日志写入您指定的名称的 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"

用于:Service

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

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"

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

如果为 type: LoadBalancer 类型的 Service 配置了连接耗尽,并且您使用的是 AWS 云,则集成会根据此注解配置耗尽周期。您设置的值以秒为单位确定耗尽超时。

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

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

用于:Service

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

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

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

用于:Service

云控制器管理器与 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"

用于:Service

云控制器管理器与 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"

用于:Service

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

此注解仅适用于 type: LoadBalancer 类型的 Service,其中负载均衡器是 AWS 网络负载均衡器 (NLB)。

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"

用于:Service

云控制器管理器与 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"

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

云控制器管理器与 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"

用于:Service

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

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

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

用于:Service

如果您在 Service 上设置了此注解,并且也使用 service.beta.kubernetes.io/aws-load-balancer-type: "external" 注解该 Service,并且在集群中使用了 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"

用于:Service

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"

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

用于:Service

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

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

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

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

用于:Service

AWS 负载均衡器控制器 使用此注解。应改为为 Service 设置 .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"

用于:Service

与 AWS 弹性负载均衡的官方集成根据此注解为 type: LoadBalancer 类型的 Service 配置 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 类型的 Service 配置 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 类型的 Service 配置 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"

用于:Service

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 类型的 Service。

允许的值有两种

nlb
云控制器管理器配置网络负载均衡器 (Network Load Balancer)
external
云控制器管理器不配置任何负载均衡器

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

当您在 type: LoadBalancer 类型的 Service 上将此注解设置为 external,并且集群中有正常工作的 AWS 负载均衡器控制器部署时,AWS 负载均衡器控制器会尝试根据 Service 规范部署一个负载均衡器。

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

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

用于:Service

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

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

pod-security.kubernetes.io/enforce

类型:Label

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

用于:Namespace

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

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

pod-security.kubernetes.io/enforce-version

类型:Label

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

用于:Namespace

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

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

pod-security.kubernetes.io/audit

类型:Label

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

用于:Namespace

必须privilegedbaselinerestricted 之一,它们对应于Pod 安全标准级别。具体来说,audit 标签不会阻止在标记的命名空间中创建不符合指定级别要求的 Pod,但会将此注解添加到 Pod 中。

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

pod-security.kubernetes.io/audit-version

类型:Label

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

用于:Namespace

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

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

pod-security.kubernetes.io/warn

类型:Label

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

用于:Namespace

必须privilegedbaselinerestricted 之一,它们对应于Pod 安全标准级别。具体来说,warn 标签不会阻止在标记的命名空间中创建不符合指定级别要求的 Pod,但会在创建后向用户返回警告。请注意,创建或更新包含 Pod 模板的对象(例如 Deployments、Jobs、StatefulSets 等)时也会显示警告。

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

pod-security.kubernetes.io/warn-version

类型:Label

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

用于:Namespace

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

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

rbac.authorization.kubernetes.io/autoupdate

类型:Annotation

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

用于:ClusterRole、ClusterRoleBinding、Role、RoleBinding

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

kubernetes.io/psp (已弃用)

类型:Annotation

示例:kubernetes.io/psp: restricted

用于:Pod

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

当 PodSecurityPolicy 准入控制器准入 Pod 时,该准入控制器会修改 Pod 以添加此注解。注解的值是用于验证的 PodSecurityPolicy 的名称。

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

类型:Annotation

用于:Pod

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

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

类型:Annotation

用于:Pod

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

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

类型:Annotation

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

用于:VolumeSnapshotContent

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

更多信息请参阅转换快照的卷模式Kubernetes CSI 开发者文档

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

类型:Annotation

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

用于:Pod

此注解让 Kubernetes 控制平面知道 Pod 是一个关键 Pod,以便 descheduler 不会移除此 Pod。

jobset.sigs.k8s.io/jobset-name

类型:Label, Annotation

示例:jobset.sigs.k8s.io/jobset-name: "my-jobset"

用于:Jobs, Pods

此标签/注解用于存储 Job 或 Pod 所属的 JobSet 的名称。JobSet 是您可以部署到 Kubernetes 集群中的扩展 API。

jobset.sigs.k8s.io/replicatedjob-replicas

类型:Label, Annotation

示例:jobset.sigs.k8s.io/replicatedjob-replicas: "5"

用于:Jobs, Pods

此标签/注解指定 ReplicatedJob 的副本数量。

jobset.sigs.k8s.io/replicatedjob-name

类型:Label, Annotation

示例:jobset.sigs.k8s.io/replicatedjob-name: "my-replicatedjob"

用于:Jobs, Pods

此标签或注解存储此 Job 或 Pod 所属的复制型作业 (replicated job) 的名称。

jobset.sigs.k8s.io/job-index

类型:Label, Annotation

示例:jobset.sigs.k8s.io/job-index: "0"

用于:Jobs, Pods

此标签/注解由 JobSet 控制器设置在其子 Job 和 Pod 上。它包含 Job 副本在其父 ReplicatedJob 中的索引。

jobset.sigs.k8s.io/job-key

类型:Label, Annotation

示例:jobset.sigs.k8s.io/job-key: "0f1e93893c4cb372080804ddb9153093cb0d20cefdd37f653e739c232d363feb"

用于:Jobs, Pods

JobSet 控制器在 JobSet 的子 Job 和 Pod 上设置此标签(以及一个具有相同键的注解)。该值是命名空间 Job 名称的 SHA256 散列值。

alpha.jobset.sigs.k8s.io/exclusive-topology

类型:Annotation

示例:alpha.jobset.sigs.k8s.io/exclusive-topology: "zone"

用于:JobSets, Jobs

您可以在 JobSet 上设置此标签/注解,以确保每个拓扑组的 Job 具有排他性部署。您也可以在复制型作业模板上定义此标签或注解。阅读 JobSet 文档了解更多信息。

alpha.jobset.sigs.k8s.io/node-selector

类型:Annotation

示例:alpha.jobset.sigs.k8s.io/node-selector: "true"

用于:Jobs, Pods

此标签/注解可以应用于 JobSet。设置此项后,JobSet 控制器会通过添加节点选择器和容忍度来修改 Job 及其对应的 Pod。这确保了每个拓扑域的作业具有排他性部署,根据策略将这些 Pod 的调度限制到特定节点。

alpha.jobset.sigs.k8s.io/namespaced-job

类型:Label

示例:alpha.jobset.sigs.k8s.io/namespaced-job: "default_myjobset-replicatedjob-0"

用于:节点

此标签是手动或自动(例如,集群自动扩缩器)在节点上设置的。当 alpha.jobset.sigs.k8s.io/node-selector 设置为 "true" 时,JobSet 控制器会为此节点标签添加节点选择器(以及对接下来讨论的 alpha.jobset.sigs.k8s.io/no-schedule 污点的容忍度)。

alpha.jobset.sigs.k8s.io/no-schedule

类型:Taint

示例:alpha.jobset.sigs.k8s.io/no-schedule: "NoSchedule"

用于:节点

此污点是手动或自动(例如,集群自动扩缩器)在节点上设置的。当 alpha.jobset.sigs.k8s.io/node-selector 设置为 "true" 时,JobSet 控制器会为此节点污点添加容忍度(以及对之前讨论的 alpha.jobset.sigs.k8s.io/namespaced-job 标签的节点选择器)。

jobset.sigs.k8s.io/coordinator

类型:注解(Annotation),标签(Label)

示例:jobset.sigs.k8s.io/coordinator: "myjobset-workers-0-0.headless-svc"

用于:Jobs, Pods

如果在 JobSet Spec 中定义了 .spec.coordinator 字段,则此注解/标签会被用于 Job 和 Pod 上,以存储协调器 Pod 可以访问的稳定网络端点。

用于审计的注解

更多详细信息请参阅审计注解

kubeadm

kubeadm.alpha.kubernetes.io/cri-socket

类型:Annotation

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

用于:Node

kubeadm 使用此注解来保留在 init/join 时提供给 kubeadm 的 CRI socket 信息,以便后续使用。kubeadm 会使用此信息标注 Node 对象。此注解仍然是“alpha”阶段,因为理想情况下它应该作为 KubeletConfiguration 中的一个字段。

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

类型:Annotation

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

用于:Pod

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

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

类型:Annotation

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

用于:Pod

kubeadm 在本地管理的 kube-apiserver Pods 上放置此注解,用于跟踪该 API Server 实例所暴露的通告地址/端口端点。

kubeadm.kubernetes.io/component-config.hash

类型:Annotation

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

用于:ConfigMap

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

node-role.kubernetes.io/control-plane

类型:Label

用于:Node

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

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

node-role.kubernetes.io/*

类型:Label

示例:node-role.kubernetes.io/gpu: gpu

用于:Node

当你想要标记节点角色时,可以将此可选标签应用于节点。只要整体键符合对象标签的语法规则,就可以设置节点角色(标签键中 / 后面的文本)。

Kubernetes 定义了一个特定的节点角色:control-plane。你可以使用 node-role.kubernetes.io/control-plane 标签来标记该节点角色。

node-role.kubernetes.io/control-plane

类型:Taint

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

用于:Node

kubeadm 在控制平面节点上应用的污点(taint),用于限制 Pod 的放置,并只允许特定的 Pod 调度到这些节点上。

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

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

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

类型:Taint

用于:Node

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

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

resource.k8s.io/admin-access {resource-k8s-io-admin-access}

类型:Label

示例:resource.k8s.io/admin-access: "true"

用于:Namespace

用于在命名空间内授予对某些 resource.k8s.io API 类型的管理访问权限。当在命名空间上设置此标签且值为 "true"(区分大小写)时,它允许在任何命名空间的 resource.k8s.io API 类型中使用 adminAccess: true。目前,此权限适用于 ResourceClaimResourceClaimTemplate 对象。

更多信息请参阅动态资源分配管理访问

最后修改于 2025 年 4 月 15 日 1:04 PM PST:Document endpoints.kubernetes.io/managed-by (c755d00988)