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-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.
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-custom
Sie können einen benutzerdefinierten Knotenpool für jede dieser Komponenten angeben:
istio
mart
synchronizer
runtime
cassandra
udca
logger