Cluster zur Verwendung von Node Agent migrieren

Mit dem Node Agent können Sie sichere Clustervorgänge auf Google Distributed Cloud-Knoten ausführen, ohne Ansible über SSH zu verwenden. Dieser Agent ist für Versionen ab 1.33 verfügbar. Er wird auf jedem Knoten ausgeführt und verwaltet Knotenkonfigurationen über einen authentifizierten, verschlüsselten gRPC-Kanal.

Sie können vorhandene Cluster zum Knoten-Agent migrieren oder den Agent bereitstellen, wenn Sie neue Cluster erstellen. Zur Verwaltung des Agent-Lebenszyklus automatisieren bmctl nodeagent-Befehle die Zertifikatserstellung und die Rotation von Anmeldedaten über Knoten hinweg. Sie werden über SSH ausgeführt, sodass Sie Agents auch dann bereitstellen können, wenn Cluster-Controller fehlerhaft sind.

Hinweis

Prüfen Sie, ob alle Clusterknoten die folgenden Anforderungen erfüllen, bevor Sie einen Cluster in den Knoten-Agent-Modus migrieren:

  • Ein offener Port, der für den Knoten-Agenten reserviert ist. Der Knoten-Agent verwendet standardmäßig Port 9192. Konfigurieren Sie diesen Port, wenn Sie einen neuen Cluster bereitstellen, aktivieren oder installieren. Weitere Informationen finden Sie unter Node-Agent-Port anpassen.

  • Containerd-Version 1.7 oder höher.

  • 12 GB freier Speicherplatz im Verzeichnis /tmp auf dem Admin-Knoten und allen Zielknoten. Wenn Sie die Größe des Verzeichnisses /tmp für Ihre Zielknoten nicht ändern können, lesen Sie den Abschnitt Lokale Speicherkapazität für Node Agent-Sicherungen erhöhen.

Zum Knoten-Agent-Modus migrieren

Die Migration zum Node Agent-Modus erfolgt in zwei Schritten:

  1. Knoten-Agent bereitstellen: Stellen Sie die Knoten-Agent-Komponente auf allen Knoten im Cluster bereit.

  2. Knoten-Agent-Modus aktivieren:

    • Aktivieren Sie den Modus für einen vorhandenen Cluster mit dem Befehl bmctl nodeagent.
    • Fügen Sie bei einem neuen Cluster die Aktivierungsannotation und die entsprechenden Pfade für die Anmeldedaten vor dem Erstellen der Clusterkonfigurationsdatei hinzu.

Node-Agent bereitstellen

Mit dem Befehl bmctl nodeagent deploy wird der Node Agent-Dienst über SSH auf einem oder mehreren Zielknoten in einem angegebenen Cluster bereitgestellt. Mit diesem Befehl wird der Node Agent installiert oder neu installiert. Es stellt eine Verbindung über SSH her und führt die erforderlichen Schritte aus, einschließlich der Übertragung von Binärdateien, der optionalen Generierung und Übertragung von Zertifikaten und der Einrichtung des systemd-Dienstes. Dafür sind SSH-Zugriff und sudo-Berechtigungen auf den Zielknoten erforderlich.

Sie können Zielknoten auf verschiedene Arten angeben: direkt über das Flag --nodes, über eine Clusterkonfigurationsdatei mit dem Flag --cluster oder durch Verweis auf die benutzerdefinierte Clusterressource. Weitere Informationen zu den Befehlen und Optionen des Knoten-Agents finden Sie in der bmctl-Befehlsreferenz.

In einer neuen Umgebung bereitstellen

