本頁說明如何套用自訂容許度和標籤,在 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
。這項設定表示只有當 taint 的鍵和值與workload=hpc
完全相同時,Pod 才會容許該 taint。 - 如果是
Exists
運算子:請使用key:operator:effect
格式,例如workload:Exists:NoSchedule
。這項設定表示 Pod 會容忍節點上具有workload
鍵的任何 taint,無論值為何。 - 在任何節點上排定時間:使用
:operator:effect
格式,例如:Exists:NoSchedule
。這項設定表示 Pod 容許節點上具有NoSchedule
效果的任何 taint,並忽略 taint 的鍵或值。
如需可使用的運算子和效果清單,請參閱 Kubernetes 說明文件中的「Taints and Tolerations」。
- 如果是
新增自訂標籤
如要指定自訂標籤,請將 --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=""
。