已知标签、注解和污点
Kubernetes 保留了 kubernetes.io 和 k8s.io 命名空间中的所有标签、注释和污点。
本文档既作为值的参考,也作为分配值的协调点。
API 对象上使用的标签、注释和污点
apf.kubernetes.io/autoupdate-spec
类型:Annotation
示例:apf.kubernetes.io/autoupdate-spec: "true"
用于:FlowSchema 和 PriorityLevelConfiguration 对象
如果 FlowSchema 或 PriorityLevelConfiguration 上将此注释设置为 true,则 kube-apiserver 会管理该对象的 spec。如果 API 服务器不识别 APF 对象,并且您注释为自动更新,则 API 服务器会删除整个对象。否则,API 服务器不会管理对象规范。有关更多详细信息,请参阅 维护强制和建议的配置对象。
app.kubernetes.io/component
类型:Label
示例:app.kubernetes.io/component: "database"
用于:所有对象(通常用于 工作负载资源)。
应用程序架构中的组件。
是 推荐标签之一。
app.kubernetes.io/created-by (已弃用)
类型:Label
示例:app.kubernetes.io/created-by: "controller-manager"
用于:所有对象(通常用于 工作负载资源)。
创建此资源的控制器/用户。
说明
从 v1.9 开始,此标签已被弃用。app.kubernetes.io/instance
类型:Label
示例:app.kubernetes.io/instance: "mysql-abcxyz"
用于:所有对象(通常用于 工作负载资源)。
标识应用程序实例的唯一名称。要分配非唯一名称,请使用 app.kubernetes.io/name。
是 推荐标签之一。
app.kubernetes.io/managed-by
类型:Label
示例:app.kubernetes.io/managed-by: "helm"
用于:所有对象(通常用于 工作负载资源)。
用于管理应用程序操作的工具。
是 推荐标签之一。
app.kubernetes.io/name
类型:Label
示例:app.kubernetes.io/name: "mysql"
用于:所有对象(通常用于 工作负载资源)。
应用程序的名称。
是 推荐标签之一。
app.kubernetes.io/part-of
类型:Label
示例:app.kubernetes.io/part-of: "wordpress"
用于:所有对象(通常用于 工作负载资源)。
此对象所属的更高层级应用程序的名称。
是 推荐标签之一。
app.kubernetes.io/version
类型:Label
示例:app.kubernetes.io/version: "5.7.21"
用于:所有对象(通常用于 工作负载资源)。
应用程序的当前版本。
常见的值形式包括
是 推荐标签之一。
applyset.kubernetes.io/additional-namespaces (alpha)
类型:Annotation
示例:applyset.kubernetes.io/additional-namespaces: "namespace1,namespace2"
用于:用作 ApplySet 父级的对象。
使用此注释是 Alpha 版本。对于 Kubernetes 版本 1.35,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,则可以将此注释用于 Secrets、ConfigMaps 或自定义资源。
是用于实现 kubectl 中基于 ApplySet 的剪除 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以扩展 ApplySet 的范围超出父对象自己的命名空间(如果有)。该值是逗号分隔的命名空间列表,这些命名空间不同于父命名空间,对象在这些命名空间中被发现。
applyset.kubernetes.io/contains-group-kinds (alpha)
类型:Annotation
示例:applyset.kubernetes.io/contains-group-kinds: "certificates.cert-manager.io,configmaps,deployments.apps,secrets,services"
用于:用作 ApplySet 父级的对象。
使用此注释是 Alpha 版本。对于 Kubernetes 版本 1.35,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,则可以将此注释用于 Secrets、ConfigMaps 或自定义资源。
是用于实现 kubectl 中基于 ApplySet 的剪除 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列出。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化。但是,在 Kubernetes 版本 1.35 中,kubectl 需要它。如果存在,此注释的值必须是逗号分隔的组-种类列表,格式为 <resource>.<group>。
applyset.kubernetes.io/contains-group-resources (已弃用)
类型:Annotation
示例:applyset.kubernetes.io/contains-group-resources: "certificates.cert-manager.io,configmaps,deployments.apps,secrets,services"
用于:用作 ApplySet 父级的对象。
对于 Kubernetes 版本 1.35,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,则可以将此注释用于 Secrets、ConfigMaps 或自定义资源。
是用于实现 kubectl 中基于 ApplySet 的剪除 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以优化 ApplySet 成员对象的列出。它在 ApplySet 规范中是可选的,因为工具可以执行发现或使用不同的优化。但是,在 Kubernetes 版本 1.35 中,kubectl 需要它。如果存在,此注释的值必须是逗号分隔的组-种类列表,格式为 <resource>.<group>。
说明
此注释当前已弃用,并由applyset.kubernetes.io/contains-group-kinds 替换,对该注释的支持将在 applyset beta 或 GA 中删除。applyset.kubernetes.io/id (alpha)
类型:Label
示例:applyset.kubernetes.io/id: "applyset-0eFHV8ySqp7XoShsGvyWFQD3s96yqwHmzc4e0HR1dsY-v1"
用于:用作 ApplySet 父级的对象。
使用此标签是 Alpha 版本。对于 Kubernetes 版本 1.35,如果定义它们的 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)
类型:Label
示例:applyset.kubernetes.io/is-parent-type: "true"
用于:Custom Resource Definition (CRD)
使用此标签是 Alpha 版本。是用于实现 kubectl 中基于 ApplySet 的剪除 的规范的一部分。您可以将此标签设置为 CustomResourceDefinition (CRD) 以标识其定义的自定义资源类型(而不是 CRD 本身)作为 ApplySet 的允许父级。此标签的唯一允许值是 "true";如果您不想将 CRD 标记为 ApplySet 的有效父级,请省略此标签。
applyset.kubernetes.io/part-of (alpha)
类型:Label
示例:applyset.kubernetes.io/part-of: "applyset-0eFHV8ySqp7XoShsGvyWFQD3s96yqwHmzc4e0HR1dsY-v1"
用于:所有对象。
使用此标签是 Alpha 版本。是用于实现 kubectl 中基于 ApplySet 的剪除 的规范的一部分。此标签使对象成为 ApplySet 的成员。该标签的值必须与父对象上 applyset.kubernetes.io/id 标签的值匹配。
applyset.kubernetes.io/tooling (alpha)
类型:Annotation
示例:applyset.kubernetes.io/tooling: "kubectl/v1.35"
用于:用作 ApplySet 父级的对象。
使用此注释是 Alpha 版本。对于 Kubernetes 版本 1.35,如果定义它们的 CustomResourceDefinition 具有 applyset.kubernetes.io/is-parent-type 标签,则可以将此注释用于 Secrets、ConfigMaps 或自定义资源。
这是用于实现 kubectl 中基于 ApplySet 的剪枝 的规范的一部分。此注释应用于用于跟踪 ApplySet 的父对象,以指示哪个工具管理该 ApplySet。工具应拒绝修改属于其他工具的 ApplySet。该值必须采用 <toolname>/<semver> 格式。
apps.kubernetes.io/pod-index (beta)
类型:Label
示例:apps.kubernetes.io/pod-index: "0"
用于:Pod
当 StatefulSet 控制器为 StatefulSet 创建 Pod 时,它会将此标签设置在该 Pod 上。标签的值是正在创建的 Pod 的序号索引。
有关更多详细信息,请参阅 StatefulSet 主题中的 Pod 索引标签。请注意,必须启用 PodIndexLabel 功能门控才能将此标签添加到 Pod 中。
resource.kubernetes.io/pod-claim-name
类型:Annotation
示例:resource.kubernetes.io/pod-claim-name: "my-pod-claim"
用于:ResourceClaim
此注释分配给生成的 ResourceClaim。其值对应于为创建 ResourceClaim 的任何 Pod(s) 的 .spec 中的资源声明的名称。此注释是 动态资源分配 的内部实现细节。您不需要读取或修改此注释的值。
cluster-autoscaler.kubernetes.io/safe-to-evict
类型:Annotation
示例:cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
用于:Pod
当此注释设置为 "true" 时,集群自动缩放器即使在其他规则通常会阻止的情况下,也允许驱逐 Pod。集群自动缩放器绝不会驱逐显式设置为 "false" 的 Pod;您可以将其设置为您希望保持运行的重要 Pod。如果未设置此注释,则集群自动缩放器遵循其 Pod 级别的行为。
config.kubernetes.io/local-config
类型:Annotation
示例:config.kubernetes.io/local-config: "true"
用于:所有对象
此注释用于在清单文件中标记一个对象,作为不应提交到 Kubernetes API 的本地配置。
此注释的值为 "true" 表示该对象仅由客户端工具使用,不应提交到 API 服务器。
可以将此注释的值设置为 "false",以声明即使在其他情况下被假定为本地时,该对象也应提交到 API 服务器。
此注释是 Kubernetes 资源模型 (KRM) 函数规范的一部分,Kustomize 和类似的第三方工具使用它。例如,Kustomize 会从其最终构建输出中删除带有此注释的对象。
container.apparmor.security.beta.kubernetes.io/* (已弃用)
类型:Annotation
示例:container.apparmor.security.beta.kubernetes.io/my-container: my-custom-profile
用于:Pods
此注释允许您为 Kubernetes pod 中的容器指定 AppArmor 安全配置文件。从 Kubernetes v1.30 开始,应使用 appArmorProfile 字段设置此项。要了解更多信息,请参阅 AppArmor 教程。该教程说明了使用 AppArmor 限制容器的能力和访问权限。
指定的配置文件规定了容器化进程必须遵守的一组规则和限制。这有助于为您的容器强制执行安全策略和隔离。
deployment.kubernetes.io/desired-replicas
类型:Annotation
示例:deployment.kubernetes.io/desired-replicas: "3"
用于:ReplicaSet
此注释由 Deployment 控制器设置在它管理的 ReplicaSet 上。该值表示来自拥有此 ReplicaSet 的 Deployment 的期望副本数 (.spec.replicas)。Deployment 控制器使用此注释来跟踪滚动更新和缩放操作期间的期望状态。
这是一个由 Deployment 控制器使用的内部注释,不应手动修改。
deployment.kubernetes.io/max-replicas
类型:Annotation
示例:deployment.kubernetes.io/max-replicas: "5"
用于:ReplicaSet
此注释由 Deployment 控制器设置在它管理的 ReplicaSet 上。该值表示在滚动更新期间此 ReplicaSet 允许拥有的最大副本数。这用于实现 Deployment 滚动更新策略的 maxSurge 参数,该参数控制在更新期间可以创建的超出期望数量的 Pod 的数量。
这是一个由 Deployment 控制器使用的内部注释,不应手动修改。
deployment.kubernetes.io/revision
类型:Annotation
示例:deployment.kubernetes.io/revision: "2"
用于:ReplicaSet
此注释由 Deployment 控制器设置在它管理的 ReplicaSet 上。该值表示 Deployment 的修订号。每次 Deployment 的 Pod 模板 (.spec.template) 更改时,修订号都会递增。此注释用于跟踪回滚历史记录,并使用 kubectl rollout undo 回滚到以前的修订版本。
修订号在运行 kubectl rollout history deployment/<name> 时也可见。
这是一个由 Deployment 控制器使用的内部注释,不应手动修改。
internal.config.kubernetes.io/* (保留前缀)
类型:Annotation
用于:所有对象
此前缀保留供根据 Kubernetes 资源模型 (KRM) 函数规范充当编排器的工具内部使用。带有此前缀的注释是编排过程内部的,不会持久保存到文件系统上的清单中。换句话说,编排工具应在从本地文件系统读取文件时设置这些注释,并在将函数的输出写回文件系统时删除它们。
KRM 函数不得修改带有此前缀的注释,除非为给定的注释另有说明。这使得编排工具可以添加额外的内部注释,而无需更改现有函数。
internal.config.kubernetes.io/path
类型:Annotation
示例:internal.config.kubernetes.io/path: "relative/file/path.yaml"
用于:所有对象
此注释记录了对象加载的清单文件的斜杠分隔、操作系统无关的相对路径。该路径相对于编排工具确定的文件系统上的固定位置。
此注释是 Kubernetes 资源模型 (KRM) 函数规范的一部分,Kustomize 和类似的第三方工具使用它。
KRM 函数不应修改输入对象上的此注释,除非它正在修改引用的文件。KRM 函数可以在它生成的对象上包含此注释。
internal.config.kubernetes.io/index
类型:Annotation
示例:internal.config.kubernetes.io/index: "2"
用于:所有对象
此注释记录了包含对象的清单文件中的 YAML 文档的从零开始的索引位置。请注意,YAML 文档由三个破折号 (---) 分隔,并且每个文档可以包含一个对象。如果未指定此注释,则默认为值 0。
此注释是 Kubernetes 资源模型 (KRM) 函数规范的一部分,Kustomize 和类似的第三方工具使用它。
KRM 函数不应修改输入对象上的此注释,除非它正在修改引用的文件。KRM 函数可以在它生成的对象上包含此注释。
kube-scheduler-simulator.sigs.k8s.io/bind-result
类型:Annotation
示例: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
类型:Annotation
示例
kube-scheduler-simulator.sigs.k8s.io/filter-result: >-
{"node-282x7":{"AzureDiskLimits":"passed","EBSLimits":"passed","GCEPDLimits":"passed","InterPodAffinity":"passed","NodeAffinity":"passed","NodeName":"passed","NodePorts":"passed","NodeResourcesFit":"passed","NodeUnschedulable":"passed","NodeVolumeLimits":"passed","PodTopologySpread":"passed","TaintToleration":"passed","VolumeBinding":"passed","VolumeRestrictions":"passed","VolumeZone":"passed"},"node-gp9t4":{"AzureDiskLimits":"passed","EBSLimits":"passed","GCEPDLimits":"passed","InterPodAffinity":"passed","NodeAffinity":"passed","NodeName":"passed","NodePorts":"passed","NodeResourcesFit":"passed","NodeUnschedulable":"passed","NodeVolumeLimits":"passed","PodTopologySpread":"passed","TaintToleration":"passed","VolumeBinding":"passed","VolumeRestrictions":"passed","VolumeZone":"passed"}}
用于:Pod
此注释记录了过滤调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/finalscore-result
类型:Annotation
示例
kube-scheduler-simulator.sigs.k8s.io/finalscore-result: >-
{"node-282x7":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"200","TaintToleration":"300","VolumeBinding":"0"},"node-gp9t4":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"200","TaintToleration":"300","VolumeBinding":"0"}}
用于:Pod
此注释记录了调度器从评分调度器插件的评分计算出的最终评分,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/permit-result
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/permit-result: '{"CustomPermitPlugin":"success"}'
用于:Pod
此注释记录了许可调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/permit-result-timeout
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/permit-result-timeout: '{"CustomPermitPlugin":"10s"}'
用于:Pod
此注释记录了许可调度器插件返回的超时时间,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/postfilter-result
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/postfilter-result: '{"DefaultPreemption":"success"}'
用于:Pod
此注释记录了后过滤调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/prebind-result
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/prebind-result: '{"VolumeBinding":"success"}'
用于:Pod
此注释记录了预绑定调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/prefilter-result
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/prebind-result: '{"NodeAffinity":"[\"node-\a"]"}'
用于:Pod
此注释记录了预过滤调度器插件的预过滤结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/prefilter-result-status
类型:Annotation
示例
kube-scheduler-simulator.sigs.k8s.io/prefilter-result-status: >-
{"InterPodAffinity":"success","NodeAffinity":"success","NodePorts":"success","NodeResourcesFit":"success","PodTopologySpread":"success","VolumeBinding":"success","VolumeRestrictions":"success"}
用于:Pod
此注释记录了预过滤调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/prescore-result
类型:Annotation
示例
kube-scheduler-simulator.sigs.k8s.io/prescore-result: >-
{"InterPodAffinity":"success","NodeAffinity":"success","NodeNumber":"success","PodTopologySpread":"success","TaintToleration":"success"}
用于:Pod
此注释记录了预过滤调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/reserve-result
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/reserve-result: '{"VolumeBinding":"success"}'
用于:Pod
此注释记录了预留调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/result-history
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/result-history: '[]'
用于:Pod
此注释记录了来自调度器插件的所有过去的调度结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/score-result
类型:Annotation
kube-scheduler-simulator.sigs.k8s.io/score-result: >-
{"node-282x7":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"0","TaintToleration":"0","VolumeBinding":"0"},"node-gp9t4":{"ImageLocality":"0","InterPodAffinity":"0","NodeAffinity":"0","NodeNumber":"0","NodeResourcesBalancedAllocation":"76","NodeResourcesFit":"73","PodTopologySpread":"0","TaintToleration":"0","VolumeBinding":"0"}}
用于:Pod
此注释记录了评分调度器插件的结果,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kube-scheduler-simulator.sigs.k8s.io/selected-node
类型:Annotation
示例:kube-scheduler-simulator.sigs.k8s.io/selected-node: node-282x7
用于:Pod
此注释记录了由调度周期选择的节点,由 https://sigs.k8s.io/kube-scheduler-simulator 使用。
kubernetes.io/arch
类型:Label
示例:kubernetes.io/arch: "amd64"
用于:Node
Kubelet 使用 runtime.GOARCH(由 Go 定义)填充此项。如果您混合了 ARM 和 x86 节点,这会很有用。
kubernetes.io/os
类型:Label
示例:kubernetes.io/os: "linux"
用于:Node, Pod
对于节点,kubelet 使用 runtime.GOOS(由 Go 定义)填充此项。如果您在集群中混合了操作系统(例如:混合 Linux 和 Windows 节点),这会很有用。
您也可以在 Pod 上设置此标签。Kubernetes 允许您为此标签设置任何值;如果您使用此标签,则仍然应将其设置为 Pod 实际运行的操作系统对应的 Go runtime.GOOS 字符串。
如果 Pod 的 kubernetes.io/os 标签值与节点上的标签值不匹配,则节点上的 kubelet 不会允许该 Pod。但是,kube-scheduler 不会将此纳入考虑。或者,如果节点上运行的 kubelet 发现您指定了 Pod OS,并且这与该 kubelet 运行的节点的操作系统不相同,则 kubelet 会拒绝运行 Pod。请参阅 Pods OS 以了解更多详细信息。
kubernetes.io/metadata.name
类型:Label
示例:kubernetes.io/metadata.name: "mynamespace"
用于:Namespaces
Kubernetes API 服务器(控制平面的一部分)会在所有命名空间上设置此标签。标签值设置为命名空间的名称。您无法更改此标签的值。
如果您想使用标签 选择器来定向特定的命名空间,这将非常有用。
kubernetes.io/limit-ranger
类型:Annotation
示例:kubernetes.io/limit-ranger: "LimitRanger 插件设置:容器 nginx 的 cpu、memory 请求;容器 nginx 的 cpu、memory 限制"
用于:Pod
Kubernetes 默认情况下不提供任何资源限制,这意味着除非您显式定义限制,否则您的容器可以消耗无限的 CPU 和内存。您可以为 Pod 定义默认请求或默认限制。您可以通过在相关命名空间中创建一个 LimitRange 来实现这一点。在您定义 LimitRange 之后部署的 Pod 将应用这些限制。kubernetes.io/limit-ranger 注解记录了 Pod 已经指定了资源默认值,并且这些默认值已成功应用。有关更多详细信息,请阅读关于 LimitRanges 的内容。
kubernetes.io/config.hash
类型:Annotation
示例:kubernetes.io/config.hash: "df7cc47f8477b6b1226d7d23a904867b"
用于:Pod
当 kubelet 基于给定的 manifest 创建静态 Pod 时,它会将此注解附加到静态 Pod。该注解的值是 Pod 的 UID。请注意,kubelet 也会将 .spec.nodeName 设置为当前节点名称,就像 Pod 已被调度到该节点一样。
kubernetes.io/config.mirror
类型:Annotation
示例:kubernetes.io/config.mirror: "df7cc47f8477b6b1226d7d23a904867b"
用于:Pod
对于 kubelet 在节点上创建的静态 Pod,会在 API 服务器上创建一个 镜像 Pod。kubelet 添加一个注解来指示此 Pod 实际上是一个镜像 Pod。该注解值从 kubernetes.io/config.hash 注解复制而来,即 Pod 的 UID。
在更新带有此注解的 Pod 时,无法更改或删除该注解。如果 Pod 没有此注解,则在 Pod 更新期间无法添加它。
kubernetes.io/config.source
类型:Annotation
示例:kubernetes.io/config.source: "file"
用于:Pod
此注解由 kubelet 添加,用于指示 Pod 的来源。对于静态 Pod,该注解的值可以是 file 或 http,具体取决于 Pod manifest 的位置。对于在 API 服务器上创建并随后调度到当前节点的 Pod,该注解的值为 api。
kubernetes.io/config.seen
类型:Annotation
示例:kubernetes.io/config.seen: "2023-10-27T04:04:56.011314488Z"
用于:Pod
当 kubelet 首次看到 Pod 时,它可能会以 RFC3339 格式的当前时间戳作为值将此注解添加到 Pod。
addonmanager.kubernetes.io/mode
类型:Label
示例:addonmanager.kubernetes.io/mode: "Reconcile"
用于:所有对象
要指定如何管理一个插件,可以使用 addonmanager.kubernetes.io/mode 标签。此标签可以具有以下三个值之一:Reconcile、EnsureExists 或 Ignore。
Reconcile:插件资源将定期与预期状态进行协调。如果存在任何差异,插件管理器将根据需要重新创建、重新配置或删除资源。如果没有指定标签,则这是默认模式。EnsureExists:插件资源仅会检查是否存在,但在创建后不会被修改。当没有具有该名称的资源实例时,插件管理器将创建或重新创建资源。Ignore:插件资源将被忽略。此模式适用于与插件管理器不兼容或由其他控制器管理的插件。
有关更多详细信息,请参阅 Addon-manager。
beta.kubernetes.io/arch (已弃用)
类型:Label
此标签已被弃用。请使用 kubernetes.io/arch 代替。
beta.kubernetes.io/os (已弃用)
类型:Label
此标签已被弃用。请使用 kubernetes.io/os 代替。
kube-aggregator.kubernetes.io/automanaged
类型:Label
示例:kube-aggregator.kubernetes.io/automanaged: "onstart"
用于:APIService
kube-apiserver 会将此标签设置为任何 API 服务器自动创建的 APIService 对象。该标签标记了控制平面应如何管理该 APIService。您不应自行添加、修改或删除此标签。
说明
自动管理的 APIService 对象在 kube-apiserver 发现没有与 APIService 的 API 组/版本对应的内置或自定义资源 API 时会被删除。有两种可能的值
onstart:APIService 应该在 API 服务器启动时进行协调,但除此之外不会进行协调。true:API 服务器应持续协调此 APIService。
service.alpha.kubernetes.io/tolerate-unready-endpoints (已弃用)
类型:Annotation
用于:Service
此注解以前用于指示 Endpoint 控制器是否应为未就绪的 Pod 创建 Endpoint。从 Kubernetes 1.11 开始,此功能的首选 API 是 Service 上的 .publishNotReadyAddresses 字段。此注解在 Kubernetes 1.35 中无效。
autoscaling.alpha.kubernetes.io/behavior (已弃用)
类型:Annotation
用于:HorizontalPodAutoscaler
此注解用于在早期版本的 Kubernetes 中配置 HorizontalPodAutoscaler (HPA) 的缩放行为。它允许您指定 HPA 应该如何放大或缩小 Pod,包括设置稳定窗口和缩放策略。在任何受支持的 Kubernetes 版本中设置此注解无效。
kubernetes.io/hostname
类型:Label
示例:kubernetes.io/hostname: "ip-172-20-114-199.ec2.internal"
用于:Node
Kubelet 会用节点的 hostname 填充此标签。请注意,可以通过将 --hostname-override 标志传递给 kubelet 来更改“实际”hostname。
此标签也用作拓扑层次结构的一部分。有关更多信息,请参阅 topology.kubernetes.io/zone。
kubernetes.io/change-cause
类型:Annotation
示例:kubernetes.io/change-cause: "kubectl edit --record deployment foo"
用于:所有对象
此注解是对更改原因的最佳猜测。
当向可能更改对象的 kubectl 命令中添加 --record 时,会填充此注解。
kubernetes.io/description
类型:Annotation
示例:kubernetes.io/description: "K8s 对象的描述。"
用于:所有对象
此注解用于描述给定对象的特定行为。
kubernetes.io/enforce-mountable-secrets (已弃用)
类型:Annotation
示例:kubernetes.io/enforce-mountable-secrets: "true"
用于:ServiceAccount
说明
kubernetes.io/enforce-mountable-secrets 自 Kubernetes v1.32 起已被弃用。使用单独的命名空间来隔离对挂载密钥的访问。要使此注解生效,该值必须为 true。当您将此注解设置为“true”时,Kubernetes 会对以该 ServiceAccount 运行的 Pod 强制执行以下规则:
- 作为卷挂载的密钥必须列在 ServiceAccount 的
secrets字段中。 - 在容器 (包括 sidecar 容器和 init 容器) 的
envFrom中引用的密钥也必须列在 ServiceAccount 的 secrets 字段中。如果 Pod 中的任何容器引用了 ServiceAccount 的secrets字段中未列出的密钥 (即使引用标记为optional),则 Pod 将无法启动,并且将生成指示不合规密钥引用的错误。 - Pod 的
imagePullSecrets中引用的密钥必须存在于 ServiceAccount 的imagePullSecrets字段中,Pod 将无法启动,并且将生成指示不合规镜像拉取密钥引用的错误。
当您创建或更新 Pod 时,将检查这些规则。如果 Pod 不符合这些规则,它将不会启动,并且您将看到错误消息。如果 Pod 已经正在运行,并且您将 kubernetes.io/enforce-mountable-secrets 注解更改为 true,或者您编辑关联的 ServiceAccount 以删除 Pod 已经使用的密钥的引用,则 Pod 将继续运行。
node.alpha.kubernetes.io/ttl (已弃用)
类型:Label
示例:node.alpha.kubernetes.io/ttl: "0"
用于:Node
此标签以前被一些工具 (例如 minikube) 用于设置节点的生存时间值。该标签已被弃用,不应在新的部署中使用。
说明
此标签已被弃用,在当前的 Kubernetes 版本中无效。它可能仍然被较旧的工具设置以实现向后兼容性。node.kubernetes.io/exclude-from-external-load-balancers
类型:Label
示例:node.kubernetes.io/exclude-from-external-load-balancers
用于:Node
您可以将标签添加到特定的 worker 节点,以将它们排除在外部负载均衡器使用的后端服务器列表中。可以使用以下命令将 worker 节点从后端集合中的后端服务器列表中排除:
kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers=true
controller.kubernetes.io/pod-deletion-cost
类型:Annotation
示例:controller.kubernetes.io/pod-deletion-cost: "10"
用于:Pod
此注解用于设置 Pod 删除成本,允许用户影响 ReplicaSet 降级顺序。该注解值解析为 int32 类型。
cluster-autoscaler.kubernetes.io/enable-ds-eviction
类型:Annotation
示例:cluster-autoscaler.kubernetes.io/enable-ds-eviction: "true"
用于:Pod
此注解控制 ClusterAutoscaler 是否应驱逐 DaemonSet Pod。此注解需要在 DaemonSet manifest 中的 DaemonSet Pod 上指定。当此注解设置为 "true" 时,ClusterAutoscaler 允许驱逐 DaemonSet Pod,即使其他规则通常会阻止这样做。要禁止 ClusterAutoscaler 驱逐 DaemonSet Pod,可以为重要的 DaemonSet Pod 将此注解设置为 "false"。如果未设置此注解,则 ClusterAutoscaler 遵循其总体行为 (即根据其配置驱逐 DaemonSet)。
说明
此注解仅影响 DaemonSet Pod。kubernetes.io/ingress-bandwidth
类型:Annotation
示例: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
类型:Annotation
示例: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 (已弃用)
类型:Label
说明
从 v1.17 开始,此标签已被 node.kubernetes.io/instance-type 取代。node.kubernetes.io/instance-type
类型:Label
示例:node.kubernetes.io/instance-type: "m3.medium"
用于:Node
Kubelet 会使用云提供商定义的实例类型填充此信息。只有在使用云提供商时才会设置此信息。如果您想将某些工作负载定向到某些实例类型,此设置会很有用,但通常您希望依赖 Kubernetes 调度器执行基于资源的调度。您应该根据属性而不是实例类型进行调度(例如:需要 GPU,而不是需要 g2.2xlarge)。
failure-domain.beta.kubernetes.io/region (已弃用)
类型:Label
说明
从 v1.17 开始,此标签已被 topology.kubernetes.io/region 取代。failure-domain.beta.kubernetes.io/zone (已弃用)
类型:Label
说明
从 v1.17 开始,此标签已被 topology.kubernetes.io/zone 取代。pv.kubernetes.io/bind-completed
类型:Annotation
示例:pv.kubernetes.io/bind-completed: "yes"
用于:PersistentVolumeClaim
当此注解设置在 PersistentVolumeClaim (PVC) 上时,表示 PVC 的生命周期已通过初始绑定设置。当存在时,此信息会改变控制平面对 PVC 对象状态的解释。此注解的值对 Kubernetes 来说无关紧要。
pv.kubernetes.io/bound-by-controller
类型:Annotation
示例:pv.kubernetes.io/bound-by-controller: "yes"
用于:PersistentVolume, PersistentVolumeClaim
如果此注解设置在 PersistentVolume 或 PersistentVolumeClaim 上,则表示存储绑定(PersistentVolume → PersistentVolumeClaim,或 PersistentVolumeClaim → PersistentVolume)由 控制器 安装。如果未设置该注解,并且存在存储绑定,则该注解的缺失意味着绑定是手动完成的。此注解的值无关紧要。
pv.kubernetes.io/provisioned-by
类型:Annotation
示例:pv.kubernetes.io/provisioned-by: "kubernetes.io/rbd"
用于:PersistentVolume
此注解被添加到由 Kubernetes 动态配置的 PersistentVolume(PV) 中。其值为创建卷的卷插件的名称。它既服务于用户(显示 PV 的来源),也服务于 Kubernetes(在其决策中识别动态配置的 PV)。
pv.kubernetes.io/migrated-to
类型:Annotation
示例:pv.kubernetes.io/migrated-to: pd.csi.storage.gke.io
用于:PersistentVolume, PersistentVolumeClaim
它被添加到应该由其相应的 CSI 驱动程序通过 CSIMigration 功能门动态配置/删除的 PersistentVolume(PV) 和 PersistentVolumeClaim(PVC) 中。当设置此注解时,Kubernetes 组件将“让步”,并且 external-provisioner 将对这些对象采取行动。
statefulset.kubernetes.io/pod-name
类型:Label
示例:statefulset.kubernetes.io/pod-name: "mystatefulset-7"
用于:Pod
当 StatefulSet 控制器为 StatefulSet 创建 Pod 时,控制平面会将此标签设置在该 Pod 上。该标签的值是正在创建的 Pod 的名称。
有关更多详细信息,请参阅 StatefulSet 主题中的 Pod 名称标签。
scheduler.alpha.kubernetes.io/node-selector
类型:Annotation
示例:scheduler.alpha.kubernetes.io/node-selector: "name-of-node-selector"
用于:Namespace
PodNodeSelector 使用此注解键将节点选择器分配给命名空间中的 Pod。
topology.kubernetes.io/region
类型:Label
示例:topology.kubernetes.io/region: "us-east-1"
用于:Node, PersistentVolume
请参阅 topology.kubernetes.io/zone。
topology.kubernetes.io/zone
类型:Label
示例:topology.kubernetes.io/zone: "us-east-1c"
用于:Node, PersistentVolume
在 Node 上:kubelet 或外部 cloud-controller-manager 会使用来自云提供商的信息填充此信息。只有在使用云提供商时才会设置此信息。但是,如果这在您的拓扑结构中有意义,您可以考虑在节点上设置此信息。
在 PersistentVolume 上:拓扑感知卷配置器会自动为 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 在区域之间均匀分布。如果需要,您可以使用同构区域(相同数量和类型的节点)来降低 Pod 在区域之间不均匀分布的可能性。
调度器(通过 VolumeZonePredicate 谓词)还会确保声明给定卷的 Pod 仅放置在与该卷相同的区域中。卷无法跨区域附加。
如果 PersistentVolumeLabel 不支持自动标记您的 PersistentVolume,您应该考虑手动添加标签(或添加对 PersistentVolumeLabel 的支持)。使用 PersistentVolumeLabel,调度器可以防止 Pod 挂载不同区域中的卷。如果您的基础设施没有此约束,则根本不需要将区域标签添加到卷中。
volume.beta.kubernetes.io/storage-provisioner (已弃用)
类型:Annotation
示例:volume.beta.kubernetes.io/storage-provisioner: "k8s.io/minikube-hostpath"
用于:PersistentVolumeClaim
此注解自 v1.23 起已被弃用。请参阅 volume.kubernetes.io/storage-provisioner。
volume.beta.kubernetes.io/storage-class (已弃用)
类型:Annotation
示例:volume.beta.kubernetes.io/storage-class: "example-class"
用于:PersistentVolume, PersistentVolumeClaim
此注解可用于 PersistentVolume(PV) 或 PersistentVolumeClaim(PVC) 以指定 StorageClass 的名称。当同时指定 storageClassName 属性和 volume.beta.kubernetes.io/storage-class 注解时,注解 volume.beta.kubernetes.io/storage-class 优先于 storageClassName 属性。
此注解已被弃用。相反,请设置 PersistentVolumeClaim 或 PersistentVolume 的 storageClassName 字段。
volume.beta.kubernetes.io/mount-options (已弃用)
类型:Annotation
示例:volume.beta.kubernetes.io/mount-options: "ro,soft"
用于:PersistentVolume
Kubernetes 管理员可以为 PersistentVolume 挂载到节点时指定额外的 挂载选项。
volume.kubernetes.io/storage-provisioner
类型:Annotation
用于:PersistentVolumeClaim
此注解被添加到应该动态配置的 PVC 中。其值为应该为此 PVC 配置卷的卷插件的名称。
volume.kubernetes.io/selected-node
类型:Annotation
用于:PersistentVolumeClaim
此注解被添加到由调度器触发以进行动态配置的 PVC 中。其值为所选节点的名称。
volumes.kubernetes.io/controller-managed-attach-detach
类型:Annotation
用于:Node
如果节点具有 volumes.kubernetes.io/controller-managed-attach-detach 注解,则其存储附加和分离操作由 volume attach/detach 控制器 管理。
该注解的值并不重要。
node.kubernetes.io/windows-build
类型:Label
示例:node.kubernetes.io/windows-build: "10.0.17763"
用于:Node
当 kubelet 在 Microsoft Windows 上运行时,它会自动标记其 Node 以记录正在使用的 Windows Server 版本。
标签的值格式为“MajorVersion.MinorVersion.BuildNumber”。
storage.alpha.kubernetes.io/migrated-plugins
类型:Annotation
示例:storage.alpha.kubernetes.io/migrated-plugins: "kubernetes.io/cinder"
用于:CSINode(扩展 API)
此注释会自动添加到映射到安装了 CSIDriver 的节点的 CSINode 对象。此注释显示迁移插件的树内插件名称。其值取决于集群的树内云提供商存储类型。
例如,如果树内云提供商存储类型是 CSIMigrationvSphere,则应使用以下内容更新节点的 CSINodes 实例:storage.alpha.kubernetes.io/migrated-plugins: "kubernetes.io/vsphere-volume"
service.kubernetes.io/headless
类型:Label
示例:service.kubernetes.io/headless: ""
用于:EndpointSlice、Endpoints
控制平面将此标签添加到 EndpointSlice 和 Endpoints 对象,当所有者 Service 是无头服务时(作为服务代理可以忽略这些端点的提示)。要了解更多信息,请阅读无头服务。
service.kubernetes.io/topology-aware-hints (已弃用)
示例:service.kubernetes.io/topology-aware-hints: "Auto"
用于:Service
这是 service.kubernetes.io/topology-mode 注释的已弃用别名,具有相同的功能。
service.kubernetes.io/topology-mode
类型:Annotation
示例:service.kubernetes.io/topology-mode: Auto
用于:Service
此注释提供了一种定义 Service 如何处理网络拓扑的方式;例如,您可以配置 Service,以便 Kubernetes 优先保持客户端和服务器在单个拓扑区域内的流量。在某些情况下,这可以帮助降低成本或提高网络性能。
有关更多详细信息,请参阅拓扑感知路由。
kubernetes.io/service-name
类型:Label
示例:kubernetes.io/service-name: "my-website"
用于:EndpointSlice
Kubernetes 使用此标签将 EndpointSlice 与 Service 关联起来。
此标签记录了 EndpointSlice 所支持的 Service 的名称。所有 EndpointSlice 都应将此标签设置为其关联 Service 的名称。
kubernetes.io/service-account.name
类型:Annotation
示例:kubernetes.io/service-account.name: "sa-name"
用于:Secret
此注释记录了 Secret(类型为 kubernetes.io/service-account-token)中存储的令牌所代表的 ServiceAccount 的名称。
kubernetes.io/service-account.uid
类型:Annotation
示例:kubernetes.io/service-account.uid: da68f9c6-9d26-11e7-b84e-002dc52800da
用于:Secret
此注释记录了 Secret(类型为 kubernetes.io/service-account-token)中存储的令牌所代表的 ServiceAccount 的唯一 ID。
kubernetes.io/legacy-token-last-used
类型:Label
示例:kubernetes.io/legacy-token-last-used: 2022-10-24
用于:Secret
控制平面仅将此标签添加到具有类型 kubernetes.io/service-account-token 的 Secrets。此标签的值记录了控制平面上次看到使用服务帐户令牌进行身份验证的请求的日期(ISO 8601 格式,UTC 时区)。
如果旧版令牌最后一次使用是在集群获得该功能(在 Kubernetes v1.26 中添加)之前,则不会设置该标签。
kubernetes.io/legacy-token-invalid-since
类型:Label
示例:kubernetes.io/legacy-token-invalid-since: 2023-10-27
用于:Secret
控制平面会自动将此标签添加到自动生成的 Secrets,这些 Secrets 具有类型 kubernetes.io/service-account-token。此标签将基于 Secret 的令牌标记为无效的身份验证。此标签的值记录了控制平面检测到自动生成的 Secret 未被使用指定持续时间(默认为一年)的日期(ISO 8601 格式,UTC 时区)。
endpoints.kubernetes.io/managed-by (已弃用)
类型:Label
示例:endpoints.kubernetes.io/managed-by: endpoint-controller
用于:Endpoints
此标签用于内部标记由 Kubernetes 创建的 Endpoints 对象(与由用户或外部控制器创建的 Endpoints 对象相对)。
说明
Endpoints API 已弃用,推荐使用 EndpointSlice。endpointslice.kubernetes.io/managed-by
类型:Label
示例:endpointslice.kubernetes.io/managed-by: endpointslice-controller.k8s.io
用于:EndpointSlices
该标签用于指示管理 EndpointSlice 的控制器或实体。此标签旨在使不同的 EndpointSlice 对象由同一集群内的不同控制器或实体管理。值 endpointslice-controller.k8s.io 表示为 Service 的选择器自动创建的 EndpointSlice 对象。
endpointslice.kubernetes.io/skip-mirror
类型:Label
示例:endpointslice.kubernetes.io/skip-mirror: "true"
用于:Endpoints
可以将此标签设置为 "true",以指示 EndpointSliceMirroring 控制器不应使用 EndpointSlices 镜像此资源。
service.kubernetes.io/service-proxy-name
类型:Label
示例:service.kubernetes.io/service-proxy-name: "foo-bar"
用于:Service
为该标签设置值会告诉 kube-proxy 忽略此 Service 的代理。这允许使用替代代理实现来处理此 Service(例如,运行一个管理 nftables 的 DaemonSet)。可以使用此字段同时激活多个替代代理实现,例如,为每个负责各自 Service 的替代代理实现提供一个唯一值。
experimental.windows.kubernetes.io/isolation-type (已弃用)
类型:Annotation
示例:experimental.windows.kubernetes.io/isolation-type: "hyperv"
用于:Pod
该注释用于使用 Hyper-V 隔离运行 Windows 容器。
说明
从 v1.20 开始,此注释已弃用。实验性 Hyper-V 支持已在 1.21 中删除。ingressclass.kubernetes.io/is-default-class
类型:Annotation
示例:ingressclass.kubernetes.io/is-default-class: "true"
用于:IngressClass
当 IngressClass 资源将此注释设置为 "true" 时,没有指定类的新的 Ingress 资源将被分配此默认类。
kubernetes.io/ingress.class (已弃用)
类型:Annotation
用于:Ingress
说明
从 v1.18 开始,此注释已弃用,推荐使用spec.ingressClassName。kubernetes.io/cluster-service (已弃用)
类型:Label
示例:kubernetes.io/cluster-service: "true"
用于:Service
如果值为 true,则此标签指示 Service 为集群提供服务。当您运行 kubectl cluster-info 时,该工具会查询将此标签设置为 true 的 Service。
但是,在任何 Service 上设置此标签已被弃用。
storageclass.kubernetes.io/is-default-class
类型:Annotation
示例:storageclass.kubernetes.io/is-default-class: "true"
用于:StorageClass
当单个 StorageClass 资源将此注释设置为 "true" 时,没有指定类的新的 PersistentVolumeClaim 资源将被分配此默认类。
alpha.kubernetes.io/provided-node-ip (alpha)
类型:Annotation
示例:alpha.kubernetes.io/provided-node-ip: "10.0.0.1"
用于:Node
kubelet 可以在 Node 上设置此注释,以表示其配置的 IPv4 和/或 IPv6 地址。
当 kubelet 使用 --cloud-provider 标志设置为任何值(包括外部和旧版树内云提供商)启动时,它会将此注释设置为 Node,以表示从命令行标志 (--node-ip) 设置的 IP 地址。此 IP 地址由云控制器管理器验证为云提供商处有效。
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
类型:Annotation
示例:batch.kubernetes.io/cronjob-scheduled-timestamp: "2016-05-19T03:00:00-07:00"
用于:由 CronJob 控制的 Job 和 Pod
此注释用于记录 Job 的原始(预期)创建时间戳,当该 Job 是 CronJob 的一部分时。控制平面将值设置为 RFC3339 格式中的时间戳。如果 Job 属于指定了时区的 CronJob,则时间戳在该时区中。否则,时间戳位于控制器管理器的本地时间中。
kubectl.kubernetes.io/default-container
类型:Annotation
示例:kubectl.kubernetes.io/default-container: "front-end-app"
该注释的值是此 Pod 的默认容器名称。例如,kubectl logs 或 kubectl exec 不带 -c 或 --container 标志将使用此默认容器。
kubectl.kubernetes.io/default-logs-container (已弃用)
类型:Annotation
示例:kubectl.kubernetes.io/default-logs-container: "front-end-app"
该注释的值是此 Pod 的默认日志记录容器名称。例如,kubectl logs 不带 -c 或 --container 标志将使用此默认容器。
说明
此注释已弃用。您应该使用kubectl.kubernetes.io/default-container 注释代替。Kubernetes 1.25 及更高版本将忽略此注释。kubectl.kubernetes.io/last-applied-configuration
类型:Annotation
示例:请参阅以下片段
kubectl.kubernetes.io/last-applied-configuration: >
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"example","namespace":"default"},"spec":{"selector":{"matchLabels":{"app.kubernetes.io/name":foo}},"template":{"metadata":{"labels":{"app.kubernetes.io/name":"foo"}},"spec":{"containers":[{"image":"container-registry.example/foo-bar:1.42","name":"foo-bar","ports":[{"containerPort":42}]}]}}}}
适用于:所有对象
kubectl 命令行工具使用此注释作为一种遗留机制来跟踪更改。该机制已被服务器端应用所取代。
kubectl.kubernetes.io/restartedAt
类型:Annotation
示例:kubectl.kubernetes.io/restartedAt: "2024-06-21T17:27:41Z"
适用于:Deployment, ReplicaSet, StatefulSet, DaemonSet, Pod
此注释包含资源的最新重启时间(Deployment、ReplicaSet、StatefulSet 或 DaemonSet),其中 kubectl 触发了 rollout 以强制创建新的 Pod。kubectl rollout restart <RESOURCE> 命令通过修补资源所有 Pod 的模板元数据来触发重启。在上面的示例中,最新的重启时间显示为 2024 年 6 月 21 日 17:27:41 UTC。
您不应假设此注释代表最近更新的日期/时间;自上次手动触发的 rollout 以来,可能已经进行了单独的更改。
如果您手动设置 Pod 上的此注释,则不会发生任何情况。重启副作用来自于工作负载管理和 Pod 模板的工作方式。
endpoints.kubernetes.io/over-capacity (已弃用)
类型:Annotation
示例:endpoints.kubernetes.io/over-capacity: truncated
用于:Endpoints
如果关联的 控制平面的 Endpoints 对象拥有的后端 endpoint 数量超过 1000 个,Service 会添加此注释。该注释表明 Endpoints 对象已超出容量,并且 endpoint 的数量已被截断为 1000 个。
如果后端 endpoint 的数量降至 1000 个以下,控制平面将删除此注释。
endpoints.kubernetes.io/last-change-trigger-time (已弃用)
类型:Annotation
示例:endpoints.kubernetes.io/last-change-trigger-time: "2023-07-20T04:45:21Z"
用于:Endpoints
此注释设置为 Endpoints 对象,表示上次在某个 Pod 或 Service 对象中发生的更改触发对 Endpoints 对象进行更改的时间戳(时间戳以 RFC 3339 日期时间字符串格式存储。例如,'2018-10-22T19:32:52.1Z')。
说明
Endpoints API 已弃用,推荐使用 EndpointSlice。control-plane.alpha.kubernetes.io/leader (已弃用)
类型:Annotation
示例:control-plane.alpha.kubernetes.io/leader={"holderIdentity":"controller-0","leaseDurationSeconds":15,"acquireTime":"2023-01-19T13:12:57Z","renewTime":"2023-01-19T13:13:54Z","leaderTransitions":1}
用于:Endpoints
控制平面 以前使用 Endpoints 对象来协调 Kubernetes 控制平面的领导者分配。此 Endpoints 对象包含一个带有以下详细信息的注释
- 当前领导者是谁。
- 何时获得当前领导权。
- 租赁期限(领导权)的秒数。
- 当前租赁(当前领导权)应该续订的时间。
- 过去发生的领导权转换次数。
Kubernetes 现在使用 Leases 来管理 Kubernetes 控制平面的领导者分配。
batch.kubernetes.io/job-tracking (已弃用)
类型:Annotation
示例:batch.kubernetes.io/job-tracking: ""
适用于:Jobs
以前,Job 上的此注释表示控制平面正在使用 finalizers 跟踪 Job 状态。添加或删除此注释不再有效(Kubernetes v1.27 及更高版本)所有 Jobs 均使用 finalizers 进行跟踪。
job-name (已弃用)
类型:Label
示例:job-name: "pi"
适用于:Jobs 和受 Jobs 控制的 Pod
说明
从 Kubernetes 1.27 开始,此标签已弃用。Kubernetes 1.27 及更高版本会忽略此标签并使用带有前缀的job-name 标签。controller-uid (已弃用)
类型:Label
示例:controller-uid: "$UID"
适用于:Jobs 和受 Jobs 控制的 Pod
说明
从 Kubernetes 1.27 开始,此标签已弃用。Kubernetes 1.27 及更高版本会忽略此标签并使用带有前缀的controller-uid 标签。batch.kubernetes.io/job-name
类型:Label
示例:batch.kubernetes.io/job-name: "pi"
适用于:Jobs 和受 Jobs 控制的 Pod
此标签用作一种用户友好的方法来获取与 Job 对应的 Pod。job-name 来自 Job 的 name,允许轻松获取与 Job 对应的 Pod。
batch.kubernetes.io/controller-uid
类型:Label
示例:batch.kubernetes.io/controller-uid: "$UID"
适用于:Jobs 和受 Jobs 控制的 Pod
此标签用作一种以编程方式获取与 Job 对应的所有 Pod 的方法。controller-uid 是一个唯一标识符,它被设置在 selector 字段中,以便 Job 控制器可以获取所有相应的 Pod。
scheduler.alpha.kubernetes.io/defaultTolerations
类型:Annotation
示例:scheduler.alpha.kubernetes.io/defaultTolerations: '[{"operator": "Equal", "value": "value1", "effect": "NoSchedule", "key": "dedicated-node"}]'
用于:Namespace
此注释要求启用 PodTolerationRestriction 准入控制器。此注释键允许将 tolerations 分配给命名空间,并且在此命名空间中创建的任何新 Pod 都会获得这些 tolerations。
scheduler.alpha.kubernetes.io/tolerationsWhitelist
类型:Annotation
示例:scheduler.alpha.kubernetes.io/tolerationsWhitelist: '[{"operator": "Exists", "effect": "NoSchedule", "key": "dedicated-node"}]'
用于:Namespace
只有在启用(Alpha)PodTolerationRestriction 准入控制器时,此注释才有用。该注释值是一个 JSON 文档,定义了注释命名空间的允许 tolerations 列表。当您创建 Pod 或修改其 tolerations 时,API 服务器会检查 tolerations,以查看它们是否在允许列表中提及。只有当检查成功时,Pod 才能被允许。
scheduler.alpha.kubernetes.io/preferAvoidPods (已弃用)
类型:Annotation
用于:Node
此注释要求启用 NodePreferAvoidPods 调度插件。该插件自 Kubernetes 1.22 起已弃用。请改用 Taints and Tolerations。
node.kubernetes.io/not-ready
类型:Taint
示例:node.kubernetes.io/not-ready: "NoExecute"
用于:Node
Node 控制器通过监视节点的运行状况来检测节点是否就绪,并相应地添加或删除此 taint。
node.kubernetes.io/unreachable
类型:Taint
示例:node.kubernetes.io/unreachable: "NoExecute"
用于:Node
Node 控制器将 taint 添加到 Node,对应于 NodeCondition Ready 为 Unknown。
node.kubernetes.io/unschedulable
类型:Taint
示例:node.kubernetes.io/unschedulable: "NoSchedule"
用于:Node
在初始化节点以避免竞争条件时,会将 taint 添加到节点。
node.kubernetes.io/memory-pressure
类型:Taint
示例:node.kubernetes.io/memory-pressure: "NoSchedule"
用于:Node
kubelet 基于在 Node 上观察到的 memory.available 和 allocatableMemory.available 检测内存压力。然后将观察到的值与可以设置在 kubelet 上的相应阈值进行比较,以确定是否应添加/删除 Node 条件和 taint。
node.kubernetes.io/disk-pressure
类型:Taint
示例:node.kubernetes.io/disk-pressure :"NoSchedule"
用于:Node
kubelet 基于在 Node 上观察到的 imagefs.available、imagefs.inodesFree、nodefs.available 和 nodefs.inodesFree(仅限 Linux)检测磁盘压力。然后将观察到的值与可以设置在 kubelet 上的相应阈值进行比较,以确定是否应添加/删除 Node 条件和 taint。
node.kubernetes.io/network-unavailable
类型:Taint
示例:node.kubernetes.io/network-unavailable: "NoSchedule"
用于:Node
当使用的云提供商指示需要额外的网络配置时,kubelet 最初会设置此 taint。只有在云上的路由配置正确后,云提供商才会删除 taint。
node.kubernetes.io/pid-pressure
类型:Taint
示例:node.kubernetes.io/pid-pressure: "NoSchedule"
用于:Node
kubelet 检查 /proc/sys/kernel/pid_max 的 D 值以及 Kubernetes 在节点上消耗的 PID 数量,以获取称为 pid.available 指标的可用 PID 数量。然后将该指标与可以设置在 kubelet 上的相应阈值进行比较,以确定是否应添加/删除节点条件和 taint。
node.kubernetes.io/out-of-service
类型:Taint
示例:node.kubernetes.io/out-of-service:NoExecute
用于:Node
用户可以手动将 taint 添加到 Node,将其标记为不可用。如果 Node 标记为不可用且具有此 taint,则如果 Node 上没有匹配的 tolerations,则 Node 上的 Pod 将被强制删除,并且在 Node 上终止的 Pod 的卷分离操作将立即发生。这允许 Node 上的 Pod 在不同的 Node 上快速恢复。
注意
有关何时以及如何使用此 taint的更多详细信息,请参阅 非优雅节点关闭。node.cloudprovider.kubernetes.io/uninitialized
类型:Taint
示例:node.cloudprovider.kubernetes.io/uninitialized: "NoSchedule"
用于:Node
当 kubelet 使用“external”云提供商启动时,会将此 taint 设置在 Node 上,直到来自云控制器管理器的控制器初始化此 Node,然后删除 taint。
node.cloudprovider.kubernetes.io/shutdown
类型:Taint
示例:node.cloudprovider.kubernetes.io/shutdown: "NoSchedule"
用于:Node
如果 Node 处于云提供商指定的关闭状态,则 Node 将相应地被 taint,并具有 node.cloudprovider.kubernetes.io/shutdown 和 taint 效果 NoSchedule。
feature.node.kubernetes.io/*
类型:Label
示例:feature.node.kubernetes.io/network-sriov.capable: "true"
用于:Node
这些标签由节点特性发现 (NFD) 组件用于在节点上宣传特性。所有内置标签都使用 feature.node.kubernetes.io 标签命名空间,格式为 feature.node.kubernetes.io/<feature-name>: "true"。NFD 有许多扩展点,用于创建供应商和应用程序特定的标签。有关详细信息,请参阅 定制指南。
nfd.node.kubernetes.io/master.version
类型:Annotation
示例:nfd.node.kubernetes.io/master.version: "v0.6.0"
用于:Node
对于调度了节点特性发现 (NFD) master 的节点,此注释记录 NFD master 的版本。仅用于信息参考。
nfd.node.kubernetes.io/worker.version
类型:Annotation
示例:nfd.node.kubernetes.io/worker.version: "v0.4.0"
适用对象:节点
此注释记录节点特性发现的 worker 的版本(如果节点上正在运行)。仅用于信息参考。
nfd.node.kubernetes.io/feature-labels
类型:Annotation
示例:nfd.node.kubernetes.io/feature-labels: "cpu-cpuid.ADX,cpu-cpuid.AESNI,cpu-hardware_multithreading,kernel-version.full"
适用对象:节点
此注释记录由 节点特性发现 (NFD) 管理的节点特性标签的逗号分隔列表。NFD 将此用于内部机制。您不应自行编辑此注释。
nfd.node.kubernetes.io/extended-resources
类型:Annotation
示例:nfd.node.kubernetes.io/extended-resources: "accelerator.acme.example/q500,example.com/coprocessor-fx5"
适用对象:节点
此注释记录由 节点特性发现 (NFD) 管理的 扩展资源 的逗号分隔列表。NFD 将此用于内部机制。您不应自行编辑此注释。
nfd.node.kubernetes.io/node-name
类型:Label
示例: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-s3-bucket-name: 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-s3-bucket-prefix: "/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 服务,并且您使用 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 服务相关,其中负载均衡器是 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 load balancer controller,那么 AWS load balancer controller 会将该负载均衡器的名称设置为您为此注解设置的值。
请参阅 AWS load balancer controller 文档中的 annotations。
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 load balancer controller 使用此注解来指定要附加到 AWS 负载均衡器的逗号分隔的安全组列表。支持安全组的名称和 ID,其中名称匹配 Name 标签,而不是 groupName 属性。
当此注解添加到 Service 时,负载均衡器控制器会将注解引用的安全组附加到负载均衡器。如果您省略此注解,AWS load balancer controller 会自动创建一个新的安全组并将其附加到负载均衡器。
说明
Kubernetes v1.27 及更高版本不会直接设置或读取此注解。但是,AWS load balancer controller(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 load balancer controller 使用此注解。您应该为 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 集成将部署一个经典的 Elastic Load Balancer。除非另有说明,否则没有注解的情况是默认行为。
当您将此注解设置为 external 的 type: LoadBalancer 的 Service,并且您的集群具有可用的 AWS Load Balancer controller 部署时,AWS Load Balancer controller 会尝试基于 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
类型:Label
示例:pod-security.kubernetes.io/enforce: "baseline"
用于:Namespace
值必须是 privileged、baseline 或 restricted,它们对应于 Pod Security Standard 级别。具体来说,enforce 标签禁止在标记的命名空间中创建不符合指示级别要求的任何 Pod。
有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/enforce-version
类型:Label
示例:pod-security.kubernetes.io/enforce-version: "1.35"
用于:Namespace
值必须是 latest 或有效的 Kubernetes 版本,格式为 v<major>.<minor>。这决定了在验证 Pod 时应用的 Pod Security Standard 策略的版本。
有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/audit
类型:Label
示例:pod-security.kubernetes.io/audit: "baseline"
用于:Namespace
值必须是 privileged、baseline 或 restricted,它们对应于 Pod Security Standard 级别。具体来说,audit 标签不会阻止在标记的命名空间中创建不符合指示级别要求的 Pod,但会将此注解添加到 Pod。
有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/audit-version
类型:Label
示例:pod-security.kubernetes.io/audit-version: "1.35"
用于:Namespace
值必须是 latest 或有效的 Kubernetes 版本,格式为 v<major>.<minor>。这决定了在验证 Pod 时应用的 Pod Security Standard 策略的版本。
有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/warn
类型:Label
示例:pod-security.kubernetes.io/warn: "baseline"
用于:Namespace
值必须是 privileged、baseline 或 restricted,它们对应于 Pod Security Standard 级别。具体来说,warn 标签不会阻止在标记的命名空间中创建不符合指示级别要求的 Pod,但会在这样做之后向用户返回警告。请注意,在创建或更新包含 Pod 模板的对象(例如 Deployments、Jobs、StatefulSets 等)时,也会显示警告。
有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性。
pod-security.kubernetes.io/warn-version
类型:Label
示例:pod-security.kubernetes.io/warn-version: "1.35"
用于:Namespace
值必须是 latest 或有效的 Kubernetes 版本,格式为 v<major>.<minor>。这决定了在验证提交的 Pod 时应用的 Pod Security Standard 策略的版本。请注意,在创建或更新包含 Pod 模板的对象(例如 Deployments、Jobs、StatefulSets 等)时,也会显示警告。
有关更多信息,请参阅 在命名空间级别强制执行 Pod 安全性。
rbac.authorization.kubernetes.io/autoupdate
类型:Annotation
示例:rbac.authorization.kubernetes.io/autoupdate: "false"
用于:ClusterRole、ClusterRoleBinding、Role、RoleBinding
当此注解设置为 API 服务器创建的默认 RBAC 对象的 "true" 时,它们会在服务器启动时自动更新,以添加缺少的权限和主体(额外的权限和主体保留不变)。要防止自动更新特定的角色或角色绑定,请将此注解设置为 "false"。如果您创建自己的 RBAC 对象并将此注解设置为 "false",则 kubectl auth reconcile(允许协调清单中的任意 RBAC 对象)会尊重此注解,并且不会自动添加缺少的权限和主体。
kubernetes.io/psp (已弃用)
类型:Annotation
示例:kubernetes.io/psp: restricted
用于:Pod
此注解仅在您使用 PodSecurityPolicy 对象时相关。Kubernetes v1.35 不支持 PodSecurityPolicy API。
当 PodSecurityPolicy 准入控制器允许 Pod 时,准入控制器会修改 Pod 以具有此注解。该注解的值是用于验证的 PodSecurityPolicy 的名称。
seccomp.security.alpha.kubernetes.io/pod (功能不正常)
类型:Annotation
用于:Pod
Kubernetes 在 v1.25 之前允许您使用此注解配置 seccomp 行为。请参阅 使用 seccomp 限制容器的系统调用,了解指定 Pod 的 seccomp 限制的支持方法。
container.seccomp.security.alpha.kubernetes.io/[NAME] (功能不正常)
类型:Annotation
用于:Pod
Kubernetes 在 v1.25 之前允许您使用此注解配置 seccomp 行为。请参阅 使用 seccomp 限制容器的系统调用,了解指定 Pod 的 seccomp 限制的支持方法。
snapshot.storage.kubernetes.io/allow-volume-mode-change
类型:Annotation
示例:snapshot.storage.kubernetes.io/allow-volume-mode-change: "true"
用于:VolumeSnapshotContent
值可以是 true 或 false。这决定了用户是否可以在从 VolumeSnapshot 创建 PersistentVolumeClaim 时修改源卷的模式。
请参阅 转换快照的卷模式 和 Kubernetes CSI 开发人员文档 以获取更多信息。
scheduler.alpha.kubernetes.io/critical-pod (已弃用)
类型:Annotation
示例: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 控制器会将此标签(以及具有相同 key 的注释)设置在 JobSet 的子 Job 和 Pod 上。 该值为命名空间 Job 名称的 SHA256 哈希值。
alpha.jobset.sigs.k8s.io/exclusive-topology
类型:Annotation
示例:alpha.jobset.sigs.k8s.io/exclusive-topology: "zone"
用于:JobSets, Jobs
您可以将此标签/注释设置为 JobSet,以确保每个拓扑组的独占 Job 放置。 您也可以在复制作业模板上定义此标签或注释。 请阅读 JobSet 的文档以了解更多信息。
alpha.jobset.sigs.k8s.io/node-selector
类型:Annotation
示例:alpha.jobset.sigs.k8s.io/node-selector: "true"
用于:Jobs, Pods
可以将此标签/注释应用于 JobSet。 设置后,JobSet 控制器会通过添加节点选择器和容忍度来修改 Job 及其相应的 Pod。 这可确保每个拓扑域的独占作业放置,将这些 Pod 的调度限制到基于策略的特定节点。
alpha.jobset.sigs.k8s.io/namespaced-job
类型:Label
示例:alpha.jobset.sigs.k8s.io/namespaced-job: "default_myjobset-replicatedjob-0"
适用对象:节点
此标签由节点手动或自动设置(例如,集群自动缩放器)。 当 alpha.jobset.sigs.k8s.io/node-selector 设置为 "true" 时,JobSet 控制器会将节点选择器添加到此节点标签(以及之前讨论的污点 alpha.jobset.sigs.k8s.io/no-schedule 的容忍度)。
alpha.jobset.sigs.k8s.io/no-schedule
类型:Taint
示例:alpha.jobset.sigs.k8s.io/no-schedule: "NoSchedule"
适用对象:节点
此污点由节点手动或自动设置(例如,集群自动缩放器)。 当 alpha.jobset.sigs.k8s.io/node-selector 设置为 "true" 时,JobSet 控制器会将容忍度添加到此节点污点(以及之前讨论的标签 alpha.jobset.sigs.k8s.io/namespaced-job 的节点选择器)。
jobset.sigs.k8s.io/coordinator
类型:注释、标签
示例:jobset.sigs.k8s.io/coordinator: "myjobset-workers-0-0.headless-svc"
用于:Jobs, Pods
如果 JobSet 规范定义了 .spec.coordinator 字段,则此注释/标签用于在 Job 和 Pod 上存储一个稳定的网络端点,协调器 Pod 可以在该端点上被访问。
用于审计的注释
authorization.k8s.io/decisionauthorization.k8s.io/reasoninsecure-sha1.invalid-cert.kubernetes.io/$hostnamemissing-san.invalid-cert.kubernetes.io/$hostnamepod-security.kubernetes.io/audit-violationspod-security.kubernetes.io/enforce-policypod-security.kubernetes.io/exemptvalidation.policy.admission.k8s.io/validation_failure
有关更多详细信息,请参阅 审计注释。
kubeadm
kubeadm.alpha.kubernetes.io/cri-socket (已弃用)
类型:Annotation
示例:kubeadm.alpha.kubernetes.io/cri-socket: unix:///run/containerd/container.sock
用于:Node
说明
从 v1.34 版本开始,此注释已被弃用,kubeadm 将不再主动设置和使用它。kubeadm.kubernetes.io/etcd.advertise-client-urls
类型:Annotation
示例: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
类型:Annotation
示例: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
类型:Annotation
示例:kubeadm.kubernetes.io/component-config.hash: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae
用于:ConfigMap
kubeadm 放置在用于配置组件的 ConfigMap 上的注释。 它包含一个哈希值(SHA-256),用于确定用户是否已应用与 kubeadm 默认设置不同的设置,用于特定组件。
node-role.kubernetes.io/control-plane
类型:Label
用于:Node
一个标记标签,用于指示节点用于运行控制平面组件。 kubeadm 工具会将此标签应用于其管理的控制平面节点。 其他集群管理工具通常也会设置此污点。
您可以将控制平面节点标记为此标签,以便更容易地仅将 Pod 调度到这些节点,或者避免在控制平面上运行 Pod。 如果设置了此标签,EndpointSlice 控制器 在计算拓扑感知提示时会忽略该节点。
node-role.kubernetes.io/*
类型:Label
示例:node-role.kubernetes.io/gpu: gpu
用于:Node
当您想要标记节点角色时,可以将此可选标签应用于节点。 节点角色(标签 key 中斜杠后的文本)可以设置,只要整体 key 遵循 语法 规则即可。
Kubernetes 定义了一个特定的节点角色,即 control-plane。 您可以使用 node-role.kubernetes.io/control-plane 标记该节点角色。
node-role.kubernetes.io/control-plane
类型:Taint
示例:node-role.kubernetes.io/control-plane:NoSchedule
用于:Node
kubeadm 应用于控制平面节点上的污点,以限制放置 Pod 并仅允许特定 Pod 调度到它们。
如果应用此污点,控制平面节点仅允许关键工作负载调度到它们。 您可以使用以下命令手动删除此污点:
kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-
node-role.kubernetes.io/master (已弃用)
类型:Taint
用于:Node
示例:node-role.kubernetes.io/master:NoSchedule
kubeadm 以前应用于控制平面节点上的污点,以仅允许关键工作负载调度到它们。 已被 node-role.kubernetes.io/control-plane 污点取代。 kubeadm 不再设置或使用此已弃用的污点。
resource.kubernetes.io/admin-access {resource-kubernetes-io-admin-access}
类型:Label
示例:resource.kubernetes.io/admin-access: "true"
用于:Namespace
用于在命名空间内授予对某些 resource.k8s.io API 类型的管理访问权限。 当此标签在具有值 "true"(区分大小写)的命名空间上设置时,它允许在任何命名空间 resource.k8s.io API 类型中使用 adminAccess: true。 当前,此权限适用于 ResourceClaim 和 ResourceClaimTemplate 对象。
有关更多信息,请参阅 动态资源分配管理访问权限。