Laden Sie für die Ersteinrichtung die Binärdatei nodeagentd herunter und generieren Sie neue Zertifizierungsstellen (CAs). Mit dem folgenden Befehl wird die Knotenliste aus der Clusterkonfigurationsdatei abgerufen. Das Flag --sa-key stellt die erforderlichen Anmeldedaten zum Herunterladen der Binärdatei nodeagentd aus dem Cloud Storage-Bucket bereit.

  • Verwenden Sie den folgenden Befehl, um den Node-Agent zum ersten Mal in einem neuen Cluster bereitzustellen:

    bmctl nodeagent deploy \
        --pull-binaries=true \
        --generate-ca-creds=true \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH \
        --sa-key SERVICE_ACCOUNT_KEY_PATH
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • USERNAME: der Nutzername, für den der SSH-Zugriff auf Knoten konfiguriert ist. Standardmäßig ist SSH für root konfiguriert. Wenn Sie jedoch einen Anmeldenutzer festlegen, verwenden Sie diesen Nutzernamen.

    • SSH_KEY_PATH: der Pfad der privaten SSH-Schlüsseldatei.

    • SERVICE_ACCOUNT_KEY_PATH: der Pfad der Dienstkontoschlüsseldatei mit Berechtigungen zum Abrufen von Registry-Images. Standardmäßig ist dies die JSON-Schlüsseldatei für das Dienstkonto anthos-baremetal-gcr.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_deploy-20250819-175703/nodeagent_deploy.log
    [2025-08-19 17:57:03+0000] INFO: Executing 'nodeagent deploy'...
    [2025-08-19 17:57:05+0000] -------------------- Deployment Plan --------------------
    [2025-08-19 17:57:05+0000]   Target Cluster:            demo-cluster
    [2025-08-19 17:57:05+0000]   SSH User:                  root
    [2025-08-19 17:57:05+0000]   SSH Key:                   rootSSH
    [2025-08-19 17:57:05+0000]   Concurrency:               25
    [2025-08-19 17:57:05+0000]   Generate Credentials:      true
    [2025-08-19 17:57:05+0000]   Deploy Credentials:        true
    [2025-08-19 17:57:05+0000]   Server Cert Validity Days: 1825
    [2025-08-19 17:57:05+0000]   Verify SSH Host Keys:      true
    [2025-08-19 17:57:05+0000]   Node Agent pull version:   1.33.0-gke.799
    [2025-08-19 17:57:05+0000]   Target Nodes Source:       cluster YAML
    [2025-08-19 17:57:05+0000]   Nodes Port:                9192
    [2025-08-19 17:57:05+0000]   Target Nodes (4):          10.200.0.2, 10.200.0.3, 10.200.0.4, 10.200.0.5
    [2025-08-19 17:57:05+0000] ---------------------------------------------------------
    Proceed with deployment? [y/N]: y
    [2025-08-19 17:57:07+0000] INFO: User confirmed.
    [2025-08-19 17:57:07+0000] Downloading Node Agent binary (1.33.0-gke.799)... OK
    [2025-08-19 17:57:08+0000] INFO: Node Agent binary pulled and stored at bmctl-workspace/bins/nodeagentd
    [2025-08-19 17:57:08+0000] INFO: Starting generate credentials (CAs and client credentials) phase...
    [2025-08-19 17:57:08+0000] Generating credentials for the cluster: demo-cluster, 2025-08-19T17:57:08Z
    [2025-08-19 17:57:08+0000] ------------ Credentials Options ------------
    [2025-08-19 17:57:08+0000] Cluster Name:           demo-cluster
    [2025-08-19 17:57:08+0000] Key Algorithm:          rsa
    [2025-08-19 17:57:08+0000] Key Length:             4096
    [2025-08-19 17:57:08+0000] CA Validity (days):     3650
    [2025-08-19 17:57:08+0000] Client Validity (days): 1825
    [2025-08-19 17:57:08+0000] Server CA CN:           Node Agent Server CA
    [2025-08-19 17:57:08+0000] Client CA CN:           Node Agent Client CA
    [2025-08-19 17:57:08+0000] Creds path:             bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 17:57:08+0000] --------------------------------------------
    [2025-08-19 17:57:08+0000] Generating credentials... OK
    [2025-08-19 17:57:19+0000] Certificates have been created and stored in bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 17:57:19+0000] INFO: Attempting to load CAs from: bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 17:57:19+0000] INFO: Server CA loaded successfully. Subject: CN=Node Agent Server CA,O=GCD-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 17:57:19+0000] INFO: Client CA loaded successfully. Subject: CN=Node Agent Client CA,O=GCD-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 17:57:19+0000] ===============================================
    [2025-08-19 17:57:19+0000] --- Starting Artifact Preparation ---
    [2025-08-19 17:57:19+0000] Starting artifact preparation for 4 nodes (concurrency: 25)...
    [2025-08-19 17:57:23+0000] --- Finished Artifact Preparation ---
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.2
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.3
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.4
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.5
    [2025-08-19 17:57:23+0000] ===============================================
    [2025-08-19 17:57:23+0000] --- Starting Deployment Phase ---
    [2025-08-19 17:57:23+0000] INFO: Starting deployment to 4 nodes (Concurrency: 25)...
    [2025-08-19 17:57:36+0000] INFO: All host deployments finished.
    [2025-08-19 17:57:36+0000] INFO: --- Deployment Phase Completed Successfully ---
    [2025-08-19 17:57:36+0000]
    ===============================================
    --- Deployment Summary ---
      Host: 10.200.0.2, Status: SUCCESS
      Host: 10.200.0.3, Status: SUCCESS
      Host: 10.200.0.4, Status: SUCCESS
      Host: 10.200.0.5, Status: SUCCESS
    -----------------------------------------------
    Total Nodes Attempted: 4 | SUCCESS: 4 | FAILED: 0
    ===============================================
    

Upgrade der Node-Agent-Version durchführen

