已知标签、注解和污点

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

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

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

apf.kubernetes.io/autoupdate-spec

类型:注解

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

用于:FlowSchemaPriorityLevelConfiguration 对象

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

app.kubernetes.io/component

类型:标签

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

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

应用架构中的组件。

属于推荐标签之一。

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

类型:标签

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

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

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

说明

从 v1.9 开始,此标签已弃用。

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.36 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,您可以在 Secret、ConfigMap 或自定义资源上使用此注解。

它是实现 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.36 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,您可以在 Secret、ConfigMap 或自定义资源上使用此注解。

它是实现 kubectl 中基于 ApplySet 的修剪规范的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列表展示。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化方法。但是,截至 Kubernetes 1.36 版本,kubectl 要求必须提供该注解。当存在时,此注解的值必须是以完全限定名称格式(即 <resource>.<group>)的 group-kinds 逗号分隔列表。

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

类型:注解

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

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

对于 Kubernetes 1.36 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,您可以在 Secret、ConfigMap 或自定义资源上使用此注解。

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

说明

此注解目前已弃用,并被 applyset.kubernetes.io/contains-group-kinds 取代,对该注解的支持将在 applyset 进入 beta 或 GA 阶段时移除。

applyset.kubernetes.io/id (alpha)

类型:标签

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

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

此标签的使用处于 Alpha 阶段。对于 Kubernetes 1.36 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,您可以在 Secret、ConfigMap 或自定义资源上使用此标签。

它是实现 kubectl 中基于 ApplySet 的修剪规范的一部分。此标签使对象成为 ApplySet 父对象。其值是 ApplySet 的唯一 ID,由父对象自身的身份派生而来。此 ID 必须是对象所属的 group-kind-name-namespace 哈希值的 base64 编码(使用 RFC4648 的 URL 安全编码),格式为:<base64(sha256(<name>.<namespace>.<kind>.<group>))>。此标签的值与对象 UID 之间没有关系。

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

类型:标签

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

用于:自定义资源定义 (CRD)

