節點集區簡介
節點集區是叢集中具有相同配置的一組節點。通常,當 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: false 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
您可以在下列任一元件上指定自訂節點集區:
istiomartsynchronizerruntimecassandraudcalogger
GKE 節點集區設定
在 GKE 中,節點集區必須有您在建立集區時提供的專屬名稱,且 GKE 會自動為每個節點加上下列標籤:
cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME
只要建立名為 apigee-data 和 apigee-runtime 的節點集區,就不需要進一步設定。如要使用自訂節點名稱,請參閱「使用自訂節點集區名稱」。
Anthos 節點集區設定
Apigee Hybrid 目前僅支援 Anthos 1.1.1。這個版本的 Anthos 不支援節點集區功能,因此您必須手動為工作站節點加上標籤,如下所述。混合式叢集啟動並執行後,請完成下列步驟:
- 執行下列指令,取得叢集中的工作站節點清單:
kubectl -n apigee get nodes
輸出範例:
NAME STATUS ROLES AGE VERSION apigee-092d639a-4hqt Ready <none> 7d v1.14.6-gke.2 apigee-092d639a-ffd0 Ready <none> 7d v1.14.6-gke.2 apigee-109b55fc-5tjf Ready <none> 7d v1.14.6-gke.2 apigee-c2a9203a-8h27 Ready <none> 7d v1.14.6-gke.2 apigee-c70aedae-t366 Ready <none> 7d v1.14.6-gke.2 apigee-d349e89b-hv2b Ready <none> 7d v1.14.6-gke.2
- 為每個節點加上標籤,區分執行階段節點和資料節點。
使用這項指令標記節點:
kubectl label node NODE_NAME KEY=VALUE
例如:
$ kubectl label node apigee-092d639a-4hqt apigee.com/apigee-nodepool=apigee-runtime $ kubectl label node apigee-092d639a-ffd0 apigee.com/apigee-nodepool=apigee-runtime $ kubectl label node apigee-109b55fc-5tjf apigee.com/apigee-nodepool=apigee-runtime $ kubectl label node apigee-c2a9203a-8h27 apigee.com/apigee-nodepool=apigee-data $ kubectl label node apigee-c70aedae-t366 apigee.com/apigee-nodepool=apigee-data $ kubectl label node apigee-d349e89b-hv2b apigee.com/apigee-nodepool=apigee-data
在 Anthos GKE 上覆寫特定元件的節點集區
您也可以在 Anthos GKE 安裝作業中,針對個別元件層級覆寫節點集區設定。舉例來說,下列設定會將值 apigee-custom 指派給 runtime 元件的節點集區:
runtime: nodeSelector: key: apigee.com/apigee-nodepool value: apigee-custom
您可以在下列任一元件上指定自訂節點集區:
istiomartsynchronizerruntimecassandraudcalogger