Nachdem Sie einen Cluster erstellt haben, können Sie einige Aspekte der Clusterkonfiguration ändern. Sie haben beispielsweise folgende Möglichkeiten:
- Knoten hinzufügen, entfernen oder ersetzen.
- Annotationen zum Cluster hinzufügen oder daraus entfernen.
- Ändern Sie die Werte der änderbaren Felder in den Cluster- und Knotenpoolressourcen.
- Ändern Sie andere benutzerdefinierte Ressourcen.
Sie können bmctl
oder die Google Cloud CLI verwenden, um einen Cluster zu aktualisieren. Wenn Sie einen Administrator- oder Nutzercluster mit Terraform erstellt haben, können Sie den Cluster mit Terraform aktualisieren. Wichtige Hinweise:
Viele Aspekte der Clusterkonfiguration sind unveränderlich und können nach dem Erstellen des Clusters nicht aktualisiert werden. Eine umfassende Liste der änderbaren und unveränderlichen Felder finden Sie in der Referenz zum Cluster-Konfigurationsfeld. Der Feldverweis ist eine sortierbare Tabelle. Klicken Sie auf die Spaltenüberschriften, um die Sortierreihenfolge zu ändern. Klicken Sie auf einen Feldnamen, um die Beschreibung aufzurufen.
Die gcloud CLI und Terraform unterstützen nur die Aktualisierung von Administrator- und Nutzerclustern. Zum Aktualisieren anderer Clustertypen müssen Sie
bmctl
verwenden.Die gcloud CLI und Terraform unterstützen nur Änderungen an den Cluster- und Knotenpoolressourcen. Sie müssen
kubectl
oderbmctl
verwenden, um andere benutzerdefinierte Ressourcen zu aktualisieren, die sich auf den Cluster auswirken.
Cluster aktualisieren
Im Allgemeinen führen Sie die folgenden Aktionen aus, um einen Cluster zu aktualisieren:
bmctl
Ändern Sie die Werte der anwendbaren Felder in der Konfigurationsdatei des Clusters, die sich standardmäßig hier befindet:
bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
Aktualisieren Sie den Cluster mit dem Befehl
bmctl update
:bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
Ersetzen Sie Folgendes:
CLUSTER_NAME
: der Name des Clusters, den Sie aktualisieren möchten.KUBECONFIG
: Geben Sie für Administrator-, Hybrid- oder eigenständige Cluster den Pfad zur kubeconfig-Datei des Clusters ein. Geben Sie für einen Nutzercluster den Pfad zur kubeconfig-Datei des admin ein.
gcloud-CLI
Geben Sie nur die Flags für die Konfiguration an, die Sie ändern möchten.
Führen Sie den entsprechenden Aktualisierungsbefehl aus:
Administratorcluster:
gcloud container bare-metal admin-clusters update
Nutzercluster:
gcloud container bare-metal clusters update
.Knotenpools in einem Nutzercluster:
gcloud container bare-metal node-pools update
Terraform
Ändern Sie die Werte der anwendbaren Felder in der Terraform-Konfigurationsdatei, die Sie zum Erstellen des Clusters oder Knotenpools verwendet haben. Ausführliche Feldbeschreibungen finden Sie in der Terraform-Referenzdokumentation:
Aktualisieren Sie die Konfiguration mit dem Befehl
terraform apply
.
In den folgenden Abschnitten werden einige gängige Beispiele zum Aktualisieren eines vorhandenen Clusters beschrieben.
Knoten in einem Cluster hinzufügen oder entfernen
Ein Knotenpool besteht aus einer Gruppe von Knoten in einem Cluster, die dieselbe Konfiguration haben. Ein Knoten gehört immer zu einem Knotenpool. Wenn Sie einem Cluster einen neuen Knoten hinzufügen möchten, müssen Sie ihn einem bestimmten Knotenpool hinzufügen. Wenn Sie einen Knoten aus einem Knotenpool entfernen, wird er dann vollständig aus dem Cluster entfernt.
Es gibt drei Arten von Knotenpools in Google Distributed Cloud: Steuerungsebene, Load-Balancer und Worker-Knotenpools. In den folgenden Abschnitten wird beschrieben, wie Sie Knoten zu den einzelnen Arten von Knotenpools hinzufügen oder daraus entfernen.
bmctl
Sie können einen Knoten zu einem Knotenpool hinzufügen oder daraus entfernen, indem Sie die IP-Adresse des Knotens in einem bestimmten Abschnitt der Cluster-Konfigurationsdatei hinzufügen oder entfernen. Die folgende Liste zeigt, welcher Abschnitt für einen bestimmten Knotenpool bearbeitet werden muss:
- Worker-Knotenpool: Fügen Sie die IP-Adresse des Knotens im Bereich
spec.nodes
der SpezifikationNodePool
hinzu oder entfernen Sie sie. - Knotenpool der Steuerungsebene: Fügen Sie die IP-Adresse des Knotens im Bereich
spec.controlPlane.nodePoolSpec.nodes
der SpezifikationCluster
hinzu oder entfernen Sie sie. - Load-Balancer-Knotenpool: Fügen Sie die IP-Adresse des Knotens im Bereich
spec.loadBalancer.nodePoolSpec.nodes
der SpezifikationCluster
hinzu oder entfernen Sie sie.
Beispiel: Worker-Knoten entfernen
Hier sehen Sie ein Beispiel für eine Cluster-Konfigurationsdatei, die die Spezifikationen von zwei Worker-Knoten zeigt:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 192.0.2.1
- address: 192.0.2.2
So entfernen Sie einen Knoten:
(Optional) Wenn der zu entfernende Knoten kritische Pods ausführt, versetzen Sie den Knoten zuerst in den Wartungsmodus.
Sie können den Knotenausgleich für Worker-Knoten überwachen, indem Sie die Felder
status.nodesDrained
undstatus.nodesDraining
für die RessourceNodePool
aufrufen.Bearbeiten Sie die Clusterkonfigurationsdatei, um den IP-Adresseintrag für den Knoten zu löschen.
Aktualisieren Sie den Cluster:
bmctl update cluster1 \ --kubeconfig=ADMIN_KUBECONFIG
gcloud-CLI
Mit dem Befehl update
können Sie Knoten hinzufügen oder entfernen. Der verwendete update
-Befehl und das Flag, in dem Sie die IP-Adresse angeben, hängen vom Typ des Knotenpools ab, den Sie aktualisieren möchten:
Worker-Knotenpool: Führen Sie
gcloud container bare-metal node-pools update
aus und geben Sie die IP-Adresse im Flag--node-configs 'node-ip=IP_ADDRESS'
an.Knotenpool der Steuerungsebene in einem Administratorcluster: Führen Sie
gcloud container bare-metal admin-clusters update
aus und geben Sie die IP-Adresse im Flag--control-plane-node-configs 'node-ip=IP_ADDRESS'
an.Knotenpool der Steuerungsebene in einem Nutzercluster: Führen Sie
gcloud container bare-metal clusters update
aus und geben Sie die IP-Adresse im Flag--control-plane-node-configs 'node-ip=IP_ADDRESS'
an.Load-Balancer-Knotenpool: Führen Sie
gcloud container bare-metal clusters update
aus und geben Sie die IP-Adresse im Flag--metal-lb-load-balancer-node-configs 'node-ip=IP_ADDRESS'
oder
--bgp-load-balancer-node-configs 'node-ip=IP_ADDRESS'
an.
Das Flag, in dem Sie die IP-Adresse angeben, akzeptiert nur ein node-ip
. Sie fügen das Flag für jede IP-Adresse in den Knotenpool ein.
Die Befehle update
ersetzen alle IP-Adressen durch die von Ihnen angegebenen IP-Adressen. Wenn Sie einen Knoten hinzufügen möchten, fügen Sie in den Befehl update
die IP-Adressen der vorhandenen Knoten und die IP-Adresse des neuen Knotens ein. Ebenso entfernen Sie Knoten, indem Sie nur die IP-Adressen der Knoten einschließen, die Sie behalten möchten.
Beispiel: Worker-Knoten entfernen
In diesem Abschnitt wird gezeigt, wie Sie einen Worker-Knoten mithilfe von Beispieldaten aus einem Knotenpool entfernen. In den folgenden Schritten sind zusätzliche Befehle der gcloud CLI enthalten, die für Sie nützlich sein könnten.
(Optional) Wenn der zu entfernende Knoten kritische Pods ausführt, versetzen Sie den Knoten zuerst in den Wartungsmodus.
Sie können den Knotenausgleich für Worker-Knoten überwachen, indem Sie die Felder
status.nodesDrained
undstatus.nodesDraining
für die RessourceNodePool
aufrufen.Führen Sie den Befehl
list
aus, um alle Knotenpools im Cluster aufzulisten:gcloud container bare-metal node-pools list \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
Die Ausgabe sieht in etwa so aus:
NAME LOCATION STATE node-pool-1 us-central1 RUNNING node-pool-2 asia-east1 RUNNING
Führen Sie den Befehl
describe
aus, um alle IP-Adressen im Knotenpool aufzulisten:gcloud container bare-metal node-pools describe node-pool-1 \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
Die folgende Beispielausgabe ist zur besseren Lesbarkeit gekürzt:
annotations: ... baremetal.cluster.gke.io/version: 1.29 ... name: projects/example-project-12345/locations/us-central1/bareMetalClusters/abm-user-cluster1/bareMetalNodePools/node-pool-1 nodePoolConfig: nodeConfigs: - nodeIp: 192.0.2.1 - nodeIp: 192.0.2.2 operatingSystem: LINUX state: RUNNING ...
Beachten Sie in der Beispielausgabe Folgendes:
Das Feld
name
enthält den vollständig qualifizierten Namen des Knotenpools. Wenn Sie den Namen des Knotenpools in einem Befehl angeben, können Sie entweder den vollständig qualifizierten Namen oder den Namen des Knotenpools angeben, z. B.node-pool-1
, zusammen mit--cluster
,--project
und die Flags--location
.Der Abschnitt
nodeConfigs
enthält zweinodeIp
-Felder mit den IP-Adressen der Knoten.
Führen Sie den folgenden Befehl aus, um den Knoten mit der IP-Adresse 192.0.2.1 zu entfernen:
gcloud container bare-metal node-pools update node-pool-1 \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1 \ --node-configs='node-ip=192.0.2.2'
Mit dem Befehl
update
werden alle IP-Adressen durch die von Ihnen angegebenen IP-Adressen ersetzt. Da 192.0.2.1 nicht enthalten ist, wird der Knoten entfernt.Die Ausgabe dieses Befehls sieht in etwa so aus:
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9] to complete
In der Beispielausgabe ist der String
operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9
derOPERATION_ID
des Vorgangs mit langer Ausführungszeit. Sie können den Status des Vorgangs ermitteln, indem Sie den folgenden Befehl in einem anderen Terminalfenster ausführen:gcloud container bare-metal operations describe operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9 \ --project= example-project-12345 \ --location=us-central1
Sie können den Befehl jedes Mal noch einmal ausführen, um den Status zu prüfen.
Wenn das Entfernen des Knotens fehlschlägt, können Sie das Entfernen aus dem Cluster erzwingen. Weitere Informationen finden Sie unter Entfernen fehlerhafter Knoten erzwingen.
Knoten der HA-Steuerungsebene ersetzen
bmctl
Sie können bmctl
verwenden, um Knoten der Steuerungsebene mit Hochverfügbarkeit in allen Clustertypen zu ersetzen.
Führen Sie die folgenden Schritte aus, um einen Knoten in einem Cluster zu ersetzen:
- Entfernen Sie die IP-Adresse des Knotens aus der Clusterkonfigurationsdatei.
- Aktualisieren Sie den Cluster.
- Prüfen Sie den Status der Knoten im Cluster.
- Fügen Sie der gleichen Clusterkonfigurationsdatei die IP-Adresse eines neuen Knotens hinzu.
- Aktualisieren Sie den Cluster.
Beispiel: Knoten der HA-Steuerungsebene ersetzen
Hier sehen Sie eine Beispiel-Cluster-Konfigurationsdatei, die drei Knoten der Steuerungsebene in einem Nutzercluster zeigt:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user-cluster
namespace: cluster-user-cluster
spec:
controlPlane:
nodePoolSpec:
nodes:
- address: 192.0.2.11
- address: 192.0.2.12
- address: 192.0.2.13
Führen Sie die folgenden Schritte aus, um den letzten im Abschnitt spec.controlPlane.nodePoolSpec.nodes
aufgeführten Knoten zu ersetzen:
Entfernen Sie den Knoten, indem Sie seinen IP-Adresseintrag in der Clusterkonfigurationsdatei löschen. Nach dieser Änderung sollte die Clusterkonfigurationsdatei in etwa so aussehen:
--- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-cluster namespace: cluster-user-cluster spec: controlPlane: nodePoolSpec: nodes: - address: 192.0.2.11 - address: 192.0.2.12
Aktualisieren Sie den Cluster mit folgendem Befehl:
bmctl update cluster -c CLUSTER_NAME \ --kubeconfig=KUBECONFIG
Nehmen Sie die folgenden Änderungen vor:
- Ersetzen Sie CLUSTER_NAME durch den Namen des Clusters, den Sie aktualisieren möchten.
- Wenn der Cluster ein selbstverwalteter Cluster ist (z. B. ein Administrator- oder eigenständiger Cluster), ersetzen Sie KUBECONFIG durch den Pfad zur kubeconfig-Datei des Clusters. Wenn der Cluster ein Nutzercluster ist, wie in diesem Beispiel, ersetzen Sie KUBECONFIG durch den Pfad zur kubeconfig-Datei des admin.
Nachdem der Befehl
bmctl update
erfolgreich ausgeführt wurde, dauert es einige Zeit, bis die Jobsmachine-preflight
undmachine-init
abgeschlossen sind. Sie können den Status von Knoten und den zugehörigen Knotenpools anzeigen lassen. Führen Sie dazu die im Abschnitt Updates überprüfen in diesem Dokument beschriebenen Befehle aus. Sobald der Knotenpool und die Knoten bereit sind, können Sie mit dem nächsten Schritt fortfahren.Fügen Sie dem Knotenpool einen neuen Knoten für die Steuerungsebene hinzu. Fügen Sie dazu die IP-Adresse des neuen Knotens der Steuerungsebene dem Abschnitt
spec.controlPlane.nodePoolSpec.nodes
der Clusterkonfigurationsdatei hinzu. Nach dieser Änderung sollte die Clusterkonfigurationsdatei in etwa so aussehen:--- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-cluster namespace: cluster-user-cluster spec: controlPlane: nodePoolSpec: nodes: - address: 192.0.2.11 - address: 192.0.2.12 - address: 192.0.2.14
Aktualisieren Sie den Cluster mit folgendem Befehl:
bmctl update cluster -c CLUSTER_NAME \ --kubeconfig=KUBECONFIG
gcloud-CLI
Sie können die gcloud CLI verwenden, um Knoten der Hochverfügbarkeit (HA) in Administrator- und Nutzerclustern zu ersetzen.
Führen Sie die folgenden Schritte aus, um einen Knoten in einem Cluster zu ersetzen:
Entfernen Sie die IP-Adresse des Knotens mit dem entsprechenden Befehl
update
:- Nutzercluster:
gcloud container bare-metal clusters update
- Administratorcluster:
gcloud container bare-metal admin-clusters update
- Nutzercluster:
Prüfen Sie den Status des Entfernens eines Knotens aus dem Cluster, indem Sie
gcloud container bare-metal operations describe OPERATION_ID
ausführen.Fügen Sie die IP-Adresse des neuen Knotens hinzu, indem Sie den entsprechenden
update
-Befehl ausführen.
Beispiel: Knoten der HA-Steuerungsebene ersetzen
In diesem Abschnitt wird gezeigt, wie Sie eine Steuerungsebene aus einem Cluster mithilfe von Beispieldaten ersetzen. In den folgenden Schritten sind zusätzliche Befehle der gcloud CLI enthalten, die für Sie nützlich sein könnten.
Führen Sie den Befehl
list
aus, um alle Nutzercluster in einem Google Cloud-Projekt aufzulisten:gcloud container bare-metal clusters list \ --project=example-project-12345 \ --location=-
Wenn Sie
--location=-
festlegen, bedeutet dies, dass alle Cluster in allen Regionen aufgelistet werden. Wenn Sie die Liste einschränken müssen, legen Sie für--location
eine bestimmte Region fest.Die Ausgabe sieht in etwa so aus:
NAME LOCATION VERSION ADMIN_CLUSTER STATE abm-user-cluster1a us-central1 1.29 abm-admin-cluster1 RUNNING abm-user-cluster1b europe-west1 1.29 abm-admin-cluster1 RUNNING
Führen Sie den Befehl
describe
im Cluster aus:gcloud container bare-metal clusters describe abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
Die Beispielausgabe ist zur besseren Lesbarkeit gekürzt:
... controlPlane: controlPlaneNodePoolConfig: nodePoolConfig: nodeConfigs: - nodeIp: 192.0.2.11 - nodeIp: 192.0.2.12 - nodeIp: 192.0.2.13 operatingSystem: LINUX ... name: projects/example-project-1234567/locations/us-central1/bareMetalClusters/abm-user-cluster1a ...
Beachten Sie in der Beispielausgabe Folgendes:
Das Feld
name
enthält den vollständig qualifizierten Namen des Clusters. Wenn Sie den Clusternamen in einem Befehl angeben, können Sie entweder den voll qualifizierten Namen oder den Clusternamen angeben, z. B.abm-user-cluster1a
, zusammen mit--project
und der--location flags
Der Abschnitt
nodeConfigs
enthält dreinodeIp
-Felder mit den IP-Adressen der Knoten der Steuerungsebene.
Entfernen Sie den Knoten mit der IP-Adresse
192.0.2.13
:gcloud container bare-metal cluster update abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --control-plane-node-configs 'node-ip=192.0.2.11' --control-plane-node-configs 'node-ip=192.0.2.12'
Die Ausgabe dieses Befehls sieht in etwa so aus:
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1956154681749-6078d9def4030-76686d6e-9fcb1d7] to complete
In der Beispielausgabe ist der String
operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7
derOPERATION_ID
des Vorgangs mit langer Ausführungszeit. Sie können den Status des Vorgangs ermitteln, indem Sie den folgenden Befehl in einem anderen Terminalfenster ausführen:gcloud container bare-metal operations describe operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7 \ --project= example-project-12345 \ --location=us-central1
Sie können den Befehl jedes Mal noch einmal ausführen, um den Status zu prüfen.
Fügen Sie den neuen Knoten mit der IP-Adresse
192.0.2.14
hinzu:gcloud container bare-metal cluster update abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --control-plane-node-configs 'node-ip=192.0.2.11' --control-plane-node-configs 'node-ip=192.0.2.12' --control-plane-node-configs 'node-ip=192.0.2.14'
Aktualisierungen prüfen
kubectl
Mit dem Befehl kubectl get
können Sie den Status von Knoten und den zugehörigen Knotenpools anzeigen lassen.
Der folgende Befehl zeigt beispielsweise den Status der Knotenpools im Cluster-Namespace cluster-my-cluster
an:
kubectl -n cluster-my-cluster get nodepools.baremetal.cluster.gke.io
Das System gibt Ergebnisse ähnlich der folgenden:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
cluster-my-cluster 3 0 0 0 0
cluster-my-cluster-lb 2 0 0 0 0
np1 3 0 0 0 0
Reconciling=1
bedeutet, dass der Abgleichschritt noch läuft. Sie sollten warten, bis sich der Status zu Reconciling=0
ändert.
Sie können auch den Status von Knoten in einem Cluster prüfen, indem Sie den folgenden Befehl ausführen:
kubectl get nodes --kubeconfig=KUBECONFIG
gcloud-CLI
Wie bereits beschrieben, können Sie nach dem Ausführen eines update
-Befehls den Status des Vorgangs mit gcloud container bare-metal
operations describe OPERATIONS_ID
prüfen. Die Ausgabe des Befehls enthält den Status der Knoten. Beispiel:
...
metrics:
- intValue: '1'
metric: NODES_RECONCILING
- intValue: '2'
metric: NODES_HEALTHY
- intValue: '0'
metric: NODES_FAILED
- intValue: '0'
metric: NODES_IN_MAINTENANCE
- intValue: '3'
metric: NODES_TOTAL
stage: HEALTH_CHECK
...
Unabhängig davon, welches Tool Sie zum Aktualisieren eines Knotenpools verwenden, können Sie den aktuellen Status eines Knotenpools durch Ausführen des entsprechenden describe
-Befehls wie zuvor abrufen.
Weitere Informationen zur Diagnose Ihrer Cluster finden Sie unter Snapshots zur Diagnose von Clustern erstellen.
Load-Balancer-Adresspools
bmctl
Der Abschnitt addressPools
enthält Felder zum Angeben von Load-Balancing-Pools für die gebündelten Load-Balancer MetalLB und Border Gateway Protocol (BGP). Sie können jederzeit weitere Load-Balancing-Adresspools hinzufügen, aber keine vorhandenen Adresspools entfernen. Ab Google Distributed Cloud-Version 1.16.0 können Sie die Werte für addressPools.avoidBuggyIPs
und addressPools.manualAssign
jederzeit ändern.
addressPools:
- name: pool1
addresses:
- 198.51.100.0-198.51.100.4
- 198.51.100.240/28
- name: pool2
addresses:
- 198.51.100.224/28
gcloud-CLI
Sie können für die gebündelten Load-Balancer jederzeit weitere Load-Balancing-Adresspools hinzufügen, aber keine vorhandenen Adresspools entfernen. Das Flag, das Sie in gcloud container bare-metal clusters update
zum Hinzufügen eines Adresspools angeben, hängt vom Typ des gebündelten Load-Balancers ab:
- MetalLB (Ebene 2): Verwenden Sie das Flag
--metal-lb-address-pools
. - Border Gateway Protocol (BGP): Verwenden Sie das Flag
--bgp-address-pools
.
Der Wert für die Flags hat folgendes Format:
'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
Der Wert enthält Segmente, die mit den Keywords pool
, avoid-buggy-ip
, manual-assign
und addresses
beginnen. Trennen Sie die einzelnen Segmente durch ein Komma.
pool
: Ein Name Ihrer Wahl für den Pool.avoid-buggy-ips
: Wenn Sie diesen Wert aufTrue
setzen, weist der IPAM-Controller (IP Address Management) Diensten keine IP-Adressen zu, die auf.0
oder.255
enden. Dadurch wird verhindert, dass fehlerhafte Geräte versehentlich Traffic löschen, der an diese speziellen IP-Adressen gesendet wird. Enthält standardmäßig den WertFalse
, wenn nichts anderes angegeben ist. Ab der Google Distributed Cloud-Version 1.16.0 können Sie diesen Wert in einem vorhandenen Adresspool ändern.manual-assign
: Wenn der IPAM-Controller IP-Adressen aus diesem Pool nicht automatisch Services zuweisen soll, legen Sie für dieses FeldTrue
fest. Anschließend können Entwickler einen Service vom TypLoadBalancer
erstellen und eine der Adressen manuell aus dem Pool angeben. Wenn keine Angabe erfolgt, wirdmanual-assign
aufFalse
gesetzt. Ab Google Distributed Cloud-Version 1.16.0 können Sie diesen Wert in einem vorhandenen Adresspool ändern.In der Liste der
addresses
: Jede Adresse muss ein Bereich sein, entweder im Format CIDR oder Bereich mit Bindestrich. Verwenden Sie/32
in CIDR-Notation (z. B. 192.0.2.1/32), um eine einzelne IP-Adresse in einem Pool anzugeben (z. B. für die Ingress-VIP).
Beachten Sie die folgenden Syntaxregeln:
- Schließen Sie den gesamten Wert in einfache Anführungszeichen ein.
- Leerzeichen sind nicht zulässig.
- Trennen Sie die einzelnen IP-Adressbereiche durch ein Semikolon.
Sie können mehr als eine Instanz des Flags angeben, wie im folgenden Beispiel gezeigt:
--metal-lb-address-pools='pool=pool2,avoid-buggy-ips=False,manual-assign=True,addresses=198.51.100.0/30;198.51.100.64-198.51.100.72' --metal-lb-address-pools='pool=pool3,avoid-buggy-ips=True,manual-assign=True,addresses=203.0.113.0/28'
Weitere Informationen zu Load-Balancer-Adresspools finden Sie unter loadBalancer.addressPools unter „Gebündeltes Load-Balancing konfigurieren“.
Versehentliches Löschen von Clustern verhindern
bmctl
Wenn Sie der Clusterkonfigurationsdatei die Annotation baremetal.cluster.gke.io/prevent-deletion: "true"
hinzufügen, wird der Cluster nicht gelöscht. Beispiel: Wenn Sie kubectl delete cluster
oder bmctl reset
cluster
ausführen, wird ein Fehler erzeugt.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: ci-10c3c6f4d9c698e
namespace: cluster-ci-10c3c6f4d9c698e
annotations:
baremetal.cluster.gke.io/prevent-deletion: "true"
spec:
clusterNetwork:
gcloud-CLI
Wenn Sie das Flag --add-annotations
mit dem Wert baremetal.cluster.gke.io/prevent-deletion="true"
angeben, kann der Cluster nicht gelöscht werden. Beispiel:
Fügen Sie die Annotation hinzu, um ein versehentliches Löschen des Clusters zu verhindern:
gcloud container bare-metal clusters update abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --add-annotations=baremetal.cluster.gke.io/prevent-deletion="true"
Versuchen Sie, den Nutzercluster zu löschen:
gcloud container bare-metal clusters delete abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --force \ --allow-missing
Die Antwort des Befehls sieht in etwa so aus:
ERROR: (gcloud.container.bare-metal.clusters.delete) INVALID_ARGUMENT: invalid request: admission webhook "vcluster.kb.io" denied the request: annotations[baremetal.cluster.gke.io/prevent-deletion]: Invalid value: "true": Annotation "baremetal.cluster.gke.io/prevent-deletion" should be removed in order to delete this cluster
Zum Entfernen der Annotation geben Sie
--remove-annotations=baremetal.cluster.gke.io/prevent-deletion="true"
im Befehlupdate
an.
Preflight-Prüfungen umgehen
Dieses Feature ist nur mit bmctl update
verfügbar.
Der Standardwert des Felds bypassPreflightCheck
ist false
. Wenn Sie dieses Feld in der Clusterkonfigurationsdatei auf true
setzen, werden die internen Preflight-Prüfungen ignoriert, wenn Sie Ressourcen auf vorhandene Cluster anwenden.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
bypassPreflightCheck: true
Clusteradministratoren hinzufügen oder entfernen
bmctl
Sie können einen Nutzer oder ein Dienstkonto als Clusteradministrator für einen Nutzercluster hinzufügen oder entfernen. Geben Sie dazu E-Mail-Adressen im Abschnitt clusterSecurity.authorization.clusterAdmin.gcpAccounts
der Cluster-Konfigurationsdatei an. Den Konten wird die Rolle "cluster-admin" für den Cluster zugewiesen, die vollständigen Zugriff auf den Cluster ermöglicht.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterSecurity:
authorization:
clusterAdmin:
gcpAccounts:
- alex@example.com
- hao@example.com
- my-sa@example-project-12345.iam.gserviceaccount.com
Wenn Sie einen Nutzercluster aktualisieren, um ein Konto hinzuzufügen, müssen Sie alle Konten in der Liste aufnehmen (sowohl vorhandene als auch neue Konten), da bmctl update
die Liste mit dem überschreibt, was Sie in der Konfigurationsdatei angeben. Wenn Sie ein Konto entfernen möchten, entfernen Sie es aus der Clusterkonfigurationsdatei und führen Sie bmctl update
aus.
gcloud-CLI
Sie können einen Nutzer oder ein Dienstkonto als Clusteradministrator hinzufügen oder entfernen. Dazu geben Sie im Flag --admin-users
eine E-Mail-Adresse an. Das Flag akzeptiert nur eine E-Mail-Adresse. Wenn Sie mehrere Nutzer hinzufügen möchten, geben Sie in jedem Flag ein Konto an. Beispiel:
gcloud container bare-metal clusters update abm-user-cluster1a \
--project=example-project-12345 \
--location=us-central1 \
--admin-users=alex@example.com \
--admin-users=hao@example.com
--admin-users=my-sa@example-project-12345.iam.gserviceaccount.com
Der Befehl update
überschreibt die gesamte Berechtigungsliste. Geben Sie alle vorhandenen und neuen Nutzer an, die Clusteradministratoren sein sollen.
Anmeldenutzer festlegen
Sie können einen Nicht-Root-Nutzernamen angeben, den Sie für den passwortlosen sudo
-Zugriff auf die Knotenmaschinen in Ihrem Cluster verwenden möchten. Der SSH-Schlüssel sshPrivateKeyPath
muss für den angegebenen Nutzer funktionieren. Mit den Vorgängen zum Erstellen und Aktualisieren von Clustern wird geprüft, ob auf Knotencomputer mit dem angegebenen Nutzer und SSH-Schlüssel zugegriffen werden kann.
bmctl
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
nodeAccess:
loginUser: abm
gcloud-CLI
Mit dem Flag --login-user
geben Sie den Nutzer an, den Sie für den Zugriff auf Knotenmaschinen verwenden möchten. Beispiel:
gcloud container bare-metal clusters update abm-user-cluster1a \
--project=example-project-12345 \
--location=us-central1 \
--login-user=abm
So aktivieren Sie den passwortlosen sudo
-Zugriff für einen Nutzer auf jedem Clusterknotencomputer:
Verwenden Sie
sudo visudo
, um die sudoers-Datei zur Bearbeitung zu öffnen:sudo visudo -f /etc/sudoers
Der Befehl
visudo
sperrt die sudoers-Datei, um gleichzeitige Änderungen zu verhindern, und validiert die Syntax der Datei beim Speichern.Fügen Sie für Ihren angemeldeten Nutzer der sudoers-Datei einen Eintrag wie den folgenden hinzu:
USERNAME ALL=(ALL) NOPASSWD: ALL
Schließen und speichern Sie die Datei.
Führen Sie den folgenden Befehl aus, um Befehle mit den Berechtigungen Ihres Anmeldenutzers auszuführen:
su - USERNAME
Führen Sie den folgenden
sudo
-Befehl aus, um zu bestätigen, dass für Ihren Anmeldenutzer zum Ausführen vonsudo
-Befehlen kein Passwort erforderlich ist:sudo ip a
Erweiterte Netzwerkeinstellungen
Sie konfigurieren erweiterte Netzwerkfeatures in verschiedenen benutzerdefinierten Ressourcen, nachdem der Cluster erstellt wurde. Wenn Sie die benutzerdefinierten Ressourcen und zugehörige Netzwerkfeatures verwenden möchten, müssen Sie beim Erstellen des Clusters erweitertes Netzwerk aktivieren.
bmctl
Legen Sie clusterNetwork.advancedNetworking
in der Clusterkonfiguration auf true
fest, wenn Sie den Cluster erstellen:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterNetwork:
...
advancedNetworking: true
...
gcloud-CLI
Fügen Sie beim Erstellen des Clusters in den Befehl gcloud container bare-metal clusters create
das Flag --enable-advanced-networking
ein.
Nachdem der Cluster mit aktiviertem erweiterten Netzwerk erstellt wurde, können Sie die in diesem Abschnitt beschriebenen benutzerdefinierten Ressourcen mit kubectl apply
konfigurieren.
NetworkGatewayGroup
Die benutzerdefinierte NetworkGatewayGroup
-Ressource wird verwendet, um Floating-IP-Adressen für erweiterte Netzwerkfeatures bereitzustellen, z. B. das NAT-Gateway für ausgehenden Traffic oder das gebündelte Load-Balancing Feature mit BGP.
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
BGP-Load-Balancing
Sie konfigurieren das BGP-Load-Balancing (Border Gateway Protocol) in der Clusterressource und anderen benutzerdefinierten Ressourcen. gcloud container bare-metal clusters
create
- und update
-Befehle unterstützen die Konfiguration von BGP in der Clusterressource, nicht jedoch in den benutzerdefinierten Ressourcen.
Wenn Sie gebündelte Load-Balancer mit BGP konfigurieren, verwendet das Load-Balancing der Datenebene standardmäßig dieselben externen Peers, die für das Peering der Steuerungsebene angegeben wurden. Alternativ können Sie das Load-Balancing der Datenebene separat mit der benutzerdefinierten Ressource BGPLoadBalancer
und der benutzerdefinierten Ressource BGPPeer
konfigurieren. Weitere Informationen finden Sie unter Gebündelte Load-Balancer mit BGP konfigurieren.
BGPLoadBalancer
apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-bm
spec:
peerSelector:
cluster.baremetal.gke.io/default-peer: "true"
BGPPeer
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
cluster.baremetal.gke.io/default-peer: "true"
spec:
localASN: 65001
peerASN: 65002
peerIP: 10.0.3.254
sessions: 2
Netzwerkbereich des Dienstes erhöhen
Wenn Sie mehr Dienste als das anfängliche Limit erstellen möchten, können Sie die IPv4-Dienst-CIDR-Maske reduzieren, um das Dienstnetzwerk Ihres Clusters zu erhöhen. Wenn Sie die Maske (der Wert nach "/") reduzieren, wird ein größerer Netzwerkbereich verwendet. Sie können den Bereich des IPv4-Dienst-CIDR nur erhöhen. Der Netzwerkbereich kann nicht reduziert werden, d. h., die Maske (der Wert nach "/") kann nicht erhöht werden.
bmctl
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
...
clusterNetwork:
services:
cidrBlocks:
- 192.0.2.0/14
...
gcloud-CLI
Geben Sie den neuen Bereich im Flag --island-mode-service-address-cidr-blocks
an, um den Bereich des IPv4-Dienst-CIDR in einem Nutzercluster zu erhöhen.
gcloud container bare-metal clusters update cluster1 \
--project=example-project-12345 \
--location=us-central1 \
--island-mode-service-address-cidr-blocks=192.0.2.0/14
Kubelet-Image-Pull-Einstellungen konfigurieren
Kubelet wird auf jedem Knoten des Clusters ausgeführt. Das Kubelet ist für das Monitoring von Containern auf einem Knoten und dafür verantwortlich, dass sie fehlerfrei sind. Bei Bedarf fragt das kubelet Images aus Container Registry ab und ruft sie ab.
Es kann schwierig sein, Ihre Kubelet-Konfigurationen manuell zu aktualisieren und über alle Clusterknoten hinweg zu synchronisieren. Zum Schweregrad gehen aber manuelle Änderungen an der Kubelet-Konfiguration auf Ihren Knoten verloren, wenn Sie Ihren Cluster aktualisieren.
Damit synchronisierte Updates einfacher und dauerhafter sind, können Sie in Google Distributed Cloud einige Kubelet-Einstellungen für jeden Ihrer Clusterknotenpools festlegen: Steuerungsebenenknoten, Load-Balancer-Knoten und Worker-Knoten. Die Einstellungen gelten für alle Knoten in einem bestimmten Pool und bleiben auch nach Clusterupgrades erhalten. Die Felder für diese Einstellungen sind änderbar, sodass Sie sie jederzeit aktualisieren können, nicht nur während der Clustererstellung.
bmctl
Die folgenden unterstützten Felder steuern Container Registry-Pull-Vorgänge für kubelet:
registryBurst
(Standardeinstellung: 10)registryPullQPS
(Standardeinstellung: 5)serializeImagePulls
(Standardeinstellung: true)
Weitere Informationen zu den einzelnen Konfigurationsfeldern von Kubelet finden Sie in der Referenz zu den Clusterkonfigurationsfeldern.
Sie können diese Felder in den Abschnitten kubeletConfig
der Clusterspezifikation und der NodePool-Spezifikation für die folgenden Knotenpools angeben:
- Clusterspezifikation:
- Knoten der Steuerungsebene
spec.controlPlane.nodePoolSpec.kubeletConfig
- Load-Balancer-Knoten
spec.loadBalancer.nodePoolSpec.kubeletConfig
- Knotenpool-Spezifikation:
- Worker-Knoten
spec.kubeletConfig
Das folgende Beispiel zeigt die hinzugefügten Felder mit ihren Standardwerten in der Cluster-Konfigurationsdatei. Die Annotation preview.baremetal.cluster.gke.io/custom-kubelet: "enable"
ist erforderlich.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
preview.baremetal.cluster.gke.io/custom-kubelet: "enable"
spec:
...
controlPlane:
nodePoolSpec:
kubeletConfig:
registryBurst: 10
registryPullQPS: 5
serializeImagePulls: true
...
loadBalancer:
nodePoolSpec:
kubeletConfig:
registryBurst: 10
registryPullQPS: 5
serializeImagePulls: true
...
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: node-pool-new
namespace: cluster-cluster1
spec:
clusterName: cluster1
...
kubeletConfig:
registryBurst: 10
registryPullQPS: 5
serializeImagePulls: true
In jedem Fall gilt die Einstellung für alle Knoten im Pool.
gcloud-CLI
Die folgenden Flags steuern Container Registry-Pull-Vorgänge für kubelet:
Knoten der Steuerungsebene
Load-Balancer-Knoten
- --bgp-load-balancer-registry-burst
- --bgp-load-balancer-registry-pull-qps
- --disable-bgp-load-balancer-serialize-image-pulls
- --enable-bgp-load-balancer-serialize-image-pulls
- --metal-lb-load-balancer-registry-burst
- --metal-lb-load-balancer-registry-pull-qps
- --disable-metal-lb-load-balancer-serialize-image-pull
- --enable-metal-lb-load-balancer-serialize-image-pulls
Worker-Knoten
Verwendung
Im Folgenden finden Sie einige Überlegungen zur Feinabstimmung von Image-Abrufen:
Da Images standardmäßig nacheinander abgerufen werden, kann ein langes Abrufen von Images alle anderen auf einem Knoten geplanten Image-Abrufe verzögern. Verzögerte Image-Abrufe können den Upgrade-Prozess blockieren (insbesondere, wenn neue Google Distributed Cloud-Images auf einem Knoten bereitgestellt werden müssen). Wenn Sie von Image-Pull-Verzögerungen betroffen sind, können Sie das Abrufen von serialisierten Images deaktivieren, um parallele Images abzurufen.
Wenn Fehler bei der Image-Pull-Drosselung wie
pull QPS exceeded
auftreten, sollten Sie*-registry-pull-qps
und*-registry-burst
erhöhen, um den Image-Pull-Durchsatz zu erhöhen. Diese beiden Felder passen die Pull-Rate und die Warteschlangengröße an und können dazu beitragen, andere Drosselungsprobleme zu beheben. Negative Werte sind nicht zulässig.