Upgrades des Knoten-Agents sind unabhängig von Clusterupgrades. Verwenden Sie zum Aktualisieren des Node-Agents den Befehl bmctl nodeagent deploy und setzen Sie --pull-binaries auf true. Wenn Sie ein Upgrade des Knoten-Agents durchführen, legen Sie --generate-ca-creds auf false fest, um vorhandene Zertifizierungsstellen zu verwenden, anstatt sie neu zu generieren. Wenn Sie Zertifizierungsstellen neu generieren, müssen Sie die entsprechenden Cluster-Anmeldedaten aktualisieren. Dieser Vorgang ist der Rotation von Anmeldedaten vorbehalten. Die Ausgabe ähnelt einer neuen Bereitstellung, jedoch ohne die von der Zertifizierungsstelle generierten Logs.

Beim Upgrade des Node-Agents wird der Node-Agent-Prozess neu gestartet, was laufende Jobs unterbrechen kann. Die meisten Jobs werden durch Wiederholungsmechanismen wiederhergestellt. Um potenzielle Unterbrechungen zu minimieren, führen Sie jedoch die folgenden Schritte aus:

  1. Achten Sie darauf, dass kein Clusterupgrade oder andere Konfigurationsaktivitäten nach der Installation ausgeführt werden.

  2. Prüfen Sie, ob der Cluster ausgeführt wird.

  3. Starten Sie das Upgrade des Knoten-Agents:

    bmctl nodeagent deploy \
        --pull-binaries=true \
        --generate-ca-creds=false \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH \
        --sa-key SERVICE_ACCOUNT_KEY_PATH
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • USERNAME: der Nutzername, für den der SSH-Zugriff auf Knoten konfiguriert ist. Standardmäßig ist SSH für root konfiguriert. Wenn Sie jedoch einen Anmeldenutzer festlegen, verwenden Sie diesen Nutzernamen.

    • SSH_KEY_PATH: der Pfad der privaten SSH-Schlüsseldatei.

    • SERVICE_ACCOUNT_KEY_PATH: der Pfad der Dienstkontoschlüsseldatei mit Berechtigungen zum Abrufen von Registry-Images. Standardmäßig ist dies die JSON-Schlüsseldatei für das Dienstkonto anthos-baremetal-gcr.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_deploy-20250819-180416/nodeagent_deploy.log
    [2025-08-19 18:04:16+0000] INFO: Executing 'nodeagent deploy'...
    [2025-08-19 18:04:18+0000] -------------------- Deployment Plan --------------------
    [2025-08-19 18:04:18+0000]   Target Cluster:            demo-cluster
    [2025-08-19 18:04:18+0000]   SSH User:                  root
    [2025-08-19 18:04:18+0000]   SSH Key:                   rootSSH
    [2025-08-19 18:04:18+0000]   Concurrency:               25
    [2025-08-19 18:04:18+0000]   Generate Credentials:      false
    [2025-08-19 18:04:18+0000]   Deploy Credentials:        true
    [2025-08-19 18:04:18+0000]   Server Cert Validity Days: 1825
    [2025-08-19 18:04:18+0000]   Verify SSH Host Keys:      true
    [2025-08-19 18:04:18+0000]   Node Agent pull version:   1.33.0-gke.799
    [2025-08-19 18:04:18+0000]   Target Nodes Source:       cluster YAML
    [2025-08-19 18:04:18+0000]   Nodes Port:                9192
    [2025-08-19 18:04:18+0000]   Target Nodes (4):          10.200.0.2, 10.200.0.3, 10.200.0.4, 10.200.0.5
    [2025-08-19 18:04:18+0000] ---------------------------------------------------------
    Proceed with deployment? [y/N]: y
    [2025-08-19 18:04:20+0000] INFO: User confirmed.
    [2025-08-19 18:04:20+0000] Downloading Node Agent binary (1.33.0-gke.799)... OK
    [2025-08-19 18:04:22+0000] INFO: Node Agent binary pulled and stored at bmctl-workspace/bins/nodeagentd
    [2025-08-19 18:04:22+0000] INFO: Attempting to load CAs from: bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:04:22+0000] INFO: Server CA loaded successfully. Subject: CN=Node Agent Server CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:04:22+0000] INFO: Client CA loaded successfully. Subject: CN=Node Agent Client CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:04:22+0000] ===============================================
    [2025-08-19 18:04:22+0000] --- Starting Artifact Preparation ---
    [2025-08-19 18:04:22+0000] Starting artifact preparation for 4 nodes (concurrency: 25)...
    

Auf bestimmten Knoten bereitstellen oder noch einmal bereitstellen

