節點集區簡介
節點集區是叢集中具有相同配置的一組節點。通常,當 Pod 的資源需求不同時,您會定義不同的節點集區。舉例來說,apigee-cassandra
Pod 需要永久儲存空間,其他 Apigee Hybrid Pod 則不需要。
本主題說明如何為混合式安裝設定專屬節點集區。
使用預設 nodeSelectors
最佳做法是設定兩個專屬節點集區:一個用於 Cassandra Pod,另一個用於所有其他執行階段 Pod。使用預設 nodeSelector 設定時,安裝程式會將 Cassandra Pod 指派給名為 apigee-data
的有狀態節點集區,並將所有其他 Pod 指派給名為 apigee-runtime
的無狀態節點集區。您只需要建立具有這些名稱的節點集區,Apigee Hybrid 就會為您處理 Pod 排程詳細資料:
預設節點集區名稱 | 說明 |
---|---|
apigee-data |
有狀態節點集區。 |
apigee-runtime |
無狀態節點集區。 |
以下是預設的 nodeSelector
設定。apigeeData
屬性會指定 Cassandra Pod 的節點集區。apigeeRuntime
會為所有其他 Pod 指定節點集區。您可以在覆寫檔案中覆寫這些預設設定,詳情請參閱本主題稍後的說明:
nodeSelector: requiredForScheduling: true apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "apigee-runtime" apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data"
如要確保 Pod 排程在正確的節點上,請建立兩個節點集區,並命名為 apigee-data
和 apigee-runtime
。
requiredForScheduling 屬性
nodeSelector
設定區段有一個名為 requiredForScheduling
的屬性:
nodeSelector: requiredForScheduling: false apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "apigee-runtime" apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data"
如果設為 false
,系統就會排定基礎 Pod,無論節點集區是否已定義必要名稱。也就是說,如果您忘記建立節點集區,或是意外將節點集區命名為 apigee-runtime
或 apigee-data
以外的名稱,混合式執行階段安裝作業仍會成功。Kubernetes 會決定要在哪裡執行 Pod。
如果您將 requiredForScheduling
設為 true
(預設值),除非有符合所設定 nodeSelector
鍵和值的節點集區,否則安裝作業會失敗。
使用自訂節點集區名稱
如不想使用預設名稱的節點集區,可以建立自訂名稱的節點集區,並在 nodeSelector
節中指定這些名稱。舉例來說,下列設定會將 Cassandra Pod 指派給名為 my-cassandra-pool
的集區,並將所有其他 Pod 指派給名為 my-runtime-pool
的集區:
nodeSelector: requiredForScheduling: false apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "my-runtime-pool" apigeeData: key: "cloud.google.com/gke-nodepool" value: "my-cassandra-pool"
在 GKE 上覆寫特定元件的節點集區
您也可以在個別元件層級覆寫節點集區設定。舉例來說,下列設定會將值 apigee-custom
指派給 runtime
元件的節點集區:
runtime: nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-custom
您可以在下列任一元件上指定自訂節點集區:
istio
mart
synchronizer
runtime
cassandra
udca
logger
GKE 和 Google Distributed Cloud 節點集區設定
在 GKE 和 Google Distributed Cloud (GDC) 平台上,節點集區必須具有您在建立集區時提供的專屬名稱,且 GKE/GDC 會自動為每個節點加上下列標籤:
cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME
只要建立名為 apigee-data
和 apigee-runtime
的節點集區,就不需要進一步設定。如要使用自訂節點名稱,請參閱「使用自訂節點集區名稱」。
其他 Kubernetes 平台上的節點集區設定。
如要瞭解如何標記及管理節點集區,請參閱 Kubernetes 平台說明文件。
根據預設,節點集區會自動標記工作站節點,但您也可以選擇手動標記工作站節點,步驟如下:
- 執行下列指令,取得叢集中的工作站節點清單:
kubectl -n APIGEE_NAMESPACE get nodes
如果您使用自訂節點集區標籤,請確保每個鍵/值組合都是唯一的。例如:
nodeSelector: requiredForScheduling: true apigeeRuntime: key: "pool1-key" value: "pool1-label" apigeeData: key: "pool2-key" value: "pool2-label"
覆寫特定元件的節點集區
您也可以在個別元件層級覆寫節點集區設定。舉例來說,下列設定會將值為
apigee-custom
的節點集區指派給runtime
元件:runtime: nodeSelector: key: apigee.com/apigee-nodepool value: apigee-custom
您可以在下列任一元件上指定自訂節點集區:
apigeeingressgateway
cassandra
logger
mart
metrics
runtime
synchronizer
udca