關於節點集區
節點集區是叢集中具有相同配置的一組節點。通常,如果有資源需求不同的 pod,您就需要定義不同的節點集區。舉例來說,apigee-cassandra
容器需要持續性儲存空間,但其他 Apigee 混合型容器則不需要。
本主題將說明如何為混合安裝設定專用節點叢集。
使用預設的 nodeSelectors
最佳做法是設定兩個專用節點叢集:一個用於 Cassandra 容器,另一個用於所有其他執行階段容器。使用預設的 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 節點集區設定
在 GKE 中,節點集區必須具有您在建立集區時提供的專屬名稱,GKE 會自動為每個節點加上以下標籤:
cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME
只要建立名為 apigee-data
和 apigee-runtime
的節點集區,就不需要再進行其他設定。如要使用自訂節點名稱,請參閱「使用自訂節點集區名稱」。
手動標示節點
根據預設,節點集區會自動為工作站節點加上標籤,但您可以選擇透過下列步驟手動為工作站節點加上標籤:
- 執行下列指令,取得叢集中的工作節點清單:
kubectl -n APIGEE_NAMESPACE 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
您可以在下列任一元件上指定自訂節點集區:
istio
mart
synchronizer
runtime
cassandra
udca
logger