Wenn Sie Clusterknoten hinzufügen oder wiederherstellen, können Sie die Bereitstellung des Knoten-Agents auf die spezifischen Knoten beschränken, anstatt ihn auf allen Knoten im Cluster bereitzustellen. Mit dem Flag --nodes geben Sie den Knoten für die Bereitstellung an.

  • Verwenden Sie den folgenden Befehl, um den Node Agent auf bestimmten Knoten bereitzustellen:

    bmctl nodeagent deploy \
        --pull-binaries=true \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH \
        --sa-key SERVICE_ACCOUNT_KEY_PATH \
        --nodes NODE_IP_ADDRESS_LIST
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • USERNAME: der Nutzername, für den der SSH-Zugriff auf Knoten konfiguriert ist. Standardmäßig ist SSH für root konfiguriert. Wenn Sie jedoch einen Anmeldenutzer festlegen, verwenden Sie diesen Nutzernamen.

    • SSH_KEY_PATH: der Pfad der privaten SSH-Schlüsseldatei.

    • SERVICE_ACCOUNT_KEY_PATH: der Pfad der Dienstkontoschlüsseldatei mit Berechtigungen zum Abrufen von Registry-Images. Standardmäßig ist dies die JSON-Schlüsseldatei für das Dienstkonto anthos-baremetal-gcr.

    • NODE_IP_ADDRESS_LIST: eine durch Kommas getrennte Liste der IP-Adressen der Knoten, auf denen Sie den Node Agent bereitstellen.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_deploy-20250819-181751/nodeagent_deploy.log
    [2025-08-19 18:17:51+0000] INFO: Executing 'nodeagent deploy'...
    [2025-08-19 18:17:54+0000] -------------------- Deployment Plan --------------------
    [2025-08-19 18:17:54+0000]   Target Cluster:            demo-cluster
    [2025-08-19 18:17:54+0000]   SSH User:                  user
    [2025-08-19 18:17:54+0000]   SSH Key:                   SSH_KEY_PATH
    [2025-08-19 18:17:54+0000]   Concurrency:               25
    [2025-08-19 18:17:54+0000]   Generate Credentials:      false
    [2025-08-19 18:17:54+0000]   Deploy Credentials:        true
    [2025-08-19 18:17:54+0000]   Server Cert Validity Days: 1825
    [2025-08-19 18:17:54+0000]   Verify SSH Host Keys:      true
    [2025-08-19 18:17:54+0000]   Node Agent pull version:   1.33.0-gke.799
    [2025-08-19 18:17:54+0000]   Target Nodes Source:       nodes flag
    [2025-08-19 18:17:54+0000]   Nodes Port:                9192
    [2025-08-19 18:17:54+0000]   Target Nodes (3):          10.200.0.2, 10.200.0.3
    [2025-08-19 18:17:54+0000] ---------------------------------------------------------
    Proceed with deployment? [y/N]:
    

Eine vollständige Liste der bmctl nodeagent deploy-Befehlsoptionen finden Sie unter nodeagent deploy in der bmctl-Befehlsreferenz.

Knoten-Agent aktivieren

Mit dem Befehl enable wird der Node Agent-Modus in einem vorhandenen laufenden Cluster aktiviert, nachdem Sie den Node Agent auf allen Knoten im Cluster bereitgestellt haben. Mit diesem Befehl werden auch die Anmeldedaten des Knoten-Agents im Cluster erstellt oder aktualisiert.

Node Agent für einen vorhandenen laufenden Cluster aktivieren

Sie können den Node Agent auf vorhandenen Clustern der Version 1.33 und höher aktivieren.

