本页介绍了如何通过应用自定义容忍和标签来自定义 GKE 关联集群中 Google 拥有的系统组件。自定义这些组件后,您可以更精确地管理这些组件在环境中的运行位置和方式。
概览
将集群关联到 Google Cloud时,默认情况下,Google 拥有的系统组件不包含可自定义的字段,例如容忍。因此,您可能会遇到一些问题,例如 Pod 无法在可用节点上调度,导致整个集群的连接和功能受到影响。此外,您可能还需要控制组件在特定节点上的放置和管理,包括能够出于组织和运营目的应用自定义标签。
自定义系统组件可以解决这些问题,让您更好、更灵活地控制这些组件在集群中的运行方式。您可以对 Google 拥有的系统组件应用自定义容忍和标签:
借助容忍,Google 的组件可以调度到具有特定 Kubernetes 污点的节点上,从而让您强制执行工作负载隔离或使用专用节点池。自定义容忍直接解决了不可修改的污点阻止正确放置组件的问题。
借助标签,您可以根据自己的运营标准,灵活地对 Google 的系统组件进行分类和标识。借助自定义标签,您可以更好地与现有的监控、日志记录和政策执行工具集成。
限制和局限
有以下限制和局限:
- 您只能在注册集群时添加自定义容忍和标签。
- 您可以向集群添加最多 10 个自定义容忍和 10 个自定义标签。
您无法使用以下虚拟机:
name
component
app
- 包含
k8s.io
或kubernetes.io
的任何标签,因为它们属于 Kubernetes 中的预留标签 - 包含
google
的任何标签 - 包含
gke.io
的任何标签
添加自定义容忍
Google 拥有的系统组件 Pod 始终包含以下容忍:
- key: components.gke.io/gke-managed-components
operator: Exists
如需指定自定义容忍,请将 --system-component-tolerations
标志添加到 gcloud container attached clusters register
命令:
gcloud container attached clusters register CLUSTER_NAME \
--location=GOOGLE_CLOUD_REGION \
...
--system-component-tolerations=COMPONENT_TOLERATION \
替换以下内容:
- CLUSTER_NAME:您的集群的名称。
- GOOGLE_CLOUD_REGION:要从中管理集群的 Google Cloud 区域
COMPONENT_TOLERATION:要添加的容忍的逗号分隔列表。您可以按以下格式提供键、值、运算符和效果:
Equal
运算符:请使用key=value:operator:effect
格式,例如workload=hpc:Equal:NoSchedule
。此设置意味着,仅当污点与workload=hpc
的键和值完全相同时,Pod 才会容忍该污点。Exists
运算符:请使用key:operator:effect
格式,例如workload:Exists:NoSchedule
。此设置意味着 Pod 可容忍节点上具有workload
键的任何污点,而不管值如何。- 在任何节点上进行调度:使用
:operator:effect
格式,例如:Exists:NoSchedule
。此设置意味着 Pod 可以容忍节点上具有NoSchedule
效果的任何污点,并忽略污点的键或值。
如需查看可使用的运算符和效果列表,请参阅 Kubernetes 文档中的污点和容忍。
添加自定义标签
如需指定自定义标签,请将 --system-component-labels
标志添加到 gcloud container attached clusters register
命令:
gcloud container attached clusters register CLUSTER_NAME \
--location=GOOGLE_CLOUD_REGION \
...
--system-component-labels=COMPONENT_LABEL \
替换以下内容:
- CLUSTER_NAME:您的集群的名称。
- GOOGLE_CLOUD_REGION:要从中管理集群的 Google Cloud 区域
- COMPONENT_LABEL:要添加的一个或多个标签的逗号分隔列表。您以
key=value
格式提供标签和值。例如env=production,region=us-east-1
。虽然每个标签都必须有键,但与该键关联的值可以为空。例如backend=""
。
后续步骤
- 请在 Kubernetes 文档中详细了解污点和容忍。
- 了解如何关联符合 CNCF 要求的集群。