知名标签、注解和污点
Kubernetes 保留 kubernetes.io
和 k8s.io
命名空间中的所有标签、注解和污点。
本文档既可作为值的参考,也是分配值的协调点。
API 对象上使用的标签、注解和污点
apf.kubernetes.io/autoupdate-spec
类型:注解
示例:apf.kubernetes.io/autoupdate-spec: "true"
用于:FlowSchema
和 PriorityLevelConfiguration
对象
如果在 FlowSchema 或 PriorityLevelConfiguration 上将此注解设置为 true,则该对象的 spec
由 kube-apiserver 管理。如果 API 服务器无法识别 APF 对象,并且你将其注解为自动更新,则 API 服务器将删除整个对象。否则,API 服务器不管理对象 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.34 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。
用于实现 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.34 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。
用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列出。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化。但是,截至 Kubernetes 1.34 版本,kubectl 要求它。如果存在,此注解的值必须是组种类(采用完全限定名称格式,即 <resource>.<group>
)的逗号分隔列表。
applyset.kubernetes.io/contains-group-resources(已弃用)
类型:注解
示例:applyset.kubernetes.io/contains-group-resources: "certificates.cert-manager.io,configmaps,deployments.apps,secrets,services"
用于:用作 ApplySet 父对象的对象。
对于 Kubernetes 1.34 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。
用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列出。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化。但是,在 Kubernetes 1.34 版本中,kubectl 要求它。如果存在,此注解的值必须是组种类(采用完全限定名称格式,即 <resource>.<group>
)的逗号分隔列表。
注意
此注解目前已弃用,并由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.34 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此标签。
用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此标签使对象成为 ApplySet 父对象。其值是 ApplySet 的唯一 ID,该 ID 源自父对象本身的身份。此 ID 必须是对象上组种类名称命名空间的哈希值的 base64 编码(使用 RFC4648 的 URL 安全编码),形式为:<base64(sha256(<name>.<namespace>.<kind>.<group>))>
。此标签的值与对象 UID 之间没有关系。
applyset.kubernetes.io/is-parent-type (alpha)
类型:标签
示例:applyset.kubernetes.io/is-parent-type: "true"
用于:自定义资源定义 (CRD)
此标签的使用是 Alpha 阶段。用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。你可以在 CustomResourceDefinition (CRD) 上设置此标签,以将其定义的自定义资源类型(而不是 CRD 本身)标识为 ApplySet 的允许父级。此标签的唯一允许值为 "true"
;如果你想将 CRD 标记为不是 ApplySet 的有效父级,请省略此标签。
applyset.kubernetes.io/part-of (alpha)
类型:标签
示例:applyset.kubernetes.io/part-of: "applyset-0eFHV8ySqp7XoShsGvyWFQD3s96yqwHmzc4e0HR1dsY-v1"
用于:所有对象。
此标签的使用是 Alpha 阶段。用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此标签使对象成为 ApplySet 的成员。标签的值必须与父对象上 applyset.kubernetes.io/id
标签的值匹配。
applyset.kubernetes.io/tooling (alpha)
类型:注解
示例:applyset.kubernetes.io/tooling: "kubectl/v1.34"
用于:用作 ApplySet 父对象的对象。
此注解的使用是 Alpha 阶段。对于 Kubernetes 1.34 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。
用于实现 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
此注解分配给生成的 ResourceClaims。其值对应于为其创建 ResourceClaim 的任何 Pod 的 .spec
中资源声明的名称。此注解是动态资源分配的内部实现细节。你不需要读取或修改此注解的值。
cluster-autoscaler.kubernetes.io/safe-to-evict
类型:注解
示例:cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
用于:Pod
当此注解设置为 "true"
时,即使其他规则通常会阻止驱逐,集群自动扩缩器也允许驱逐 Pod。集群自动扩缩器永远不会驱逐显式设置为 "false"
的 Pod;你可以在你希望继续运行的重要 Pod 上设置它。如果未设置此注解,则集群自动扩缩器遵循其 Pod 级别行为。
config.kubernetes.io/local-config
类型:注解
示例:config.kubernetes.io/local-config: "true"
用于:所有对象
此注解用于清单中,将对象标记为不应提交给 Kubernetes API 的本地配置。
此注解的值 "true"
表示该对象仅由客户端工具使用,不应提交给 API 服务器。
值 "false"
可用于声明即使对象在其他情况下被假定为本地,也应将其提交给 API 服务器。
此注解是 Kubernetes 资源模型 (KRM) 函数规范的一部分,该规范由 Kustomize 和类似的第三方工具使用。例如,Kustomize 从其最终构建输出中删除具有此注解的对象。
container.apparmor.security.beta.kubernetes.io/*(已弃用)
类型:注解
示例:container.apparmor.security.beta.kubernetes.io/my-container: my-custom-profile
用于:Pod
此注解允许你指定 Kubernetes Pod 中容器的 AppArmor 安全配置文件。从 Kubernetes v1.30 开始,应使用 appArmorProfile
字段设置此值。要了解更多信息,请参阅 AppArmor 教程。该教程演示了如何使用 AppArmor 限制容器的功能和访问。
指定的配置文件规定了容器化进程必须遵守的一组规则和限制。这有助于强制执行容器的安全策略和隔离。
internal.config.kubernetes.io/*(保留前缀)
类型:注解
用于:所有对象
此前缀保留供根据 Kubernetes 资源模型 (KRM) 函数规范充当协调器的工具内部使用。带有此前缀的注解是协调过程的内部注解,不会持久化到文件系统上的清单中。换句话说,协调器工具在从本地文件系统读取文件时应设置这些注解,并在将函数输出写回文件系统时将其删除。
KRM 函数不得修改带有此前缀的注解,除非对给定注解另有规定。这使得协调器工具可以添加额外的内部注解,而无需更改现有函数。
internal.config.kubernetes.io/path
类型:注解
示例:internal.config.kubernetes.io/path: "relative/file/path.yaml"
用于:所有对象
此注解记录了加载对象时清单文件的斜线分隔、与操作系统无关的相对路径。该路径相对于文件系统上的固定位置,由协调器工具确定。
此注解是 Kubernetes 资源模型 (KRM) 函数规范的一部分,该规范由 Kustomize 和类似的第三方工具使用。
KRM 函数不应修改输入对象上的此注解,除非它正在修改引用的文件。KRM 函数可以在其生成的对象上包含此注解。
internal.config.kubernetes.io/index
类型:注解
示例:internal.config.kubernetes.io/index: "2"
用于:所有对象
此注解记录了清单文件中包含对象的 YAML 文档的零索引位置。请注意,YAML 文档由三个破折号 (---
) 分隔,每个文档可以包含一个对象。当未指定此注解时,默认为 0。
此注解是 Kubernetes 资源模型 (KRM) 函数规范的一部分,该规范由 Kustomize 和类似的第三方工具使用。
KRM 函数不应修改输入对象上的此注解,除非它正在修改引用的文件。KRM 函数可以在其生成的对象上包含此注解。
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"
用于:节点
Kubelet 用 Go 定义的 runtime.GOARCH
填充此值。如果你混合使用 ARM 和 x86 节点,这会很有用。
kubernetes.io/os
类型:标签
示例:kubernetes.io/os: "linux"
用于:节点、Pod
对于节点,kubelet 用 Go 定义的 runtime.GOOS
填充此值。如果你在集群中混合使用操作系统(例如:混合使用 Linux 和 Windows 节点),这会很有用。
你也可以在 Pod 上设置此标签。Kubernetes 允许你为此标签设置任何值;如果你使用此标签,你仍应将其设置为此 Pod 实际使用的操作系统的 Go runtime.GOOS
字符串。
当 Pod 的 kubernetes.io/os
标签值与节点上的标签值不匹配时,节点上的 kubelet 将不接受 Pod。但是,kube-scheduler 不会考虑这一点。另外,如果 Pod 的操作系统与运行该 kubelet 的节点的操作系统不同,则 kubelet 会拒绝运行你已指定 Pod OS 的 Pod。有关更多详细信息,请参阅 Pod OS。
kubernetes.io/metadata.name
类型:标签
示例:kubernetes.io/metadata.name: "mynamespace"
用于:命名空间
Kubernetes API 服务器(控制平面的一部分)在所有命名空间上设置此标签。标签值设置为命名空间的名称。你不能更改此标签的值。
如果你想使用标签选择器定位特定命名空间,这会很有用。
kubernetes.io/limit-ranger
类型:注解
示例:kubernetes.io/limit-ranger: "LimitRanger plugin set: cpu, memory request for container nginx; cpu, memory limit for container nginx"
用于:Pod
Kubernetes 默认不提供任何资源限制,这意味着除非你明确定义限制,否则你的容器可以消耗无限的 CPU 和内存。你可以为 Pod 定义默认请求或默认限制。你可以通过在相关命名空间中创建 LimitRange 来实现此目的。定义 LimitRange 后部署的 Pod 将应用这些限制。注解 kubernetes.io/limit-ranger
记录了为 Pod 指定了资源默认值,并且它们已成功应用。有关更多详细信息,请阅读 LimitRanges。
kubernetes.io/config.hash
类型:注解
示例:kubernetes.io/config.hash: "df7cc47f8477b6b1226d7d23a904867b"
用于:Pod
当 kubelet 根据给定清单创建静态 Pod 时,它会将此注解附加到静态 Pod。注解的值是 Pod 的 UID。请注意,kubelet 还会将 .spec.nodeName
设置为当前节点名称,就像 Pod 已调度到该节点一样。
kubernetes.io/config.mirror
类型:注解
示例:kubernetes.io/config.mirror: "df7cc47f8477b6b1226d7d23a904867b"
用于:Pod
对于 kubelet 在节点上创建的静态 Pod,API 服务器上会创建一个镜像 Pod。kubelet 添加一个注解以指示此 Pod 实际上是镜像 Pod。注解值从kubernetes.io/config.hash
注解复制,该注解是 Pod 的 UID。
当更新设置此注解的 Pod 时,不能更改或删除该注解。如果 Pod 没有此注解,则在 Pod 更新期间不能添加它。
kubernetes.io/config.source
类型:注解
示例:kubernetes.io/config.source: "file"
用于:Pod
此注解由 kubelet 添加,以指示 Pod 的来源。对于静态 Pod,注解值可以是 file
或 http
,具体取决于 Pod 清单的位置。对于在 API 服务器上创建然后调度到当前节点的 Pod,注解值为 api
。
kubernetes.io/config.seen
类型:注解
示例:kubernetes.io/config.seen: "2023-10-27T04:04:56.011314488Z"
用于:Pod
当 kubelet 第一次看到 Pod 时,它可能会向 Pod 添加此注解,值为 RFC3339 格式的当前时间戳。
addonmanager.kubernetes.io/mode
类型:标签
示例:addonmanager.kubernetes.io/mode: "Reconcile"
用于:所有对象
要指定如何管理附加组件,你可以使用 addonmanager.kubernetes.io/mode
标签。此标签可以有三个值之一:Reconcile
、EnsureExists
或 Ignore
。
Reconcile
:附加组件资源将定期与预期状态协调。如果存在任何差异,附加组件管理器将根据需要重新创建、重新配置或删除资源。如果未指定标签,这是默认模式。EnsureExists
:附加组件资源将仅检查是否存在,但创建后不会修改。当没有具有该名称的资源实例时,附加组件管理器将创建或重新创建资源。Ignore
:附加组件资源将被忽略。此模式适用于与附加组件管理器不兼容或由另一个控制器管理的附加组件。
有关更多详细信息,请参阅 Addon-manager。
beta.kubernetes.io/arch(已弃用)
类型:标签
此标签已弃用。请改用kubernetes.io/arch
。
beta.kubernetes.io/os(已弃用)
类型:标签
此标签已弃用。请改用kubernetes.io/os
。
kube-aggregator.kubernetes.io/automanaged
类型:标签
示例:kube-aggregator.kubernetes.io/automanaged: "onstart"
用于:APIService
kube-apiserver
在 API 服务器自动创建的任何 APIService 对象上设置此标签。该标签标记控制平面应如何管理该 APIService。你不应自行添加、修改或删除此标签。
注意
当 kube-apiserver 没有与 APIService 的 API 组/版本对应的内置或自定义资源 API 时,会自动管理的 APIService 对象将被删除。有两个可能的值
onstart
:APIService 应在 API 服务器启动时协调,但除此之外不应协调。true
:API 服务器应持续协调此 APIService。
service.alpha.kubernetes.io/tolerate-unready-endpoints(已弃用)
类型:注解
用于:StatefulSet
服务上的此注解表示 Endpoints 控制器是否应继续为未就绪的 Pod 创建 Endpoints。这些服务的 Endpoints 保留其 DNS 记录,并从 kubelet 启动 Pod 中的所有容器并将其标记为 Running 的那一刻起,直到 kubelet 停止所有容器并从 API 服务器删除 Pod,持续接收来自服务的流量。
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"
用于:节点
Kubelet 用节点的主机名填充此标签。请注意,主机名可以通过将 --hostname-override
标志传递给 kubelet
从“实际”主机名更改。
此标签也用作拓扑层次结构的一部分。有关更多信息,请参阅topology.kubernetes.io/zone。
kubernetes.io/change-cause
类型:注解
示例:kubernetes.io/change-cause: "kubectl edit --record deployment foo"
用于:所有对象
此注解是对更改原因的最佳猜测。
当向可能更改对象的 kubectl
命令添加 --record
时,它会被填充。
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 强制执行以下规则
- 作为卷挂载的 Secret 必须列在 ServiceAccount 的
secrets
字段中。 - 容器(包括 Sidecar 容器和 Init 容器)的
envFrom
中引用的 Secret 也必须列在 ServiceAccount 的 secrets 字段中。如果 Pod 中的任何容器引用了 ServiceAccount 的secrets
字段中未列出的 Secret(即使该引用被标记为optional
),则 Pod 将无法启动,并会生成指示不合规 Secret 引用的错误。 - Pod 的
imagePullSecrets
中引用的 Secret 必须存在于 ServiceAccount 的imagePullSecrets
字段中,否则 Pod 将无法启动,并会生成指示不合规镜像拉取 Secret 引用的错误。
当你创建或更新 Pod 时,将检查这些规则。如果 Pod 不遵守它们,它将无法启动,你将看到一条错误消息。如果 Pod 已经在运行并且你将 kubernetes.io/enforce-mountable-secrets
注解更改为 true,或者你编辑关联的 ServiceAccount 以删除对 Pod 正在使用的 Secret 的引用,则 Pod 将继续运行。
node.kubernetes.io/exclude-from-external-load-balancers
类型:标签
示例:node.kubernetes.io/exclude-from-external-load-balancers
用于:节点
你可以向特定的工作节点添加标签,以将它们从外部负载均衡器使用的后端服务器列表中排除。以下命令可用于将工作节点从后端集中的后端服务器列表中排除
kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers=true
controller.kubernetes.io/pod-deletion-cost
类型:注解
示例:controller.kubernetes.io/pod-deletion-cost: "10"
用于:Pod
此注解用于设置Pod 删除成本,它允许用户影响 ReplicaSet 的缩减顺序。注解值解析为 int32
类型。
cluster-autoscaler.kubernetes.io/enable-ds-eviction
类型:注解
示例:cluster-autoscaler.kubernetes.io/enable-ds-eviction: "true"
用于:Pod
此注解控制 DaemonSet pod 是否应被 ClusterAutoscaler 驱逐。此注解需要在 DaemonSet 清单中的 DaemonSet pod 上指定。当此注解设置为 "true"
时,即使其他规则通常会阻止驱逐,ClusterAutoscaler 也允许驱逐 DaemonSet Pod。为了禁止 ClusterAutoscaler 驱逐 DaemonSet pod,你可以将此注解设置为 "false"
以用于重要的 DaemonSet pod。如果未设置此注解,则 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 的出站流量通过策略进行处理,该策略简单地丢弃超过配置速率的包。你对 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"
用于:节点
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
它添加到 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC),这些卷应通过 CSIMigration
功能门控由其相应的 CSI 驱动程序动态提供/删除。设置此注解后,Kubernetes 组件将“待命”,external-provisioner
将对对象进行操作。
statefulset.kubernetes.io/pod-name
类型:标签
示例:statefulset.kubernetes.io/pod-name: "mystatefulset-7"
用于:Pod
当 StatefulSet 控制器为 StatefulSet 创建 Pod 时,控制平面会在该 Pod 上设置此标签。标签的值是正在创建的 Pod 的名称。
有关更多详细信息,请参阅 StatefulSet 主题中的Pod 名称标签。
scheduler.alpha.kubernetes.io/node-selector
类型:注解
示例:scheduler.alpha.kubernetes.io/node-selector: "name-of-node-selector"
用于:命名空间
PodNodeSelector 使用此注解键将节点选择器分配给命名空间中的 Pod。
topology.kubernetes.io/region
类型:标签
示例:topology.kubernetes.io/region: "us-east-1"
用于:节点、PersistentVolume
请参阅topology.kubernetes.io/zone。
topology.kubernetes.io/zone
类型:标签
示例:topology.kubernetes.io/zone: "us-east-1c"
用于:节点、PersistentVolume
在节点上:kubelet
或外部 cloud-controller-manager
用云提供商的信息填充此值。仅当你使用云提供商时才会设置此值。但是,如果这在你的拓扑中合理,你可以考虑在节点上设置此值。
在 PersistentVolume 上:拓扑感知卷提供者将自动在 PersistentVolume
上设置节点亲和性约束。
区域表示逻辑故障域。Kubernetes 集群通常跨多个区域以提高可用性。虽然区域的确切定义留给基础设施实现,但区域的常见属性包括区域内网络延迟极低、区域内网络流量无成本以及与其他区域的故障独立性。例如,区域内的节点可能共享网络交换机,但不同区域的节点不应共享。
区域表示一个更大的域,由一个或多个可用区组成。Kubernetes 集群很少跨多个区域,虽然区域或区域的确切定义留给基础设施实现,但区域的常见属性包括它们之间比区域内更高的网络延迟、它们之间网络流量的非零成本以及与其他区域或区域的故障独立性。例如,区域内的节点可能共享电源基础设施(例如 UPS 或发电机),但不同区域的节点通常不会。
Kubernetes 对可用区和区域的结构做了一些假设
- 区域和可用区是分层的:可用区是区域的严格子集,并且没有可用区可以在 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
类型:注解
用于:节点
如果节点具有注解 volumes.kubernetes.io/controller-managed-attach-detach
,则其存储附加和分离操作由 volume attach/detach 控制器管理。
注解的值不重要。
node.kubernetes.io/windows-build
类型:标签
示例:node.kubernetes.io/windows-build: "10.0.17763"
用于:节点
当 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 对象。此注解显示已迁移插件的树内插件名称。其值取决于集群的树内云提供商存储类型。
例如,如果树内云提供商存储类型是 CSIMigrationvSphere
,则节点的 CSINodes 实例应更新为:storage.alpha.kubernetes.io/migrated-plugins: "kubernetes.io/vsphere-volume"
service.kubernetes.io/headless
类型:标签
示例:service.kubernetes.io/headless: ""
用于:Endpoints
当所属 Service 是无头 Service 时,控制平面会将此标签添加到 Endpoints 对象。要了解更多信息,请阅读无头服务。
service.kubernetes.io/topology-aware-hints(已弃用)
示例:service.kubernetes.io/topology-aware-hints: "Auto"
用于:Service
此注解用于在服务上启用拓扑感知提示。拓扑感知提示后来更名为:此概念现在称为拓扑感知路由。在服务上将注解设置为 Auto
,配置 Kubernetes 控制平面以在与该服务关联的 EndpointSlices 上添加拓扑提示。你还可以显式将注解设置为 Disabled
。
如果你运行的 Kubernetes 版本早于 1.34,请查阅该 Kubernetes 版本的文档以了解拓扑感知路由在该版本中的工作方式。
此注解没有其他有效值。如果你不希望服务具有拓扑感知提示,请不要添加此注解。
service.kubernetes.io/topology-mode
类型:注解
示例:service.kubernetes.io/topology-mode: Auto
用于:Service
此注解提供了一种定义服务如何处理网络拓扑的方法;例如,你可以配置服务,以便 Kubernetes 优先将客户端和服务器之间的流量保持在单个拓扑区域内。在某些情况下,这有助于降低成本或提高网络性能。
有关更多详细信息,请参阅拓扑感知路由。
kubernetes.io/service-name
类型:标签
示例:kubernetes.io/service-name: "my-website"
用于:EndpointSlice
Kubernetes 使用此标签将EndpointSlices与服务关联起来。
此标签记录了 EndpointSlice 支持的服务的名称。所有 EndpointSlices 都应将此标签设置为其关联服务的名称。
kubernetes.io/service-account.name
类型:注解
示例:kubernetes.io/service-account.name: "sa-name"
用于:Secret
此注解记录了令牌(存储在 kubernetes.io/service-account-token
类型的 Secret 中)表示的 ServiceAccount 的唯一 ID。
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 相对)。
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 控制器不应将此资源与 EndpointSlice 对象进行镜像。
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 中移除。ingressclass.kubernetes.io/is-default-class
类型:注解
示例:ingressclass.kubernetes.io/is-default-class: "true"
用于:IngressClass
当 IngressClass 资源将此注解设置为 "true"
时,没有指定类的新的 Ingress 资源将被分配此默认类。
nginx.ingress.kubernetes.io/configuration-snippet
类型:注解
示例: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 controller 1.9.0 版本开始,configuration-snippet
注解会被忽略。必须显式启用 NGINX ingress controller 设置 allow-snippet-annotations.
才能使用此注解。在多租户集群中启用此注解可能很危险,因为它可能导致权限有限的人员能够检索集群中的所有 Secret。
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"
时,没有指定类的新 PersistentVolumeClaim 资源将被分配此默认类。
alpha.kubernetes.io/provided-node-ip (alpha)
类型:注解
示例:alpha.kubernetes.io/provided-node-ip: "10.0.0.1"
用于:节点
kubelet 可以在 Node 上设置此注解,以表示其配置的 IPv4 和/或 IPv6 地址。
当 kubelet 启动时设置了 --cloud-provider
标志(包括外部和旧版树内云提供商),它会在 Node 上设置此注解,以表示从命令行标志(--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,则时间戳在该时区。否则,时间戳以控制器管理器的本地时间为准。
kubectl.kubernetes.io/default-container
类型:注解
示例:kubectl.kubernetes.io/default-container: "front-end-app"
注解的值是此 Pod 的默认容器名称。例如,不带 -c
或 --container
标志的 kubectl logs
或 kubectl 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
注解。Kubernetes 1.25 及更高版本会忽略此注解。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 日 17:27:41 UTC。
你不应假定此注解表示最新更新的日期/时间;自上次手动触发回滚以来,可能已发生单独的更改。
如果你手动在 Pod 上设置此注解,则不会发生任何事情。重启的副作用来自工作负载管理和 Pod 模板的工作方式。
endpoints.kubernetes.io/over-capacity
类型:注解
示例:endpoints.kubernetes.io/over-capacity:truncated
用于:Endpoints
控制平面将此注解添加到 Endpoints 对象,如果关联的Service 具有超过 1000 个后端端点。此注解表示 Endpoints 对象已超容量,并且端点数量已截断为 1000。
如果后端端点数量低于 1000,控制平面将移除此注解。
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')。这是 Pod 或 Service 对象中导致 Endpoints 对象更改的最后一次更改的时间戳。
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 现在使用租约来管理 Kubernetes 控制平面的领导者分配。
batch.kubernetes.io/job-tracking (已弃用)
类型:注解
示例:batch.kubernetes.io/job-tracking: ""
用于:Jobs
Job 上此注解的存在曾表示控制平面正在使用终结器跟踪 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"}]'
用于:命名空间
此注解要求启用 PodTolerationRestriction 准入控制器。此注解键允许将容忍度分配给命名空间,并且在该命名空间中创建的任何新 Pod 都将添加这些容忍度。
scheduler.alpha.kubernetes.io/tolerationsWhitelist
类型:注解
示例:scheduler.alpha.kubernetes.io/tolerationsWhitelist: '[{"operator": "Exists", "effect": "NoSchedule", "key": "dedicated-node"}]'
用于:命名空间
此注解仅在启用(Alpha)PodTolerationRestriction 准入控制器时有用。注解的值是一个 JSON 文档,它定义了其注解的命名空间允许的容忍度列表。当你创建 Pod 或修改其容忍度时,API 服务器会检查容忍度以查看它们是否在允许列表中。只有在检查成功时才允许 Pod。
scheduler.alpha.kubernetes.io/preferAvoidPods (已弃用)
类型:注解
用于:节点
此注解需要启用 NodePreferAvoidPods 调度插件。该插件自 Kubernetes 1.22 起已弃用。请改用 污点和容忍度。
node.kubernetes.io/not-ready
类型:污点
示例:node.kubernetes.io/not-ready: "NoExecute"
用于:节点
节点控制器通过监视节点的健康状况来检测节点是否就绪,并相应地添加或移除此污点。
node.kubernetes.io/unreachable
类型:污点
示例:node.kubernetes.io/unreachable: "NoExecute"
用于:节点
当节点条件 Ready
为 Unknown
时,节点控制器将此污点添加到节点。
node.kubernetes.io/unschedulable
类型:污点
示例:node.kubernetes.io/unschedulable: "NoSchedule"
用于:节点
在初始化节点时,为了避免竞争条件,将向节点添加此污点。
node.kubernetes.io/memory-pressure
类型:污点
示例:node.kubernetes.io/memory-pressure: "NoSchedule"
用于:节点
kubelet 根据在节点上观察到的 memory.available
和 allocatableMemory.available
来检测内存压力。然后将观察到的值与可在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/移除节点条件和污点。
node.kubernetes.io/disk-pressure
类型:污点
示例:node.kubernetes.io/disk-pressure :"NoSchedule"
用于:节点
kubelet 根据在节点上观察到的 imagefs.available
、imagefs.inodesFree
、nodefs.available
和 nodefs.inodesFree
(仅限 Linux)来检测磁盘压力。然后将观察到的值与可在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/移除节点条件和污点。
node.kubernetes.io/network-unavailable
类型:污点
示例:node.kubernetes.io/network-unavailable: "NoSchedule"
用于:节点
当使用的云提供商指示需要额外的网络配置时,kubelet 最初会设置此项。只有当云上的路由配置正确时,云提供商才会移除此污点。
node.kubernetes.io/pid-pressure
类型:污点
示例:node.kubernetes.io/pid-pressure: "NoSchedule"
用于:节点
kubelet 检查 /proc/sys/kernel/pid_max
的大小与 Kubernetes 在节点上消耗的 PID 之间的差值,以获取可用 PID 的数量,该数量被称为 pid.available
指标。然后将该指标与可在 kubelet 上设置的相应阈值进行比较,以确定是否应添加/移除节点条件和污点。
node.kubernetes.io/out-of-service
类型:污点
示例:node.kubernetes.io/out-of-service:NoExecute
用于:节点
用户可以手动向节点添加此污点,将其标记为“服务中断”。如果节点被标记为“服务中断”并带有此污点,则如果节点上没有匹配的容忍度,Pod 将被强制删除,并且终止在该节点上的 Pod 的卷分离操作将立即发生。这使得服务中断节点上的 Pod 能够快速在另一个节点上恢复。
注意
有关何时以及如何使用此污点的更多详细信息,请参阅非优雅节点关机。node.cloudprovider.kubernetes.io/uninitialized
类型:污点
示例:node.cloudprovider.kubernetes.io/uninitialized: "NoSchedule"
用于:节点
当 kubelet 使用“外部”云提供商启动时,此污点会设置在节点上,将其标记为不可用,直到云控制器管理器的控制器初始化此节点,然后移除该污点。
node.cloudprovider.kubernetes.io/shutdown
类型:污点
示例:node.cloudprovider.kubernetes.io/shutdown: "NoSchedule"
用于:节点
如果节点处于云提供商指定的关机状态,则该节点将相应地被 node.cloudprovider.kubernetes.io/shutdown
污点标记,污点效果为 NoSchedule
。
feature.node.kubernetes.io/*
类型:标签
示例:feature.node.kubernetes.io/network-sriov.capable: "true"
用于:节点
这些标签由节点特性发现 (NFD) 组件使用,以在节点上宣传特性。所有内置标签都使用 feature.node.kubernetes.io
标签命名空间,并具有 feature.node.kubernetes.io/<feature-name>: "true"
格式。NFD 有许多扩展点用于创建供应商和应用程序特定的标签。有关详细信息,请参阅自定义指南。
nfd.node.kubernetes.io/master.version
类型:注解
示例:nfd.node.kubernetes.io/master.version: "v0.6.0"
用于:节点
对于调度了节点特性发现 (NFD) master 的节点,此注解记录 NFD master 的版本。它仅用于信息目的。
nfd.node.kubernetes.io/worker.version
类型:注解
示例:nfd.node.kubernetes.io/worker.version: "v0.4.0"
用于:节点
此注解记录在节点上运行的节点特性发现 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"
用于:节点
此注解记录由 节点特性发现 (NFD) 管理的以逗号分隔的节点特性标签列表。NFD 将此用于内部机制。你不应自行编辑此注解。
nfd.node.kubernetes.io/extended-resources
类型:注解
示例:nfd.node.kubernetes.io/extended-resources: "accelerator.acme.example/q500,example.com/coprocessor-fx5"
用于:节点
此注解记录由 节点特性发现 (NFD) 管理的以逗号分隔的扩展资源列表。NFD 将此用于内部机制。你不应自行编辑此注解。
nfd.node.kubernetes.io/node-name
类型:标签
示例:nfd.node.kubernetes.io/node-name: node-1
用于:节点
它指定 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 弹性负载均衡的集成根据此注解配置服务的负载均衡器。该值确定负载均衡器写入日志条目的频率。例如,如果将值设置为 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 弹性负载均衡的集成根据此注解配置服务的负载均衡器。如果将注解设置为“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 弹性负载均衡的集成根据此注解配置服务的负载均衡器。负载均衡器将日志写入你指定的名称的 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.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 网络负载均衡器。
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"
用于:命名空间
值**必须**是 privileged
、baseline
或 restricted
之一,它们对应于Pod 安全标准级别。具体来说,enforce
标签会禁止在标记的命名空间中创建任何不符合指定级别要求的 Pod。
有关更多信息,请参阅在命名空间级别实施 Pod 安全。
pod-security.kubernetes.io/enforce-version
类型:标签
示例:pod-security.kubernetes.io/enforce-version: "1.34"
用于:命名空间
值**必须**是 latest
或格式为 v<major>.<minor>
的有效 Kubernetes 版本。这决定了验证 Pod 时应用的Pod 安全标准策略的版本。
有关更多信息,请参阅在命名空间级别实施 Pod 安全。
pod-security.kubernetes.io/audit
类型:标签
示例:pod-security.kubernetes.io/audit: "baseline"
用于:命名空间
值**必须**是 privileged
、baseline
或 restricted
之一,它们对应于Pod 安全标准级别。具体来说,audit
标签不会阻止在标记的命名空间中创建不符合指定级别要求的 Pod,但会将此注解添加到 Pod。
有关更多信息,请参阅在命名空间级别实施 Pod 安全。
pod-security.kubernetes.io/audit-version
类型:标签
示例:pod-security.kubernetes.io/audit-version: "1.34"
用于:命名空间
值**必须**是 latest
或格式为 v<major>.<minor>
的有效 Kubernetes 版本。这决定了验证 Pod 时应用的Pod 安全标准策略的版本。
有关更多信息,请参阅在命名空间级别实施 Pod 安全。
pod-security.kubernetes.io/warn
类型:标签
示例:pod-security.kubernetes.io/warn: "baseline"
用于:命名空间
值**必须**是 privileged
、baseline
或 restricted
之一,它们对应于Pod 安全标准级别。具体来说,warn
标签不会阻止在标记的命名空间中创建不符合指定级别要求的 Pod,但在创建后会向用户返回警告。请注意,在创建或更新包含 Pod 模板的对象(例如 Deployments、Jobs、StatefulSets 等)时也会显示警告。
有关更多信息,请参阅在命名空间级别实施 Pod 安全。
pod-security.kubernetes.io/warn-version
类型:标签
示例:pod-security.kubernetes.io/warn-version: "1.34"
用于:命名空间
值**必须**是 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"
时,它们会在服务器启动时自动更新以添加缺失的权限和主体(额外的权限和主体保留不变)。要防止自动更新特定的角色或角色绑定,请将此注解设置为 "false"
。如果你创建自己的 RBAC 对象并将此注解设置为 "false"
,则 kubectl auth reconcile
(它允许在清单中协调任意 RBAC 对象)会遵守此注解,并且不会自动添加缺失的权限和主体。
kubernetes.io/psp (已弃用)
类型:注解
示例:kubernetes.io/psp: restricted
用于:Pod
此注解仅与你使用PodSecurityPolicy对象有关。Kubernetes v1.34 不支持 PodSecurityPolicy API。
当 PodSecurityPolicy 准入控制器准入 Pod 时,准入控制器会修改 Pod 以具有此注解。注解的值是用于验证的 PodSecurityPolicy 的名称。
seccomp.security.alpha.kubernetes.io/pod (非功能性)
类型:注解
用于:Pod
Kubernetes v1.25 之前允许你使用此注解配置 seccomp 行为。请参阅使用 seccomp 限制容器的系统调用以了解指定 Pod 的 seccomp 限制的受支持方法。
container.seccomp.security.alpha.kubernetes.io/[NAME] (非功能性)
类型:注解
用于:Pod
Kubernetes v1.25 之前允许你使用此注解配置 seccomp 行为。请参阅使用 seccomp 限制容器的系统调用以了解指定 Pod 的 seccomp 限制的受支持方法。
snapshot.storage.kubernetes.io/allow-volume-mode-change
类型:注解
示例:snapshot.storage.kubernetes.io/allow-volume-mode-change: "true"
用于:VolumeSnapshotContent
值可以是 true
或 false
。这决定了当从 VolumeSnapshot 创建 PersistentVolumeClaim 时,用户是否可以修改源卷的模式。
有关更多信息,请参阅转换快照的卷模式和 Kubernetes CSI 开发者文档。
scheduler.alpha.kubernetes.io/critical-pod (已弃用)
类型:注解
示例:scheduler.alpha.kubernetes.io/critical-pod: ""
用于:Pod
此注解让 Kubernetes 控制平面了解 Pod 是关键 Pod,因此调度器不会移除此 Pod。
注意
从 v1.16 开始,此注解已被移除,取而代之的是Pod 优先级。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 所属的复制作业的名称。
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 独占放置。你还可以在复制 Job 模板上定义此标签或注解。阅读 JobSet 的文档以了解更多信息。
alpha.jobset.sigs.k8s.io/node-selector
类型:注解
示例:alpha.jobset.sigs.k8s.io/node-selector: "true"
用于:Jobs、Pods
此标签/注解可应用于 JobSet。设置后,JobSet 控制器会通过添加节点选择器和容忍度来修改 Job 及其相应的 Pod。这可确保每个拓扑域的 Job 独占放置,根据策略将这些 Pod 的调度限制到特定节点。
alpha.jobset.sigs.k8s.io/namespaced-job
类型:标签
示例: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
类型:污点
示例: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
类型:注解、标签
示例:jobset.sigs.k8s.io/coordinator: "myjobset-workers-0-0.headless-svc"
用于:Jobs、Pods
如果 JobSet 规范定义了 .spec.coordinator
字段,则此注解/标签用于 Job 和 Pod,以存储协调器 Pod 可访问的稳定网络端点。
用于审计的注解
authorization.k8s.io/decision
authorization.k8s.io/reason
insecure-sha1.invalid-cert.kubernetes.io/$hostname
missing-san.invalid-cert.kubernetes.io/$hostname
pod-security.kubernetes.io/audit-violations
pod-security.kubernetes.io/enforce-policy
pod-security.kubernetes.io/exempt
validation.policy.admission.k8s.io/validation_failure
有关详细信息,请参阅审计注解。
kubeadm
kubeadm.alpha.kubernetes.io/cri-socket (已弃用)
类型:注解
示例:kubeadm.alpha.kubernetes.io/cri-socket: unix:///run/containerd/container.sock
用于:节点
注意
从 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
类型:标签
用于:节点
一个标记标签,用于指示节点用于运行控制平面组件。kubeadm 工具将此标签应用于其管理的控制平面节点。其他集群管理工具通常也会设置此污点。
你可以使用此标签标记控制平面节点,以便更轻松地将 Pod 仅调度到这些节点上,或者避免在控制平面上运行 Pod。如果设置了此标签,EndpointSlice 控制器在计算拓扑感知提示时会忽略该节点。
node-role.kubernetes.io/*
类型:标签
示例:node-role.kubernetes.io/gpu: gpu
用于:节点
当你想要标记节点角色时,此可选标签会应用于节点。节点角色(标签键中 /
后面的文本)可以设置,只要整个键遵循对象标签的语法规则。
Kubernetes 定义了一个特定的节点角色,**control-plane**。你可以用来标记该节点角色的标签是node-role.kubernetes.io/control-plane
。
node-role.kubernetes.io/control-plane
类型:污点
示例:node-role.kubernetes.io/control-plane:NoSchedule
用于:节点
kubeadm 在控制平面节点上应用的污点,以限制 Pod 的放置,并只允许特定的 Pod 调度到它们上。
如果应用此污点,控制平面节点只允许调度关键工作负载。你可以在特定节点上手动使用以下命令移除此污点。
kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-
node-role.kubernetes.io/master (已弃用)
类型:污点
用于:节点
示例:node-role.kubernetes.io/master:NoSchedule
kubeadm 以前在控制平面节点上应用的污点,只允许关键工作负载调度到它们上。已被node-role.kubernetes.io/control-plane
污点取代。kubeadm 不再设置或使用此已弃用的污点。
resource.kubernetes.io/admin-access {resource-kubernetes-io-admin-access}
类型:标签
示例:resource.kubernetes.io/admin-access: "true"
用于:命名空间
用于在命名空间内授予对某些 resource.k8s.io API 类型的管理访问权限。当此标签在命名空间上设置为值 "true"
(区分大小写)时,它允许在任何命名空间的 resource.k8s.io
API 类型中使用 adminAccess: true
。目前,此权限适用于 ResourceClaim
和 ResourceClaimTemplate
对象。
有关更多信息,请参阅动态资源分配管理访问。