此标签的使用处于 Alpha 阶段。它是实现 kubectl 中基于 ApplySet 的修剪规范的一部分。您可以在自定义资源定义 (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.36"

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

此注解的使用处于 Alpha 阶段。对于 Kubernetes 1.36 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,您可以在 Secret、ConfigMap 或自定义资源上使用此注解。

它是实现 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 中。

resource.kubernetes.io/pod-claim-name

类型:注解

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

用于:ResourceClaim

此注解被分配给生成的 ResourceClaim。其值对应于为之创建 ResourceClaim 的任何 Pod 的 .spec 中的资源申领名称。在动态资源分配 (dynamic resource allocation) 中,可发现设备元数据特性使用此注解将生成的 ResourceClaim 映射回基于模板的申领的 Pod 申领名称 (pod.spec.resourceClaims[].name)。Kubernetes 管理此注解,因此您不应修改它。

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

类型:注解

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

用于:Pod

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

config.kubernetes.io/local-config

类型:注解

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

用于:所有对象

此注解用于在清单 (manifests) 中将对象标记为本地配置,该配置不应提交给 Kubernetes API。

此注解的值为 "true",声明该对象仅供客户端工具使用,不应提交给 API server。

可以使用 "false" 的值来声明即使在本来被假定为本地配置的情况下,该对象也应该提交给 API server。

此注解是 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 来限制容器的能力和访问权限。

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

deployment.kubernetes.io/desired-replicas

类型:注解

示例:deployment.kubernetes.io/desired-replicas: "3"

用于:ReplicaSet

此注解由 Deployment 控制器在其管理的 ReplicaSet 上设置。该值表示 Deployment(拥有此 ReplicaSet 的对象)所期望的副本数 (.spec.replicas)。Deployment 控制器使用此注解来跟踪滚动更新和扩缩操作期间的期望状态。

这是 Deployment 控制器使用的内部注解,不应手动修改。

deployment.kubernetes.io/max-replicas

类型:注解

示例:deployment.kubernetes.io/max-replicas: "5"

用于:ReplicaSet

此注解由 Deployment 控制器在其管理的 ReplicaSet 上设置。该值表示在滚动更新期间该 ReplicaSet 允许拥有的最大副本数。它用于实现 Deployment 滚动更新策略的 maxSurge 参数,该参数控制在更新期间可以在期望数量之上创建多少个额外的 Pod。

这是 Deployment 控制器使用的内部注解,不应手动修改。

deployment.kubernetes.io/revision

类型:注解

示例:deployment.kubernetes.io/revision: "2"

用于:ReplicaSet

此注解由 Deployment 控制器在其管理的 ReplicaSet 上设置。该值表示 Deployment 的修订版本号。每次 Deployment 的 Pod 模板 (.spec.template) 发生更改时,修订版本号都会增加。此注解用于跟踪发布历史,并允许使用 kubectl rollout undo 回滚到之前的版本。

在运行 kubectl rollout history deployment/<name> 时也可以看到修订版本号。

这是 Deployment 控制器使用的内部注解,不应手动修改。

deployment.kubernetes.io/revision-history

类型:注解

示例:deployment.kubernetes.io/revision-history: "1,3"

用于:ReplicaSet

此注解由 Deployment 控制器在回滚导致 ReplicaSet 被重用时设置在 ReplicaSet 上。该值是该 ReplicaSet 为 Deployment 服务过的所有先前修订版本号的逗号分隔列表,当 deployment.kubernetes.io/revision 注解更新为新的修订版本号时,它会作为历史记录进行维护。

这是 Deployment 控制器使用的内部注解,不应手动修改。

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 函数可以在其生成的对象上包含此注解。

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

类型:注解

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

用于:Pod

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

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

类型:注解

示例

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

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

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

类型:注解

示例

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

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

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

类型:注解

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

用于:Pod

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

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

类型:注解

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

用于:Pod

此注解记录了从许可调度器插件返回的超时时间,供 https://sigs.k8s.io/kube-scheduler-simulator 使用。

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

类型:注解

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

用于:Pod

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

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

类型:注解

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

用于:Pod

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

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

类型:注解

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

用于:Pod

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

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

类型:注解

示例

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

用于:Pod

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

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

类型:注解

示例

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

用于:Pod

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

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

类型:注解

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

用于:Pod

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

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

类型:注解

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

用于:Pod

此注解记录了来自调度器插件的所有过去调度结果,供 https://sigs.k8s.io/kube-scheduler-simulator 使用。

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

类型:注解

    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

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

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

类型:注解

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

用于:Pod

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

kubernetes.io/arch

类型:标签

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

用于:Node

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

kubernetes.io/os

类型:标签

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

用于:Node, 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"

用于:Namespace

Kubernetes API server(控制平面的一部分)会在所有命名空间上设置此标签。标签值被设置为命名空间的名称。您不能更改此标签的值。

如果您想通过标签选择器来定位特定命名空间,这将非常有用。

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 server 上创建一个镜像 Pod (mirror 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 server 上创建并随后调度到当前节点的 Pod,注解值为 api

kubernetes.io/config.seen

类型:注解

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

用于:Pod

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

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 server 自动创建的任何 APIService 对象上设置此标签。该标签标记了控制平面应如何管理该 APIService。您不应自行添加、修改或删除此标签。

说明

当 API server 没有与 APIService 的 API 组/版本对应的内置或自定义资源 API 时,自动管理的 APIService 对象将被 kube-apiserver 删除。

有两个可能的值:

  • onstart:APIService 应在 API server 启动时进行对齐,但在其他时间不进行对齐。
  • true:API server 应持续对齐此 APIService。

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

类型:注解

用于:Service

此注解曾用于指示 Endpoints 控制器应为未就绪的 Pod 创建 Endpoints。自 Kubernetes 1.11 起,此特性的首选 API 是 Service 上的 .publishNotReadyAddresses 字段。此注解在 Kubernetes 1.36 中无效。

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

类型:注解

用于:HorizontalPodAutoscaler

此注解用于在早期 Kubernetes 版本中配置 HorizontalPodAutoscaler (HPA) 的扩缩行为。它允许您指定 HPA 应如何向上或向下扩缩 Pod,包括设置稳定窗口和扩缩策略。在任何受支持的 Kubernetes 版本中设置此注解均无效。

kubernetes.io/hostname

类型:标签

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

用于:Node

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

此标签也用作拓扑层次结构的一部分。有关更多信息,请参阅 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

说明

kubernetes.io/enforce-mountable-secrets 自 Kubernetes v1.32 起弃用。使用单独的命名空间来隔离对挂载 Secret 的访问。

此注解的值必须为 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.alpha.kubernetes.io/ttl (已弃用)

类型:标签

示例:node.alpha.kubernetes.io/ttl: "0"

用于:Node

此标签曾被某些工具(例如 minikube)历史性地用于设置节点的生存时间 (TTL)。该标签已弃用,不应在新的部署中使用。

说明

此标签已弃用,在当前 Kubernetes 版本中无效。为了向后兼容,旧工具可能仍然会设置它。

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

类型:标签

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

类型:注解

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

用于:Pod

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

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

类型:注解

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

用于:Pod

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

说明

此注解仅影响 DaemonSet Pod。

kubernetes.io/ingress-bandwidth

类型:注解

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

用于:Pod

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

说明

入口流量整形注解是一项实验性功能。如果您想启用流量整形支持,必须将 bandwidth 插件添加到您的 CNI 配置文件(默认为 /etc/cni/net.d),并确保二进制文件包含在您的 CNI bin 目录(默认为 /opt/cni/bin)中。

kubernetes.io/egress-bandwidth

类型:注解

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

用于:Pod

Pod 的出口流量通过监管 (policing) 进行处理,即简单地丢弃超出配置速率的数据包。您在 Pod 上设置的限制不会影响其他 Pod 的带宽。要限制 Pod 的带宽,请编写对象定义 JSON 文件,并使用 kubernetes.io/egress-bandwidth 注解指定数据流量速度。用于指定出口速率的单位是每秒位数,作为数量 (Quantity)。例如,10M 表示每秒 10 兆位。

说明

出口流量整形注解是一项实验性功能。如果您想启用流量整形支持,必须将 bandwidth 插件添加到您的 CNI 配置文件(默认为 /etc/cni/net.d),并确保二进制文件包含在您的 CNI bin 目录(默认为 /opt/cni/bin)中。

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

类型:标签

说明

从 v1.17 开始,此标签已弃用,建议使用 node.kubernetes.io/instance-type

node.kubernetes.io/instance-type

类型:标签

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

用于:Node

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

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

类型:标签

说明

从 v1.17 开始,此标签已弃用,建议使用 topology.kubernetes.io/region

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

类型:标签

说明

从 v1.17 开始,此标签已弃用,建议使用 topology.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

它被添加到应通过 CSIMigration 特性门控由其对应的 CSI 驱动程序动态配置/删除的 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 中。当设置此注解时,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

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

在 PersistentVolume 上:拓扑感知卷配置器会自动在 PersistentVolume 上设置节点亲和性约束。

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

区域代表一个更大的域,由一个或多个可用区 (zone) 组成。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 不支持自动标记您的 PersistentVolume,您应该考虑手动添加标签(或添加对 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

此注解可用于 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 (已弃用)

类型:注解

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

用于:PersistentVolume

Kubernetes 管理员可以在 PersistentVolume 挂载到节点上时指定额外的挂载选项

volume.kubernetes.io/storage-provisioner

类型:注解

用于:PersistentVolumeClaim

此注解被添加到预期进行动态配置的 PVC 上。其值为预期为此 PVC 配置卷的卷插件的名称。

volume.kubernetes.io/selected-node

类型:注解

用于:PersistentVolumeClaim

此注解被添加到由调度程序触发进行动态配置的 PVC 上。其值为所选节点的名称。

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

类型:注解

用于:Node

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

注解的值并不重要。

node.kubernetes.io/windows-build

类型:标签

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

用于:Node

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

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

storage.alpha.kubernetes.io/migrated-plugins

类型:注解

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

用于:CSINode(一种扩展 API)

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

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

service.kubernetes.io/headless

类型:标签

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

用于:EndpointSlice, Endpoints

控制平面 在所属的 Service 为 Headless 时,将此 标签 添加到 EndpointSlice 和 Endpoints 对象(作为服务代理可以忽略这些端点的提示)。要了解更多信息,请阅读 Headless 服务

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

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

用于:Service

这是 service.kubernetes.io/topology-mode 注解的废弃别名,功能相同。

service.kubernetes.io/topology-mode

类型:注解

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

用于:Service

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

更多详情请参见 拓扑感知路由

kubernetes.io/service-name

类型:标签

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

用于:EndpointSlice

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

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

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 时区)。

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

类型:标签

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

用于:Endpoints

此标签在内部用于标记由 Kubernetes 创建的 Endpoints 对象(区别于由用户或外部控制器创建的 Endpoints)。

说明

Endpoints API 已被废弃,推荐使用 EndpointSlice

endpointslice.kubernetes.io/managed-by

类型:标签

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

用于:EndpointSlices

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

endpointslice.kubernetes.io/skip-mirror

类型:标签

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

用于:Endpoints

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

service.kubernetes.io/service-proxy-name

类型:标签

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

用于:Service

为此标签设置值会告诉 kube-proxy 在代理时忽略此服务。这允许为此服务使用替代的代理实现(例如,运行一个以自己的方式管理 nftables 的 DaemonSet)。通过为每个替代代理实现使用唯一的值来负责其各自的服务,可以同时激活多个替代代理实现。

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

类型:注解

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

用于:Pod

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

说明

从 v1.20 开始,此注解已被弃用。实验性 Hyper-V 支持已在 1.21 版本中移除。

gateway.networking.k8s.io/generator

类型:注解

示例: gateway.networking.k8s.io/generator: "ingress2gateway"

用于:Gateway, HTTPRoute 以及其他 Gateway API 资源

此注解由自动生成 Gateway API 资源的工具添加。该值标识了创建该资源的工具(例如 ingress2gateway)。该注解仅供参考,不会影响任何 Gateway API 实现的行为。

ingressclass.kubernetes.io/is-default-class

类型:注解

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

用于:IngressClass

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

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

类型:注解

用于:Ingress

说明

从 v1.18 开始,此注解已弃用,推荐使用 spec.ingressClassName

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

类型:标签

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

用于:Service

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

然而,在任何 Service 上设置此标签已被弃用。

storageclass.kubernetes.io/is-default-class

类型:注解

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

用于:StorageClass

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

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

类型:注解

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

用于:Node

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

当 kubelet 启动并设置 --cloud-provider 标志为任何值(包括外部和传统的树内云提供商)时,它会在节点上设置此注解以表示从命令行标志(--node-ip)设置的 IP 地址。此 IP 由 cloud-controller-manager 与云提供商验证是否有效。

batch.kubernetes.io/job-completion-index

类型:注解,标签

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

用于:Pod

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

注意:必须启用 PodIndexLabel 特性门控,才能将其添加为 Pod 标签,否则它仅作为注解存在。

batch.kubernetes.io/cronjob-scheduled-timestamp

类型:注解

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

用于:由 CronJobs 控制的 Jobs 和 Pods

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

cronjob.kubernetes.io/instantiate

类型:注解

示例: cronjob.kubernetes.io/instantiate: "manual"

用于:Jobs

当您使用 kubectl create job 并带有 --from=cronjob/<cronjob-name> 标志从现有的 CronJob 模板手动创建 Job 时,kubectl 会在新创建的 Job 上设置此注解。此注解的值始终为 manual。此注解允许您区分用户按需创建的 Job 和 CronJob 控制器在预定时间自动创建的 Job。

kubectl.kubernetes.io/default-container

类型:注解

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

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

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

类型:注解

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

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

说明

此注解已被弃用。您应该改用 kubectl.kubernetes.io/default-container 注解。1.25 及更新版本的 Kubernetes 将忽略此注解。

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

kubectl.kubernetes.io/restartedAt

类型:注解

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

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

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

您不应假定此注解代表最近一次更新的日期/时间;因为在最后一次手动触发的滚动更新后,可能发生了其他更改。

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

endpoints.kubernetes.io/over-capacity (已弃用)

类型:注解

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

用于:Endpoints

控制平面 如果相关的 Service 拥有超过 1000 个支持端点,则会将此注解添加到 Endpoints 对象中。此注解表示 Endpoints 对象已超出容量,端点数量已被截断为 1000。

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

说明

Endpoints API 已被废弃,推荐使用 EndpointSlice。一个 Service 可以拥有多个 EndpointSlice 对象。因此,EndpointSlices 不需要截断。

endpoints.kubernetes.io/last-change-trigger-time (已弃用)

类型:注解

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

用于:Endpoints

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

说明

Endpoints API 已被废弃,推荐使用 EndpointSlice

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}

用于:Endpoints

控制平面 以前使用 Endpoints 对象来协调 Kubernetes 控制平面的领导者分配。此 Endpoints 对象包含一个具有以下详细信息的注解

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

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

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

类型:注解

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

用于:Jobs

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

job-name (已弃用)

类型:标签

示例: job-name: "pi"

用于:由 Jobs 控制的 Jobs 和 Pods

说明

从 Kubernetes 1.27 开始,此标签已被弃用。Kubernetes 1.27 及更新版本忽略此标签,并使用带有前缀的 job-name 标签。

controller-uid (已弃用)

类型:标签

示例: controller-uid: "$UID"

用于:由 Jobs 控制的 Jobs 和 Pods

说明

从 Kubernetes 1.27 开始,此标签已被弃用。Kubernetes 1.27 及更新版本忽略此标签,并使用带有前缀的 controller-uid 标签。

batch.kubernetes.io/job-name

类型:标签

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

用于:由 Jobs 控制的 Jobs 和 Pods

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

batch.kubernetes.io/controller-uid

类型:标签

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

用于:由 Jobs 控制的 Jobs 和 Pods

此标签用作以编程方式获取与 Job 对应的所有 Pod 的方式。
controller-uid 是一个唯一标识符,设置在 selector 字段中,以便 Job 控制器可以获取所有对应的 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 (已弃用)

类型:注解

用于:Node

此注解要求启用 NodePreferAvoidPods 调度插件。该插件自 Kubernetes 1.22 起已弃用。请改用 污点和容忍度 (Taints and Tolerations)

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.available, imagefs.inodesFree, nodefs.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.available 指标的可用 PID 数量。然后将该指标与可在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/删除节点状态和污点。

node.kubernetes.io/out-of-service

类型:污点 (Taint)

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

用于:Node

用户可以手动将此污点添加到节点,标记其为暂停服务。如果一个节点被此污点标记为暂停服务,则该节点上的 Pod 如果没有匹配的容忍度将被强制删除,并且在该节点上终止的 Pod 的卷卸载操作将立即发生。这允许暂停服务节点上的 Pod 快速恢复到另一个节点上。

注意

有关何时以及如何使用此污点的更多详细信息,请参阅 非优雅节点关机 (Non-graceful node shutdown)

node.cloudprovider.kubernetes.io/uninitialized

类型:污点 (Taint)

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

用于:Node

当 kubelet 使用 "external" 云提供商启动时,在 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/*

类型:标签

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

类型:注解

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

用于:Node

对于调度了节点功能发现 (NFD) master 的节点,此注解记录了 NFD master 的版本。它仅供参考。

nfd.node.kubernetes.io/worker.version

类型:注解

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

用于:Nodes

此注解记录了节点上正在运行的节点功能发现 worker 的版本(如果有)。它仅供参考。

nfd.node.kubernetes.io/feature-labels

类型:注解

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

用于:Nodes

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

nfd.node.kubernetes.io/extended-resources

类型:注解

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

用于:Nodes

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

nfd.node.kubernetes.io/node-name

类型:标签

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

用于:Nodes

它指定 NodeFeature 对象针对的是哪个节点。NodeFeature 对象的创建者必须设置此标签,对象的消费者应该使用该标签来过滤为特定节点指定的功能。

说明

这些节点功能发现 (NFD) 标签或注解仅适用于运行 NFD 的节点。要了解有关 NFD 及其组件的更多信息,请访问其官方 文档

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-s3-bucket-name: 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-s3-bucket-prefix: "/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 弹性负载均衡的集成根据此注解配置负载均衡器。负载均衡器的连接排空 (connection draining) 设置取决于您设置的值。

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",则每个负载均衡器节点都会将请求均匀地分配到所有启用的 可用区 (availability zones) 中的已注册目标。如果您禁用跨区域负载均衡,则每个负载均衡器节点仅将其可用区内的请求均匀地分配到已注册的目标。

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 网络负载均衡器 (Network Load Balancer)。

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 负载均衡器控制器会自动创建一个新的安全组并将其附加到负载均衡器。

说明

Kubernetes v1.27 及更高版本不直接设置或读取此注解。但是,AWS 负载均衡器控制器(Kubernetes 项目的一部分)仍然使用 service.beta.kubernetes.io/aws-load-balancer-security-groups 注解。

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
云控制器管理器配置网络负载均衡器
external
云控制器管理器不配置任何负载均衡器

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

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

注意

请勿在现有的 Service 对象上修改或添加 service.beta.kubernetes.io/aws-load-balancer-type 注解。有关更多详细信息,请参阅关于此主题的 AWS 文档。

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

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

用于:Service

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

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

说明

此注解已弃用。

pod-security.kubernetes.io/enforce

类型:标签

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

用于:Namespace

必须privileged, baselinerestricted 之一,这些值对应于 Pod 安全标准 级别。具体而言,enforce 标签禁止在标记的命名空间中创建任何不符合指定级别要求的 Pod。

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

pod-security.kubernetes.io/enforce-version

类型:标签

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

用于:Namespace

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

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

pod-security.kubernetes.io/audit

类型:标签

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

用于:Namespace

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

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

pod-security.kubernetes.io/audit-version

类型:标签

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

用于:Namespace

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

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

pod-security.kubernetes.io/warn

类型:标签

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

用于:Namespace

必须privileged, baselinerestricted 之一,这些值对应于 Pod 安全标准 级别。具体而言,warn 标签不会阻止在标记的命名空间中创建不符合指定级别要求的 Pod,但在执行此操作后会向用户返回警告。请注意,当创建或更新包含 Pod 模板的对象(如 Deployments, Jobs, StatefulSets 等)时,也会显示警告。

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

pod-security.kubernetes.io/warn-version

类型:标签

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

用于:Namespace

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

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

rbac.authorization.kubernetes.io/autoupdate

类型:注解

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

用于:ClusterRole, ClusterRoleBinding, Role, RoleBinding

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

kubernetes.io/psp (已弃用)

类型:注解

示例: kubernetes.io/psp: restricted

用于:Pod

此注解仅在您使用 PodSecurityPolicy 对象时才有意义。Kubernetes v1.36 不支持 PodSecurityPolicy API。

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

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

类型:注解

用于:Pod

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

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

类型:注解

用于:Pod

v1.25 之前的 Kubernetes 允许您使用此注解配置 seccomp 行为。请参阅 使用 seccomp 限制容器的系统调用 以了解为 Pod 指定 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,因此去调度器 (descheduler) 不会删除此 Pod。

说明

从 v1.16 开始,此注解已被弃用,推荐使用 Pod 优先级 (Pod Priority)

jobset.sigs.k8s.io/jobset-name

类型:标签,注解

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

用于:Jobs, Pods

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

jobset.sigs.k8s.io/replicatedjob-replicas

类型:标签,注解

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

用于:Jobs, Pods

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

jobset.sigs.k8s.io/replicatedjob-name

类型:标签,注解

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

用于:Jobs, Pods

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

jobset.sigs.k8s.io/job-index

类型:标签,注解

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

用于:Jobs, Pods

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

jobset.sigs.k8s.io/job-key

类型:标签,注解

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

用于:Jobs, Pods

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

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

类型:注解

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

用于:JobSets, Jobs

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

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

类型:注解

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

用于:Jobs, Pods

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

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

类型:标签

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

用于:Nodes

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

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

类型:污点 (Taint)

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

用于:Nodes

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

jobset.sigs.k8s.io/coordinator

类型:注解,标签

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

用于:Jobs, Pods

如果 JobSet 规范定义了 .spec.coordinator 字段,则此注解/标签用于在 Job 和 Pod 上存储可到达协调器 Pod 的稳定网络端点。

用于审计的注解

查看 审计注解 的更多详情。

kubeadm

kubeadm.alpha.kubernetes.io/cri-socket (已弃用)

类型:注解

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

用于:Node

说明

从 v1.34 开始,此注解已弃用,kubeadm 将不再主动设置和使用它。

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

类型:标签

用于:Node

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

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

node-role.kubernetes.io/*

类型:标签

示例: 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 在控制平面节点上应用的污点,用于限制放置 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.kubernetes.io/admin-access {resource-kubernetes-io-admin-access}

类型:标签

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

用于:Namespace

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

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


最后修改于 2026 年 4 月 16 日下午 4:02 PST: KEP-5304:更新注解文档 (88d6eaa63d)