From 8b961c44478365bf8463b0b23a4cc00bbfd6c221 Mon Sep 17 00:00:00 2001 From: chentanjun <2799194073@qq.com> Date: Tue, 7 Jan 2020 09:10:19 +0800 Subject: [PATCH] update zh-trans content/zh/docs/reference/kubernetes-api/labels-annotations-taints.md (#18449) --- .../labels-annotations-taints.md | 268 ++++++++++++++---- 1 file changed, 220 insertions(+), 48 deletions(-) diff --git a/content/zh/docs/reference/kubernetes-api/labels-annotations-taints.md b/content/zh/docs/reference/kubernetes-api/labels-annotations-taints.md index 76a883ba3c..6e586da9c5 100644 --- a/content/zh/docs/reference/kubernetes-api/labels-annotations-taints.md +++ b/content/zh/docs/reference/kubernetes-api/labels-annotations-taints.md @@ -1,103 +1,275 @@ --- title: 知名标签(Label)、注解(Annotation)和 Taints +content_template: templates/concept +weight: 60 --- -Kubernetes 保留了 kubernetes.io 名字空间下的所有标签和注解。 本文描述了知名的 -kubernetes.io 标签和注解。 +{{% capture overview %}} -本文既作为这些标签和注解值的参考,也就这些标签和注解的赋值进行了说明。 + +This document serves both as a reference to the values and as a coordination point for assigning values. +--> -- [beta.kubernetes.io/arch](#betakubernetesioarch) -- [beta.kubernetes.io/os](#betakubernetesioos) -- [kubernetes.io/hostname](#kubernetesiohostname) -- [beta.kubernetes.io/instance-type](#betakubernetesioinstance-type) -- [failure-domain.beta.kubernetes.io/region](#failure-domainbetakubernetesioregion) -- [failure-domain.beta.kubernetes.io/zone](#failure-domainbetakubernetesiozone) +Kubernetes 保留了 kubernetes.io 命名空间下的所有标签和注解。 - +本文既作为这些标签和注解的参考,也就这些标签和注解的赋值进行了说明。 +{{% /capture %}} -## beta.kubernetes.io/arch +{{% capture body %}} -示例:`beta.kubernetes.io/arch=amd64` +## kubernetes.io/arch -用于:节点 + -示例:`beta.kubernetes.io/os=linux` +示例:`kubernetes.io/arch=amd64` -用于:节点 +用于:Node -Kubelet 用该 Go 中定义的 `runtime.GOOS` 值来填充该标签。 这在集群中存在不同操作系统的节点时很有用(尽管当前 Kubernetes 只支持 Linux 操作系统)。 +Kubelet 用 Go 中定义的 `runtime.GOARCH` 值来填充该标签。这在诸如混用 arm 和 x86 节点的情况下很有用。 + +## kubernetes.io/os + + + +示例:`kubernetes.io/os=linux` + +用于:Node + +Kubelet 用该 Go 中定义的 `runtime.GOOS` 值来填充该标签。这在集群中存在不同操作系统的节点时很有用(例如:混合 Linux 和 Windows 操作系统的节点)。 + + +## beta.kubernetes.io/arch (已弃用) + + +该标签已被弃用。请使用 `kubernetes.io/arch`。 + + +## beta.kubernetes.io/os (已弃用) + + +该标签已被弃用。请使用 `kubernetes.io/arch`。 ## kubernetes.io/hostname + + 示例:`kubernetes.io/hostname=ip-172-20-114-199.ec2.internal` -用于:节点 +用于:Node -Kubelet 用 hostname 值来填充该标签。 注意:可以通过向 kubelet 传入 `--hostname-override` +Kubelet 用 hostname 值来填充该标签。注意:可以通过向 `kubelet` 传入 `--hostname-override` 参数对 “真正的” hostname 进行修改。 -## beta.kubernetes.io/instance-type + +## beta.kubernetes.io/instance-type (已弃用) -示例:`beta.kubernetes.io/instance-type=m3.medium` +{{< note >}} + +从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用[node.kubernetes.io/instance-type](#nodekubernetesioinstance-type)。 +{{< /note >}} -用于:节点 +## node.kubernetes.io/instance-type {#nodekubernetesioinstance-type} -Kubelet 用 `cloudprovider` 中定义的实例类型来填充该标签。 未使用 `cloudprovider` 时不会设置该标签。 -该标签在想要将某些负载定向到特定实例类型的节点上时会很有用,但通常用户更希望依赖 Kubernetes 调度器来执行基于资源的调度,所以用户应该致力于基于属性而不是实例类型来进行调度(例如:需要一个 CPU,而不是 `g2.2xlarge`)。 + -参考 [failure-domain.beta.kubernetes.io/zone](#failure-domainbetakubernetesiozone). +示例:`node.kubernetes.io/instance-type=m3.medium` -## failure-domain.beta.kubernetes.io/zone +用于:Node +Kubelet 用 `cloudprovider` 中定义的实例类型来填充该标签。未使用 `cloudprovider` 时不会设置该标签。该标签在想要将某些负载定向到特定实例类型的节点上时会很有用,但通常用户更希望依赖 Kubernetes 调度器来执行基于资源的调度,所以用户应该致力于基于属性而不是实例类型来进行调度(例如:需要一个 GPU,而不是 `g2.2xlarge`)。 + +## failure-domain.beta.kubernetes.io/region (已弃用) {#failure-domainbetakubernetesioregion} + + +参考 [failure-domain.beta.kubernetes.io/zone](#failure-domainbetakubernetesiozone)。 + +{{< note >}} + +从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用[topology.kubernetes.io/region](#topologykubernetesioregion)。 +{{< /note >}} + +## failure-domain.beta.kubernetes.io/zone (已弃用) {#failure-domainbetakubernetesiozone} + + 示例: `failure-domain.beta.kubernetes.io/region=us-east-1` `failure-domain.beta.kubernetes.io/zone=us-east-1c` -用于:节点、PersistentVolume +用于:Node、PersistentVolume -用于节点: Kubelet 用 `cloudprovider` 中定义的区域(zone)信息来填充该标签。 未使用 `cloudprovider` -时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 +对于 Node: Kubelet 用 `cloudprovider` 中定义的区域(zone)信息来填充该标签。未使用 `cloudprovider` 时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 + 用于 PersistentVolume:在 GCE 和 AWS 中,`PersistentVolumeLabel` 准入控制器会自动添加区域标签。 -在单区的集群中,Kubernetes 会自动将同一副本控制器或服务下的 pod 分散到不同的节点上 (以降低故障的影响)。 -在多区的集群中,这种分散的行为扩展到跨区的层面 (以降低区域故障的影响)。 跨区分散通过 SelectorSpreadPriority -来实现。 + -这是一种尽力而为(best-effort)的处置方式, 如果集群中的区域是异构的 (例如:不同区域之间的节点数量、 -节点类型或 pod 资源需求不同),可能使得 pod 在各区域间无法均匀分布。 如有需要,用户可以使用同质的区域 -(节点数量和类型相同) 来减小 pod 分布不均的可能性。 +在单区的集群中,Kubernetes 会自动将同一副本控制器或服务下的 pod 分散到不同的节点上 (以降低故障的影响)。在多区的集群中,这种分散的行为扩展到跨区的层面 (以降低区域故障的影响)。跨区分散通过 _SelectorSpreadPriority_ 来实现。 -由于卷不能跨区域挂载(attach),调度器 (通过 VolumeZonePredicate 断言) 也会保证需要特定卷的 pod + +_SelectorSpreadPriority_ 是一种尽力而为(best-effort)的处理方式,如果集群中的区域是异构的 (例如:不同区域之间的节点数量、节点类型或 pod 资源需求不同),可能使得 pod 在各区域间无法均匀分布。如有需要,用户可以使用同质的区域(节点数量和类型相同) 来减小 pod 分布不均的可能性。 + + +由于卷不能跨区域挂载(attach),调度器 (通过 _VolumeZonePredicate_ 预选) 也会保证需要特定卷的 pod 被调度到卷所在的区域中。 + +区域和地域(region)的实际值无关紧要,两者的层次含义也没有严格的定义。最终期望是,除非整个地域故障, +否则某一区域节点的故障不应该影响到其他区域的节点。例如,通常区域间应该避免共用同一个网络交换机。 +具体的规划取决于特定的基础设备 - three-rack 设备所选择的设置与多数据中心截然不同。 -区域和地域(region)的实际值无关紧要,两者的层次含义也没有严格的定义。 最终期望是,除非整个地域故障, -否则某一区域节点的故障不应该影响到其他区域的节点。 例如,通常区域间应该避免共用同一个网络交换机。 -具体的规划取决于特定的基础设备—— three-rack 设备所选择的设置与多数据中心截然不同。 - + 如果 `PersistentVolumeLabel` 准入控制器不支持自动为 PersistentVolume 打标签,且用户希望防止 pod -跨区域进行卷的挂载,应考虑手动打标签 (或对 `PersistentVolumeLabel` 增加支持)。 如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 +跨区域进行卷的挂载,应考虑手动打标签 (或对 `PersistentVolumeLabel` 增加支持)。如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 +{{< note >}} + +从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用[topology.kubernetes.io/zone](#topologykubernetesiozone)。 +{{< /note >}} +## topology.kubernetes.io/region {#topologykubernetesioregion} + +参考 [topology.kubernetes.io/zone](#topologykubernetesiozone)。 +## topology.kubernetes.io/zone {#topologykubernetesiozone} + -[![分析](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/api-reference/labels-annotations-taints.md?pixel)]() - +`topology.kubernetes.io/region=us-east-1` + +`topology.kubernetes.io/zone=us-east-1c` + +Used on: Node, PersistentVolume + +On the Node: The `kubelet` populates this with the zone information as defined by the `cloudprovider`. +This will be set only if you are using a `cloudprovider`. However, you should consider setting this +on the nodes if it makes sense in your topology. +--> +示例: + +`failure-domain.beta.kubernetes.io/region=us-east-1` + +`failure-domain.beta.kubernetes.io/zone=us-east-1c` + +用于:Node、PersistentVolume + +对于 Node: Kubelet 用 `cloudprovider` 中定义的区域(zone)信息来填充该标签。未使用 `cloudprovider` 时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 + + +用于 PersistentVolume:在 GCE 和 AWS 中,`PersistentVolumeLabel` 准入控制器会自动添加区域标签。 + + +在单区的集群中,Kubernetes 会自动将同一副本控制器或服务下的 pod 分散到不同的节点上 (以降低故障的影响)。在多区的集群中,这种分散的行为扩展到跨区的层面 (以降低区域故障的影响)。跨区分散通过 _SelectorSpreadPriority_ 来实现。 + + +_SelectorSpreadPriority_ 是一种尽力而为(best-effort)的处理方式,如果集群中的区域是异构的 +(例如:不同区域之间的节点数量、节点类型或 pod 资源需求不同),可能使得 pod 在各区域间无法均匀分布。 +如有需要,用户可以使用同质的区域(节点数量和类型相同) 来减小 pod 分布不均的可能性。 + + +由于卷不能跨区域挂载(attach),调度器 (通过 _VolumeZonePredicate_ 预选) 也会保证需要特定卷的 pod 被调度到卷所在的区域中。 + + +区域和地域(region)的实际值无关紧要,两者的层次含义也没有严格的定义。最终期望是,除非整个地域故障, +否则某一区域节点的故障不应该影响到其他区域的节点。例如,通常区域间应该避免共用同一个网络交换机。 +具体的规划取决于特定的基础设备 - three-rack 设备所选择的设置与多数据中心截然不同。 + + +如果 `PersistentVolumeLabel` 准入控制器不支持自动为 PersistentVolume 打标签,且用户希望防止 pod 跨区域进行卷的挂载, +应考虑手动打标签 (或对 `PersistentVolumeLabel` 增加支持)。如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 + +{{% /capture %}}