Dedizierte Knotenpools konfigurieren

Knotenpools

Ein Knotenpool besteht aus einer Gruppe von Knoten in einem Cluster, die alle dieselbe Konfiguration haben. Normalerweise definieren Sie separate Knotenpools, wenn Sie Pods mit unterschiedlichen Ressourcenanforderungen haben. Die apigee-cassandra-Pods erfordern beispielsweise nichtflüchtigen Speicher, die anderen Apigee-Hybrid-Pods jedoch nicht.

In diesem Thema wird erläutert, wie Sie dedizierte Knotenpools für eine Hybridinstallation konfigurieren.

Standard-nodeSelectors verwenden

Als Best Practice wird empfohlen, zwei dedizierte Knotenpools einzurichten: Einen für die Cassandra-Pods und einen für alle anderen Laufzeit-Pods. Mit den standardmäßigen nodeSelector-Konfigurationen weist das Installationsprogramm die Cassandra-Pods einem zustandsorientierten Knotenpool mit dem Namen apigee-data und allen anderen Pods einem zustandslosen Knotenpool namens apigee-runtime zu. Sie müssen lediglich Knotenpools mit diesen Namen erstellen. Apigee Hybrid übernimmt die Pod-Planungsdetails:

Name des Standardknotenpools Beschreibung
apigee-data Ein zustandsorientierter Knotenpool.
apigee-runtime Ein zustandsloser Knotenpool.

Im Folgenden sehen Sie die nodeSelector-Standardkonfiguration. Das Attribut apigeeData gibt einen Knotenpool für die Cassandra-Pods an. Der apigeeRuntime gibt den Knotenpool für alle anderen Pods an. Sie können diese Standardeinstellungen in Ihrer Überschreibungsdatei überschreiben, wie später in diesem Thema erläutert:

nodeSelector:
  requiredForScheduling: true
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Damit Ihre Pods für die richtigen Knoten geplant sind, müssen Sie zwei Knotenpools mit den Namen apigee-data und apigee-runtime erstellen.

Das Attribut "requiredForScheduling"

Der Konfigurationsabschnitt nodeSelector hat ein Attribut mit dem Namen requiredForScheduling:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Wenn das Flag auf false gesetzt ist, werden zugrunde liegende Pods geplant, unabhängig davon, ob Knotenpools mit den erforderlichen Namen definiert sind. Wenn Sie also Knotenpools vergessen oder versehentlich einen anderen Knotenpool als apigee-runtime oder apigee-data benennen, ist die Installation der Hybridlaufzeit erfolgreich. Kubernetes entscheidet, wo Ihre Pods ausgeführt werden sollen.

Wenn Sie requiredForScheduling auf true (Standard) setzen, schlägt die Installation fehl, es sei denn, es gibt Knotenpools, die mit den konfigurierten nodeSelector-Schlüsseln und -Werten übereinstimmen.

Benutzerdefinierte Knotenpoolnamen verwenden

Wenn Sie keine Knotenpools mit den Standardnamen verwenden möchten, können Sie Knotenpools mit benutzerdefinierten Namen erstellen und diese Namen in der nodeSelector-Stanza angeben. Zum Beispiel weist die folgende Konfiguration die Cassandra-Pods dem Pool my-cassandra-pool und allen anderen Pods dem Pool mit dem Namen my-runtime-pool zu:

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"

Knotenpool für bestimmte Komponenten in GKE überschreiben

Sie können Knotenpools auch auf der Ebene einzelner Komponenten überschreiben. Die folgende Konfiguration weist beispielsweise der Knotenpool runtime den Wert apigee-custom an:

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

Sie können einen benutzerdefinierten Knotenpool für jede dieser Komponenten angeben:

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger

GKE-Knotenpoolkonfiguration

In GKE müssen Knotenpools einen eindeutigen Namen haben, den Sie beim Erstellen der Pools angeben. GKE weist jedem Knoten automatisch Folgendes zu:

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

Wenn Sie Knotenpools mit den Namen apigee-data und apigee-runtime erstellen, ist keine weitere Konfiguration erforderlich. Wenn Sie benutzerdefinierte Knotennamen verwenden möchten, finden Sie weitere Informationen dazu unter Benutzerdefinierte Knotenpoolnamen verwenden.

Knoten manuell labeln

Apigee Hybrid wird derzeit nur in Anthos 1.1.1 unterstützt. Diese Version von Anthos unterstützt nicht die Knotenpoolfunktion. Daher müssen Sie die Worker-Knoten wie unten beschrieben manuell mit einem Label versehen. Führen Sie die folgenden Schritte aus, sobald Ihr Hybridcluster ausgeführt wird:

  1. Führen Sie den folgenden Befehl aus, um eine Liste der Worker-Knoten in Ihrem Cluster abzurufen:
    kubectl -n APIGEE_NAMESPACE get nodes

    Beispielausgabe:

    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
  2. Kennzeichnen Sie jeden Knoten, um zwischen Laufzeitknoten und Datenknoten zu unterscheiden.

    Verwenden Sie diesen Befehl, um die Knoten mit Labels zu versehen:

    kubectl label node NODE_NAME KEY=VALUE

    Beispiel:

    $ 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

Knotenpool für bestimmte Komponenten in Anthos GKE überschreiben

Sie können Knotenpoolkonfigurationen auch für eine Anthos GKE-Installation auf der Ebene einzelner Komponenten überschreiben. Die folgende Konfiguration weist beispielsweise den Knotenpool mit dem Wert apigee-custom der Komponente runtime zu:

runtime:
  nodeSelector:
    key: apigee.com/apigee-nodepool
    value: apigee-custom

Sie können einen benutzerdefinierten Knotenpool für jede dieser Komponenten angeben:

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger