設定專用的節點集區

關於節點集區

節點集區是叢集中具有相同配置的一組節點。通常,如果有資源需求不同的 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: false
  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 節點集區設定

在 GKE 中,節點集區必須具有您在建立集區時提供的專屬名稱,GKE 會自動為每個節點加上以下標籤:

cloud.google.com/gke-nodepool=the_node_pool_name

只要建立名為 apigee-dataapigee-runtime 的節點集區,就不需要再進行其他設定。如要使用自訂節點名稱,請參閱「使用自訂節點集區名稱」。

Anthos 節點集區設定

Apigee hybrid 目前僅支援 Anthos 1.1.1。這個版本的 Anthos 不支援節點集區功能,因此您必須手動標示工作站節點,如以下所述。混合式叢集啟用並開始運作後,請執行下列步驟:

  1. 執行下列指令,取得叢集中的工作節點清單:
    kubectl -n apigee get nodes

    輸出內容範例:

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready       7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready       7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready       7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready       7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready       7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready       7d      v1.14.6-gke.2
    
  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