設定專屬節點集區

節點集區簡介

節點集區是叢集中具有相同配置的一組節點。通常,當 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-dataapigee-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-runtimeapigee-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-dataapigee-runtime 的節點集區,就不需要進一步設定。如要使用自訂節點名稱,請參閱「使用自訂節點集區名稱」。

其他 Kubernetes 平台上的節點集區設定。

如要瞭解如何標記及管理節點集區,請參閱 Kubernetes 平台說明文件。

根據預設,節點集區會自動標記工作站節點,但您也可以選擇手動標記工作站節點,步驟如下:

  1. 執行下列指令,取得叢集中的工作站節點清單:
    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