众所周知的标签、注解和污点
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 服务器不管理对象规范。有关更多详细信息,请阅读维护强制和建议的配置对象。
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.32 版本,如果定义它们的 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.32 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secret、ConfigMap 或自定义资源上使用此注解。
用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列表。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化。但是,从 Kubernetes 1.32 版本开始,kubectl 需要此注解。如果存在,则此注解的值必须是以逗号分隔的组-种类列表,采用完全限定的名称格式,即 <资源>.<组>
。
applyset.kubernetes.io/contains-group-resources (已弃用)
类型:注解
示例:applyset.kubernetes.io/contains-group-resources: "certificates.cert-manager.io,configmaps,deployments.apps,secrets,services"
用于:用作 ApplySet 父级的对象。
对于 Kubernetes 1.32 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secret、ConfigMap 或自定义资源上使用此注解。
用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列表。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化。但是,在 Kubernetes 1.32 版本中,kubectl 需要此注解。如果存在,则此注解的值必须是以逗号分隔的组-种类列表,采用完全限定的名称格式,即 <资源>.<组>
。
注意
此注解目前已弃用,并被applyset.kubernetes.io/contains-group-kinds
取代,对它的支持将在 applyset 测试版或 GA 中删除。applyset.kubernetes.io/id (alpha)
类型:标签
示例:applyset.kubernetes.io/id: "applyset-0eFHV8ySqp7XoShsGvyWFQD3s96yqwHmzc4e0HR1dsY-v1"
用于:用作 ApplySet 父级的对象。
此标签的使用为 Alpha 阶段。对于 Kubernetes 1.32 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此标签。
此标签是用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此标签使对象成为 ApplySet 父对象。其值是 ApplySet 的唯一 ID,该 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 的修剪的规范的一部分。可以在 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.32"
用于:用作 ApplySet 父级的对象。
此注解的使用为 Alpha 阶段。对于 Kubernetes 1.32 版本,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type
标签,则可以在 Secrets、ConfigMaps 或自定义资源上使用此注解。
此注解是用于实现 kubectl 中基于 ApplySet 的修剪的规范的一部分。此注解应用于用于跟踪 ApplySet 的父对象,以指示哪个工具管理该 ApplySet。工具应拒绝修改属于其他工具的 ApplySet。该值必须采用 <工具名称>/<语义版本>
的格式。
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
中的资源声明的名称相对应。此注解是动态资源分配的内部实现细节。您无需读取或修改此注解的值。
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 OS 与运行该 kubelet 的节点的操作系统不同,则 kubelet 拒绝运行 Pod。请查看 Pod OS 以了解更多详细信息。
kubernetes.io/metadata.name
类型:标签
示例:kubernetes.io/metadata.name: "mynamespace"
用于:命名空间
Kubernetes API 服务器(控制平面的一部分)在所有命名空间上设置此标签。标签值设置为命名空间的名称。您无法更改此标签的值。
如果想使用标签选择器来定位特定命名空间,这将非常有用。
kubernetes.io/limit-ranger
类型:注解
示例:kubernetes.io/limit-ranger: "LimitRanger 插件已设置:容器 nginx 的 cpu、内存请求;容器 nginx 的 cpu、内存限制"
用于: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 时,kube-apiserver 会删除自动管理的 APIService 对象。有两种可能的值
onstart
:APIService 应该在 API 服务器启动时进行协调,但其他情况下不应进行协调。true
:API 服务器应持续协调此 APIService。
service.alpha.kubernetes.io/tolerate-unready-endpoints(已弃用)
类型:注解
用于:StatefulSet
服务上的此注解表示 Endpoints 控制器是否应该继续为未就绪的 Pod 创建 Endpoints。这些服务的 Endpoints 会保留其 DNS 记录,并从 kubelet 启动 Pod 中的所有容器并将其标记为“运行中”的那一刻起,直到 kubelet 停止所有容器并将 Pod 从 API 服务器删除为止,持续接收来自服务的流量。
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"
用于:所有对象
此注解是对为什么更改某些内容的最佳猜测。
当将 --record
添加到可能更改对象的 kubectl
命令时,会填充此注解。
kubernetes.io/description
类型:注解
示例:kubernetes.io/description: "K8s 对象的描述。"
用于:所有对象
此注解用于描述给定对象的特定行为。
kubernetes.io/enforce-mountable-secrets(已弃用)
类型:注解
示例:kubernetes.io/enforce-mountable-secrets: "true"
用于:ServiceAccount
注意
自 Kubernetes v1.32 起,kubernetes.io/enforce-mountable-secrets
已弃用。使用单独的命名空间来隔离对挂载的 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
此注解控制是否应由 ClusterAutoscaler 驱逐 DaemonSet Pod。此注解需要在 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 的出口流量由策略控制,该策略会直接丢弃超出配置速率的数据包。您对 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
它被添加到应该通过 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
在 Node 上:kubelet
或外部的 cloud-controller-manager
会使用云提供商的信息填充此标签。只有在使用云提供商时才会设置此标签。但是,如果您的拓扑结构合理,您可以考虑在节点上设置此标签。
在 PersistentVolume 上:感知拓扑结构的卷供应器会自动在 PersistentVolume
上设置节点亲和性约束。
区域代表一个逻辑故障域。Kubernetes 集群通常会跨越多个区域以提高可用性。虽然区域的确切定义留给基础架构实现,但区域的常见属性包括区域内非常低的网络延迟、区域内不计成本的网络流量以及与其他区域的故障独立性。例如,一个区域内的节点可能会共享一个网络交换机,但不同区域的节点不应该共享。
区域代表一个更大的域,由一个或多个区域组成。Kubernetes 集群跨越多个区域的情况并不常见。虽然区域或区域的确切定义留给基础架构实现,但区域的常见属性包括区域之间比区域内部更高的网络延迟,区域之间的网络流量成本不为零,以及与其他区域或区域的故障独立性。例如,一个区域内的节点可能会共享电力基础设施(例如,UPS 或发电机),但不同区域的节点通常不会。
Kubernetes 对区域和区域的结构做了一些假设
- 区域和区域是分层的:区域是区域的严格子集,并且没有区域可以位于两个区域中
- 区域名称在区域之间是唯一的;例如,区域“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
,则其存储附加和分离操作由 卷附加/分离 控制器管理。
该注解的值并不重要。
node.kubernetes.io/windows-build
类型:标签
示例:node.kubernetes.io/windows-build: "10.0.17763"
用于:节点
当 kubelet 在 Microsoft Windows 上运行时,它会自动标记其 Node 以记录正在使用的 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 为无头服务时,控制平面会将此标签添加到 Endpoints 对象。要了解更多信息,请阅读无头服务。
service.kubernetes.io/topology-aware-hints(已弃用)
示例:service.kubernetes.io/topology-aware-hints: "Auto"
使用于:Service
此注解用于在 Service 上启用拓扑感知提示。拓扑感知提示后来被重命名:这个概念现在被称为拓扑感知路由。在 Service 上将注解设置为 Auto
,将配置 Kubernetes 控制平面以在与该 Service 关联的 EndpointSlices 上添加拓扑提示。你也可以显式地将注解设置为 Disabled
。
如果你运行的 Kubernetes 版本早于 1.32,请查看该 Kubernetes 版本的文档,了解拓扑感知路由在该版本中的工作方式。
此注解没有其他有效值。如果你不希望 Service 具有拓扑感知提示,请不要添加此注解。
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 使用此标签将EndpointSlices 与 Services 关联起来。
此标签记录了 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 时区)。
endpointslice.kubernetes.io/managed-by
类型:标签
示例:endpointslice.kubernetes.io/managed-by: endpointslice-controller.k8s.io
使用于:EndpointSlices
此标签用于指示管理 EndpointSlice 的控制器或实体。此标签旨在允许同一集群内的不同控制器或实体管理不同的 EndpointSlice 对象。
endpointslice.kubernetes.io/skip-mirror
类型:标签
示例:endpointslice.kubernetes.io/skip-mirror: "true"
使用于:Endpoints
可以在 Endpoints 资源上将此标签设置为 "true"
,以指示 EndpointSliceMirroring 控制器不应使用 EndpointSlices 镜像此资源。
service.kubernetes.io/service-proxy-name
类型:标签
示例:service.kubernetes.io/service-proxy-name: "foo-bar"
使用于:Service
kube-proxy 为自定义代理设置此标签,该代理将服务控制委托给自定义代理。
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 控制器的 1.9.0 版本开始,默认情况下会忽略 configuration-snippet
注解。必须显式启用 NGINX ingress 控制器设置 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 的 Service。
但是,不建议在任何 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,则时间戳位于该时区。否则,时间戳将采用 controller-manager 的本地时间。
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 命令行工具使用此注解作为跟踪更改的旧机制。该机制已被服务器端应用取代。
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
如果关联的 Service 拥有超过 1000 个后端端点,则控制平面会将此注解添加到 Endpoints 对象中。该注解表示 Endpoints 对象已超出容量,并且端点数量已被截断为 1000。
如果后端端点数量降至 1000 以下,则控制平面会删除此注解。
endpoints.kubernetes.io/last-change-trigger-time
类型:注解
示例:endpoints.kubernetes.io/last-change-trigger-time: "2023-07-20T04:45:21Z"
使用于:Endpoints
此注解被设置在 Endpoints 对象上,表示触发 Endpoints 对象更改的某些 Pod 或 Service 对象中最后一次更改的时间戳(时间戳以 RFC 3339 日期时间字符串格式存储。例如,'2018-10-22T19:32:52.1Z')。
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 现在使用 Leases 来管理 Kubernetes 控制平面的领导者分配。
batch.kubernetes.io/job-tracking (已弃用)
类型:注解
示例:batch.kubernetes.io/job-tracking: ""
用于:Jobs
Job 上存在此注解曾经表示控制平面正在使用 finalizers 跟踪 Job 状态。添加或删除此注解不再产生任何影响(Kubernetes v1.27 及更高版本)。所有 Job 都使用 finalizers 进行跟踪。
job-name (已弃用)
类型:标签
示例:job-name: "pi"
用于:Jobs 和由 Jobs 控制的 Pod
注意
从 Kubernetes 1.27 开始,此标签已被弃用。Kubernetes 1.27 及更高版本会忽略此标签,并使用带有前缀的job-name
标签。controller-uid (已弃用)
类型:标签
示例:controller-uid: "$UID"
用于:Jobs 和由 Jobs 控制的 Pod
注意
从 Kubernetes 1.27 开始,此标签已被弃用。Kubernetes 1.27 及更高版本会忽略此标签,并使用带有前缀的controller-uid
标签。batch.kubernetes.io/job-name
类型:标签
示例:batch.kubernetes.io/job-name: "pi"
用于:Jobs 和由 Jobs 控制的 Pod
此标签用作获取与 Job 对应的 Pod 的用户友好方式。job-name
来自 Job 的 name
,并允许轻松获取与 Job 对应的 Pod。
batch.kubernetes.io/controller-uid
类型:标签
示例:batch.kubernetes.io/controller-uid: "$UID"
用于:Jobs 和由 Jobs 控制的 Pod
此标签用作以编程方式获取与 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 (已弃用)
类型:注解
用于:节点
此注解需要启用 NodePreferAvoidPods 调度插件。自 Kubernetes 1.22 以来,该插件已被弃用。请改用污点和容忍度。
node.kubernetes.io/not-ready
类型:污点
示例:node.kubernetes.io/not-ready: "NoExecute"
用于:节点
节点控制器通过监视节点的运行状况来检测节点是否就绪,并相应地添加或删除此污点。
node.kubernetes.io/unreachable
类型:污点
示例:node.kubernetes.io/unreachable: "NoExecute"
用于:节点
节点控制器将污点添加到与 NodeCondition 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
的大小的 D 值以及节点上 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 使用 “external” 云提供商启动时,会在节点上设置此污点,将其标记为不可用,直到来自云控制器管理器的控制器初始化此节点,然后删除该污点。
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 对象的创建者必须设置此标签,而对象的使用者应该使用此标签来筛选指定给特定节点的特性。
注意
这些 Node Feature Discovery (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-enabled: example
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解为 Service 配置负载均衡器。负载均衡器会将日志写入您指定的名称的 S3 存储桶。
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "/example"
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解为 Service 配置负载均衡器。负载均衡器将使用您指定的前缀写入日志对象。
service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "Environment=demo,Project=example"
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解的值中以逗号分隔的键值对,为负载均衡器配置标签(AWS 的概念)。
service.beta.kubernetes.io/aws-load-balancer-alpn-policy (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-alpn-policy: HTTP2Optional
使用于:Service
AWS 负载均衡器控制器 使用此注解。请参阅 AWS 负载均衡器控制器文档中的注解。
service.beta.kubernetes.io/aws-load-balancer-attributes (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-attributes: "deletion_protection.enabled=true"
使用于:Service
AWS 负载均衡器控制器 使用此注解。请参阅 AWS 负载均衡器控制器文档中的注解。
service.beta.kubernetes.io/aws-load-balancer-backend-protocol (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解的值配置负载均衡器侦听器。
service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "false"
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解配置负载均衡器。负载均衡器的连接耗尽设置取决于您设置的值。
service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout: "60"
使用于:Service
如果您为 type: LoadBalancer
的 Service 配置了连接耗尽,并且您使用 AWS 云,则集成会根据此注解配置耗尽时间段。您设置的值决定了耗尽超时时间(以秒为单位)。
service.beta.kubernetes.io/aws-load-balancer-ip-address-type (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-ip-address-type: ipv4
使用于:Service
AWS 负载均衡器控制器 使用此注解。请参阅 AWS 负载均衡器控制器文档中的注解。
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解配置负载均衡器。负载均衡器具有配置的空闲超时时间段(以秒为单位),该时间段适用于其连接。如果在空闲超时时间段过去之前没有发送或接收任何数据,则负载均衡器会关闭连接。
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解配置负载均衡器。如果将此注解设置为 "true",则每个负载均衡器节点都会在所有已启用的可用区中均匀分配注册的目标上的请求。如果禁用跨区域负载均衡,则每个负载均衡器节点仅在其可用区内的注册目标上均匀分配请求。
service.beta.kubernetes.io/aws-load-balancer-eip-allocations (beta)
示例:service.beta.kubernetes.io/aws-load-balancer-eip-allocations: "eipalloc-01bcdef23bcdef456,eipalloc-def1234abc4567890"
使用于:Service
云控制器管理器与 AWS 弹性负载均衡的集成会根据此注解配置负载均衡器。该值是以逗号分隔的弹性 IP 地址分配 ID 列表。
此注解仅适用于 type: LoadBalancer
的 Service,其中负载均衡器是 AWS 网络负载均衡器。
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 (deprecated)
示例: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 (deprecated)
示例: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
、baseline
或 restricted
中的一个,它们对应于 Pod 安全标准级别。具体而言,enforce
标签 *禁止* 在带有标签的命名空间中创建任何不符合指示级别中概述的要求的 Pod。
有关更多信息,请参阅在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/enforce-version
类型:标签
示例:pod-security.kubernetes.io/enforce-version: "1.32"
用于:Namespace
值**必须**是 latest
或格式为 v<major>.<minor>
的有效 Kubernetes 版本。这决定了在验证 Pod 时要应用的Pod 安全标准策略的版本。
有关更多信息,请参阅在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/audit
类型:标签
示例:pod-security.kubernetes.io/audit: "baseline"
用于:Namespace
值**必须**是 privileged
、baseline
或 restricted
中的一个,它们对应于 Pod 安全标准级别。具体而言,audit
标签不会阻止在带有标签的命名空间中创建不符合指示级别中概述的要求的 Pod,而是将此注解添加到 Pod。
有关更多信息,请参阅在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/audit-version
类型:标签
示例:pod-security.kubernetes.io/audit-version: "1.32"
用于:Namespace
值**必须**是 latest
或格式为 v<major>.<minor>
的有效 Kubernetes 版本。这决定了在验证 Pod 时要应用的Pod 安全标准策略的版本。
有关更多信息,请参阅在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/warn
类型:标签
示例:pod-security.kubernetes.io/warn: "baseline"
用于:Namespace
值**必须**是 privileged
、baseline
或 restricted
中的一个,它们对应于 Pod 安全标准级别。具体而言,warn
标签不会阻止在带有标签的命名空间中创建不符合指示级别中概述的要求的 Pod,而是在执行此操作后向用户返回警告。请注意,在创建或更新包含 Pod 模板的对象(例如 Deployment、Job、StatefulSet 等)时也会显示警告。
有关更多信息,请参阅在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/warn-version
类型:标签
示例:pod-security.kubernetes.io/warn-version: "1.32"
用于:Namespace
值**必须**是 latest
或格式为 v<major>.<minor>
的有效 Kubernetes 版本。这决定了在验证提交的 Pod 时要应用的Pod 安全标准策略的版本。请注意,在创建或更新包含 Pod 模板的对象(例如 Deployment、Job、StatefulSet 等)时也会显示警告。
有关更多信息,请参阅在命名空间级别强制执行 Pod 安全性。
rbac.authorization.kubernetes.io/autoupdate
类型:注解
示例:rbac.authorization.kubernetes.io/autoupdate: "false"
用于:ClusterRole、ClusterRoleBinding、Role、RoleBinding
当此注解在 API 服务器创建的默认 RBAC 对象上设置为 "true"
时,它们会在服务器启动时自动更新以添加缺少的权限和主体(额外的权限和主体保留在原位)。要防止自动更新特定的角色或角色绑定,请将此注解设置为 "false"
。如果你创建自己的 RBAC 对象并将此注解设置为 "false"
,则 kubectl auth reconcile
(它允许在清单中协调任意 RBAC 对象)将遵守此注解,并且不会自动添加缺少的权限和主体。
kubernetes.io/psp (已弃用)
类型:注解
示例:kubernetes.io/psp: restricted
用于:Pod
仅当你使用 PodSecurityPolicy 对象时,此注解才相关。Kubernetes v1.32 不支持 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
值可以是 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 优先级。用于审计的注解
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
用于:节点
kubeadm 使用的注解,用于保留在 init
/join
时提供给 kubeadm 的 CRI 套接字信息以供后续使用。kubeadm 使用此信息注解 Node 对象。该注解仍然是 “alpha” 版本,因为理想情况下它应该是 KubeletConfiguration 中的一个字段。
kubeadm.kubernetes.io/etcd.advertise-client-urls
类型:注解
示例:kubeadm.kubernetes.io/etcd.advertise-client-urls: https://172.17.0.18:2379
用于:Pod
kubeadm 放置在本地管理的 etcd Pod 上的注解,用于跟踪 etcd 客户端应连接到的 URL 列表。这主要用于 etcd 集群健康检查目的。
kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint
类型:注解
示例:kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: https://172.17.0.18:6443
用于:Pod
kubeadm 放置在本地管理的 kube-apiserver
Pod 上的注解,用于跟踪该 API 服务器实例的暴露的通告地址/端口端点。
kubeadm.kubernetes.io/component-config.hash
类型:注解
示例:kubeadm.kubernetes.io/component-config.hash: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae
用于:ConfigMap
kubeadm 放置在其管理的 ConfigMap 上的注解,用于配置组件。它包含一个哈希值 (SHA-256),用于确定用户是否为特定组件应用了与 kubeadm 默认值不同的设置。
node-role.kubernetes.io/control-plane
类型:标签
用于:节点
一个标记标签,用于指示该节点用于运行控制平面组件。kubeadm 工具将此标签应用于其管理的控制平面节点。其他集群管理工具通常也会设置此污点。
你可以使用此标签标记控制平面节点,以便更容易地仅将 Pod 调度到这些节点上,或者避免在控制平面上运行 Pod。如果设置了此标签,则 EndpointSlice 控制器会在计算拓扑感知提示时忽略该节点。
node-role.kubernetes.io/control-plane
类型:污点
示例:node-role.kubernetes.io/control-plane:NoSchedule
用于:节点
kubeadm 应用于控制平面节点的污点,用于限制放置 Pod,并且仅允许将特定 Pod 调度到这些节点上。
如果应用此污点,则控制平面节点仅允许将关键工作负载调度到其上。你可以使用以下命令在特定节点上手动删除此污点。
kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-
node-role.kubernetes.io/master (已弃用)
类型:污点
用于:节点
示例:node-role.kubernetes.io/master:NoSchedule
kubeadm 之前应用于控制平面节点的污点,旨在仅允许关键工作负载在其上调度。已被 node-role.kubernetes.io/control-plane
污点取代。kubeadm 不再设置或使用此已弃用的污点。