So aktivieren Sie den Knoten-Agent für einen vorhandenen Cluster:

  1. Aktivieren Sie den Knoten-Agent im Cluster:

    ./bmctl nodeagent enable \
        --kubeconfig KUBECONFIG \
        --cluster CLUSTER_NAME \
        --namespace CLUSTER_NAMESPACE \
        --ensure-status=true
    

    Ersetzen Sie Folgendes:

    • KUBECONFIG: der Pfad der kubeconfig-Datei für den Cluster, für den Sie den Node Agent aktivieren.

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • CLUSTER_NAMESPACE: Der Namespace des Clusters, der verwendet werden soll, um den Zielcluster und die Clusteranmeldedaten zu finden und die Clusterressource zu aktualisieren. Die Standardeinstellung ist cluster-<CLUSTER-NAME>.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_enable-20250819-183058/nodeagent_enable.log
    [2025-08-19 18:30:58+0000] Enable Node Agent for cluster: demo-cluster
    [2025-08-19 18:31:00+0000] Update Node Agent credentials
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Server CA certificate path: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_cert.pem
    [2025-08-19 18:31:00+0000] Server CA private key path: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_key.pem
    [2025-08-19 18:31:00+0000] Client CA certificate path: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_cert.pem
    [2025-08-19 18:31:00+0000] Client CA private key path: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_key.pem
    [2025-08-19 18:31:00+0000] Client certificate path: bmctl-workspace/demo-cluster/nodeagent-creds/client_cert.pem
    [2025-08-19 18:31:00+0000] Client private key path: bmctl-workspace/demo-cluster/nodeagent-creds/client_key.pem
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Node Agent client credentials secret has been created/updated
    [2025-08-19 18:31:00+0000] Node Agent server CA secret has been created/updated
    [2025-08-19 18:31:00+0000] Node Agent client CA secret has been created/updated
    [2025-08-19 18:31:00+0000] Successfully created/updated Node Agent credentials secrets in namespace cluster-demo-cluster
    [2025-08-19 18:31:00+0000] Annotation 'baremetal.cluster.gke.io/node-agent-port' not found on cluster cluster-demo-cluster/demo-cluster, no removal needed.
    [2025-08-19 18:31:00+0000] Successfully enable Node Agent for cluster: demo-cluster
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 18:31:00+0000] --------------------- Total nodes: 3 ----------------------
    [2025-08-19 18:31:00+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1577
    [2025-08-19 18:31:00+0000] node: control-1--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1578
    [2025-08-19 18:31:00+0000] node: control-2--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1581
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Verified Node Agent status on all nodes in cluster
    
  2. Fügen Sie die Annotation zum Aktivieren des Knoten-Agents im Abschnitt mit den Clustermetadaten der Clusterkonfigurationsdatei ein:

    kind: Cluster
    metadata:
      annotations:
        baremetal.cluster.gke.io/enable-node-agent: ""
    

Neuen Cluster installieren

Sie können den Node Agent verwenden, wenn Sie Cluster der Version 1.33 und höher erstellen.

So verwenden Sie den Knoten-Agent für einen neuen Cluster:

  1. Fügen Sie für einen neuen Administratorcluster die folgenden Pfade für die Datei mit den Anmeldedaten im oberen Abschnitt der Konfigurationsdatei für den Administratorcluster hinzu:

    nodeAgentServerCACertificatePath: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_cert.pem
    nodeAgentServerCAPrivateKeyPath: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_key.pem
    nodeAgentClientCACertificatePath: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_cert.pem
    nodeAgentClientCAPrivateKeyPath: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_key.pem
    nodeAgentClientCertificatePath: bmctl-workspace/demo-cluster/nodeagent-creds/client_cert.pem
    nodeAgentClientPrivateKeyPath: bmctl-workspace/demo-cluster/nodeagent-creds/client_key.pem
    
  2. Fügen Sie die Annotation zum Aktivieren des Knoten-Agents im Abschnitt mit den Clustermetadaten der Clusterkonfigurationsdatei ein:

    kind: Cluster
    metadata:
      annotations:
        baremetal.cluster.gke.io/enable-node-agent: ""
    
  3. Folgen Sie der Standardanleitung zum Erstellen des Clusters.

Eine vollständige Liste der Optionen für den Befehl bmctl nodeagent enable finden Sie unter nodeagent enable in der bmctl-Befehlsreferenz.

Anmeldedaten rotieren

Mit dem Befehl rotate-credentials werden die Anmeldedaten des Knoten-Agents sowohl auf den Knoten als auch im Cluster rotiert. Dazu gehört auch die Möglichkeit, die Zertifizierungsstellen (CAs) zu rotieren. Das Flag --generate-ca-creds weist den Befehl an, die Zertifizierungsstellen neu zu generieren und diese neu generierten Zertifizierungsstellen zum Signieren der Zertifikate für den Server (Knoten) und den Client (Controller) zu verwenden.

  • Verwenden Sie den folgenden Befehl, um Anmeldedaten zu rotieren und neue CAs zu generieren und zu verwenden:

    bmctl nodeagent rotate-credentials \
        --kubeconfig KUBECONFIG \
        --generate-ca-creds=true \
        --cluster CLUSTER_NAME \
        --namespace CLUSTER_NAMESPACE \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH
    

    Ersetzen Sie Folgendes:

    • KUBECONFIG: der Pfad der kubeconfig-Datei für den Cluster, für den Sie den Node Agent aktivieren.

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • CLUSTER_NAMESPACE: Der Namespace des Clusters, der verwendet werden soll, um den Zielcluster und die Clusteranmeldedaten zu finden und die Clusterressource zu aktualisieren. Die Standardeinstellung ist cluster-<CLUSTER-NAME>.

    • USERNAME: der Nutzername, für den der SSH-Zugriff auf Knoten konfiguriert ist. Standardmäßig ist SSH für root konfiguriert. Wenn Sie jedoch einen Anmeldenutzer festlegen, verwenden Sie diesen Nutzernamen.

    • SSH_KEY_PATH: der Pfad der privaten SSH-Schlüsseldatei.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_rotate_credentials-20250819-184216/nodeagent_rotate_credentials.log
    [2025-08-19 18:42:16+0000] INFO: Executing 'nodeagent rotate-credentials'...
    [2025-08-19 18:42:18+0000] ------------------- Credentials Rotation  -------------------
    [2025-08-19 18:42:18+0000]   Target Cluster:            demo-cluster
    [2025-08-19 18:42:18+0000]   SSH User:                  root
    [2025-08-19 18:42:18+0000]   SSH Key:                   rootSSH
    [2025-08-19 18:42:18+0000]   Concurrency:               25
    [2025-08-19 18:42:18+0000]   Generate Credentials:      true
    [2025-08-19 18:42:18+0000]   Deploy Credentials:        true
    [2025-08-19 18:42:18+0000]   Server Cert Validity Days: 1825
    [2025-08-19 18:42:18+0000]   Verify SSH Host Keys:      true
    [2025-08-19 18:42:18+0000]   Target Nodes Source:       cluster CR
    [2025-08-19 18:42:18+0000]   Nodes Port:                9192
    [2025-08-19 18:42:18+0000]   Target Nodes (3):          10.200.0.2, 10.200.0.3, 10.200.0.4
    [2025-08-19 18:42:18+0000] ---------------------------------------------------------
    Proceed with credentials rotation? [y/N]: [2025-08-19 18:42:18+0000] INFO: Non-interactive mode enabled; automatically confirming.
    [2025-08-19 18:42:18+0000] INFO: Starting generate credentials (CAs and client credentials) phase...
    [2025-08-19 18:42:18+0000] Generating credentials for the cluster: demo-cluster, 2025-08-19T18:42:18Z
    [2025-08-19 18:42:18+0000] ------------ Credentials Options ------------
    [2025-08-19 18:42:18+0000] Cluster Name:           demo-cluster
    [2025-08-19 18:42:18+0000] Key Algorithm:          rsa
    [2025-08-19 18:42:18+0000] Key Length:             4096
    [2025-08-19 18:42:18+0000] CA Validity (days):     3650
    [2025-08-19 18:42:18+0000] Client Validity (days): 1825
    [2025-08-19 18:42:18+0000] Server CA CN:           Node Agent Server CA
    [2025-08-19 18:42:18+0000] Client CA CN:           Node Agent Client CA
    [2025-08-19 18:42:18+0000] Creds path:             bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:42:18+0000] --------------------------------------------
    [2025-08-19 18:42:18+0000] Generating credentials... OK
    Credential directory 'bmctl-workspace/demo-cluster/nodeagent-creds' already exists. Do you want to back it up and continue? (y/N): y
    [2025-08-19 18:42:27+0000] INFO: User confirmed.
    [2025-08-19 18:42:27+0000] Credentials backup to bmctl-workspace/demo-cluster/nodeagent-creds_backup_20250819_184227
    [2025-08-19 18:42:27+0000] Certificates have been created and stored in bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:42:27+0000] INFO: Attempting to load CAs from: bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:42:27+0000] INFO: Server CA loaded successfully. Subject: CN=Node Agent Server CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:42:27+0000] INFO: Client CA loaded successfully. Subject: CN=Node Agent Client CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:42:27+0000] ===============================================
    [2025-08-19 18:42:34+0000] INFO: All host deployments finished.
    [2025-08-19 18:42:34+0000] INFO: --- Deployment Phase Completed Successfully ---
    [2025-08-19 18:42:34+0000]
    ===============================================
    --- Deployment Summary ---
      Host: 10.200.0.2, Status: SUCCESS
      Host: 10.200.0.3, Status: SUCCESS
      Host: 10.200.0.4, Status: SUCCESS
    -----------------------------------------------
    Total Nodes Attempted: 3 | SUCCESS: 3 | FAILED: 0
    ===============================================
    

