Knotenpools
Ein Knotenpool ist eine Gruppe von Knoten innerhalb eines Clusters, 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: false
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 nur 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"false (Standardeinstellung) 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 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-customSie können einen benutzerdefinierten Knotenpool für jede dieser Komponenten angeben:
istiomartsynchronizerruntimecassandraudcalogger
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.
Anthos-Knotenpoolkonfiguration
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:
- Führen Sie den folgenden Befehl aus, um eine Liste der Worker-Knoten in Ihrem Cluster abzurufen:
kubectl -n apigee get nodes
Beispielausgabe:
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 - 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-customSie können einen benutzerdefinierten Knotenpool für jede dieser Komponenten angeben:
istiomartsynchronizerruntimecassandraudcalogger