Eine vollständige Liste der bmctl nodeagent rotate-credentials-Befehlsoptionen finden Sie unter nodeagent rotate-credentials in der bmctl-Befehlsreferenz.

Status prüfen

Der Befehl status liefert Informationen zum Ausführungsstatus des Knoten-Agents auf Knoten. Sie können Zielknoten direkt über das Flag --nodes, über eine Clusterkonfigurationsdatei mit dem Flag --cluster oder durch Verweis auf die benutzerdefinierte Ressource des Clusters angeben.

Wenn Sie Knoten aus einer Clusterkonfigurationsdatei oder dem Flag --nodes abrufen, ruft das System Anmeldedaten aus dem lokalen Dateisystem ab. Wenn die Knotenquelle eine benutzerdefinierte Clusterressource ist, ruft das System die Anmeldedaten vom Cluster ab.

Die folgende Rangfolge bestimmt den Node Agent-Port:

  1. --port Flag
  2. kubeconfig-Datei
  3. Cluster-Konfigurationsdatei

Status des Knoten-Agents prüfen

Mit dem Flag --cluster können Sie den Status des Knoten-Agents anhand der Angaben in der Clusterkonfigurationsdatei prüfen.

  • Verwenden Sie den folgenden Befehl, um den Status des Node-Agents anhand der Clusterkonfigurationsdatei zu prüfen:

    ./bmctl nodeagent status \
        --cluster CLUSTER_NAME \
        --namespace CLUSTER_NAMESPACE
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name des Clusters, den Sie prüfen.

    • CLUSTER_NAMESPACE: Der Namespace des Clusters, der verwendet werden soll, um den Zielcluster und die Clusteranmeldedaten zu finden und die Clusterressource zu aktualisieren. Die Standardeinstellung ist cluster-<CLUSTER-NAME>.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_status-20250819-205707/nodeagent_status.log
    [2025-08-19 20:57:07+0000] Check Node Agent for cluster: demo-cluster
    [2025-08-19 20:57:09+0000] ----------------------------------------------------------
    [2025-08-19 20:57:09+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 20:57:09+0000] Target Nodes Source: cluster YAML
    [2025-08-19 20:57:09+0000] --------------------- Total nodes: 4 ----------------------
    [2025-08-19 20:57:09+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1175
    [2025-08-19 20:57:09+0000] node: control-1--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1174
    [2025-08-19 20:57:09+0000] node: control-2--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1176
    [2025-08-19 20:57:09+0000] node: worker-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1179
    [2025-08-19 20:57:09+0000] ----------------------------------------------------------
    [2025-08-19 20:57:09+0000] Verified Node Agent status on all nodes in cluster
    

Status des Knoten-Agents im Cluster prüfen

Mit dem Flag --cluster zusammen mit dem Flag --kubeconfig können Sie den Status des Node Agent anhand der benutzerdefinierten Clusterressource prüfen.

  • Verwenden Sie den folgenden Befehl, um den Status des Knoten-Agents anhand der benutzerdefinierten Clusterressource zu prüfen:

    ./bmctl nodeagent status \
        --cluster CLUSTER_NAME \
        --kubeconfig KUBECONFIG
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • KUBECONFIG: der Pfad der kubeconfig-Datei für den Cluster, für den Sie den Node Agent aktivieren.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_status-20250819-205712/nodeagent_status.log
    [2025-08-19 20:57:12+0000] Check Node Agent for cluster: demo-cluster
    [2025-08-19 20:57:14+0000] ----------------------------------------------------------
    [2025-08-19 20:57:14+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 20:57:14+0000] Target Nodes Source: cluster CR
    [2025-08-19 20:57:14+0000] --------------------- Total nodes: 3 ----------------------
    [2025-08-19 20:57:14+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1180
    [2025-08-19 20:57:14+0000] node: control-1--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1179
    [2025-08-19 20:57:14+0000] node: control-2--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1180
    [2025-08-19 20:57:14+0000] ----------------------------------------------------------
    [2025-08-19 20:57:14+0000] Verified Node Agent status on all nodes in cluster
    

Status des Knoten-Agents von Knoten prüfen

Wenn Sie das Flag --cluster zusammen mit dem Flag --nodes verwenden, können Sie den Node Agent-Status für bestimmte Clusterknoten prüfen.

  • Verwenden Sie den folgenden Befehl, um den Status des Knoten-Agents für bestimmte Knoten zu prüfen:

    ./bmctl nodeagent status \
        --cluster CLUSTER_NAME \
        --nodes NODE_IP_ADDRESS_LIST
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.

    • NODE_IP_ADDRESS_LIST: eine durch Kommas getrennte Liste der IP-Adressen der Knoten, auf denen Sie den Node Agent bereitstellen.

    Die Befehlsausgabe sieht dann ungefähr so aus:

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_status-20250819-210050/nodeagent_status.log
    [2025-08-19 21:00:50+0000] Check Node Agent for cluster: demo-cluster
    [2025-08-19 21:00:53+0000] ----------------------------------------------------------
    [2025-08-19 21:00:53+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 21:00:53+0000] Target Nodes Source: nodes flag
    [2025-08-19 21:00:53+0000] --------------------- Total nodes: 1 ----------------------
    [2025-08-19 21:00:53+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1399
    [2025-08-19 21:00:53+0000] ----------------------------------------------------------
    [2025-08-19 21:00:53+0000] Verified Node Agent status on all nodes in cluster
    

Eine vollständige Liste der bmctl nodeagent status-Befehlsoptionen finden Sie unter nodeagent status in der bmctl-Befehlsreferenz.

SSH-Nutzerberechtigungen

Ein Nutzer ohne Root-Berechtigung kann den Befehl bmctl nodeagent ausführen. Dazu muss der Nutzer entweder vollständige sudo-Berechtigungen ohne Passwort oder eine explizite sudo-Zulassungsliste ohne Passwort haben.

Die explizite Sudo-Zulassungsliste ohne Passwort für den Knoten-Agent hat die folgenden Berechtigungen:

# Permission to create the necessary folders and set permissions.
/bin/mkdir -p /etc/nodeagentd
/bin/chmod 0755 /etc/nodeagentd
/bin/mkdir -p /usr/local/bin
/bin/chmod 0755 /usr/local/bin
/bin/mkdir -p /etc/systemd/system
/bin/chmod 0755 /etc/systemd/system

# Permission to place the main application executable and link it.
/bin/rm -f /usr/local/bin/nodeagentd-*
/bin/touch /usr/local/bin/nodeagentd-*
/bin/cp -f /home/deployer/.deploy_tmp_*/* /usr/local/bin/nodeagentd-*
/bin/chmod 0755 /usr/local/bin/nodeagentd-*
/bin/rm -f /usr/local/bin/nodeagentd
/bin/ln -s /usr/local/bin/nodeagentd-* /usr/local/bin/nodeagentd

# Permission to place configuration files in /etc/nodeagentd and set permissions.
/bin/rm -f /etc/nodeagentd/*
/bin/touch /etc/nodeagentd/*
/bin/cp -f /home/deployer/.deploy_tmp_*/* /etc/nodeagentd/*
/bin/chmod 0600 /etc/nodeagentd/*
/bin/chmod 0644 /etc/nodeagentd/*

# Permission to place the systemd unit file.
/bin/rm -f /etc/systemd/system/nodeagentd.service
/bin/touch /etc/systemd/system/nodeagentd.service
/bin/cp -f /home/deployer/.deploy_tmp_*/* /etc/systemd/system/nodeagentd.service
/bin/chmod 0644 /etc/systemd/system/nodeagentd.service

# Permission to interact with systemd service.
/bin/systemctl daemon-reload
/bin/systemctl stop nodeagentd
/bin/systemctl start nodeagentd
/bin/systemctl enable --now nodeagentd

# Permission to remove the temporary files used for the deployment.
/bin/rm -f /home/deployer/.deploy_tmp_*/*

SSH-Hostschlüsselprüfung

Achten Sie darauf, dass alle Knoten der Datei known_hosts auf der Administrator-Workstation hinzugefügt wurden. Deaktivieren Sie andernfalls die Hostschlüsselprüfung während der Bereitstellung (nodeagent deploy) und der Rotation von Anmeldedaten (nodeagent rotate-credentials) mit dem Flag --enforce-host-key-verify=false.

Node Agent-Port anpassen

Der Node Agent ermöglicht die Anpassung von Ports. Geben Sie diesen benutzerdefinierten Port während der Bereitstellung mit dem Flag --port an. Dadurch wird die Einstellung an die Node Agent-Konfiguration auf jedem Knoten weitergegeben. Der benutzerdefinierte Port muss mit der clientseitigen Konfiguration übereinstimmen, wie in den folgenden Methoden beschrieben.

Für vorhandene Cluster

Wenn Sie einen vorhandenen, laufenden Cluster aktualisieren möchten, verwenden Sie das Flag --port, um den neuen benutzerdefinierten Port anzugeben. Diese Einstellung wird an die Clients (Controller) weitergegeben.

Für neue Cluster

Fügen Sie beim Erstellen eines neuen Clusters die folgende Annotation zur Clusterkonfiguration hinzu, um einen benutzerdefinierten Port für den Knoten-Agent anzugeben:

kind: Cluster
metadata:
  annotations:
    baremetal.cluster.gke.io/node-agent-port: "10086"

Lokale Speicherkapazität für Node Agent-Sicherungen erhöhen

Damit Sie eine Sicherungsdatei für Knoten des Knoten-Agents erstellen können, müssen im Verzeichnis /tmp auf dem Administrator-Knoten und allen Zielknoten 12 GB freier Speicherplatz vorhanden sein. Wenn Sie die Größe des Verzeichnisses /tmp für Ihre Zielknoten nicht ändern können, lesen Sie den Abschnitt Lokale Speicherkapazität für Zielknoten ändern. Wenn Sie die Größe des Verzeichnisses /tmp für den Admin-Knoten nicht ändern können, finden Sie weitere Informationen unter Lokale Speicherkapazität für einen Admin-Knoten ändern.

Lokale Speicherkapazität für Zielknoten ändern

Wenn Sie die Partitionsgröße /tmp des Zielknotens nicht ändern können, können Sie den temporären Ordner auf eine Partition mit mehr Kapazität umleiten. Wenden Sie dazu eine systemd-Umgebungsüberschreibung an:

  1. Erstellen Sie unter /etc/systemd/system/nodeagentd.service.d/override.conf eine systemd-Überschreibungsdatei mit folgendem Inhalt:

    [Service]
    Environment="TMPDIR=/var/tmp"
    
  2. Wenden Sie die Konfiguration an und starten Sie den Dienst neu:

    sudo systemctl daemon-reload
    sudo systemctl restart nodeagentd
    

Lokale Speicherkapazität für einen Admin-Knoten ändern

Wenn auf der Administrator-Workstation, auf der bmctl ausgeführt wird, nur begrenzt Speicherplatz für die Partition /tmp verfügbar ist, legen Sie die Variable TMPDIR lokal fest, wenn Sie eine Sicherung starten:

  TMPDIR=/var/tmp bmctl backup cluster -c CLUSTER_NAME --kubeconfig KUBECONFIG

Ersetzen Sie Folgendes:

  • CLUSTER_NAME: der Name des Clusters, auf dessen Knoten Sie den Node Agent bereitstellen möchten.
  • KUBECONFIG: der Pfad der kubeconfig-Datei für den Cluster, für den Sie den Node Agent aktivieren.

Leistung

Die Bereitstellung und Aktivierung sind in weniger als einer Minute abgeschlossen. Die Laufzeit der Rotation von Anmeldedaten ist mit der einer Standardbereitstellung vergleichbar oder schneller.