Freigeben über


Herstellen einer Verbindung mit dem Azure Operator Nexus Kubernetes-Cluster

Im Laufe des gesamten Lebenszyklus Ihres Azure Operator Nexus Kubernetes-Clusters müssen Sie irgendwann einmal direkt auf einen Clusterknoten zugreifen. Dieser Zugriff kann zur Wartung, Protokollsammlung oder für Vorgänge der Problembehandlung erforderlich sein. Sie greifen über eine Authentifizierung, deren Methoden je nach Verbindungsmethode variieren, auf Knoten zu. Die sichere Authentifizierung bei Clusterknoten erfolgt über zwei Optionen, die in diesem Artikel besprochen werden. Aus Sicherheitsgründen werden Clusterknoten nicht im Internet verfügbar gemacht. Um eine direkte Verbindung mit Clusterknoten herzustellen, müssen Sie entweder kubectl debug oder die IP-Adresse des Hosts aus einer Jumpbox verwenden.

Voraussetzungen

  • Ein Azure Operator Nexus Kubernetes-Cluster, der in einer Ressourcengruppe in Ihrem Azure-Abonnement bereitgestellt wird.
  • Privater SSH-Schlüssel für die Clusterknoten.
  • Damit Sie SSH mit der Knoten-IP-Adresse verwenden können, müssen Sie eine Jumpbox-VM im gleichen CNI-Netzwerk (Container Network Interface) wie die Clusterknoten bereitstellen.

Zugriff auf Clusterknoten über Azure Arc für Server

Mit dem Befehl az ssh arc kann remote auf eine Cluster-VM zugegriffen werden, die mit Azure Arc verbunden wurde. Diese Methode ist eine sichere Art und Weise, direkt über die Befehlszeile mit SSH eine Verbindung mit dem Clusterknoten herzustellen, sodass sie eine schnelle und effiziente Methode für die Remoteverwaltung darstellt.

Hinweis

Operator Nexus Kubernetes-Clusterknoten sind standardmäßig übe Arc verbundene Server.

  1. Legen Sie die erforderlichen Variablen fest. Ersetzen Sie die Platzhalter durch die tatsächlichen Werte, die für Ihre Azure-Umgebung und den Nexus Kubernetes-Cluster relevant sind.

    RESOURCE_GROUP="myResourceGroup" # Resource group where the Nexus Kubernetes cluster is deployed
    CLUSTER_NAME="myNexusK8sCluster" # Name of the Nexus Kubernetes cluster
    SUBSCRIPTION_ID="<Subscription ID>" # Azure subscription ID
    ADMIN_USERNAME="azureuser" # Username for the cluster administrator (--admin-username parameter value used during cluster creation)
    SSH_PRIVATE_KEY_FILE="<vm_ssh_id_rsa>" # Path to the SSH private key file
    MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --output tsv --query managedResourceGroupConfiguration.name)
    
  2. Rufen Sie die Namen der verfügbaren Clusterknoten ab.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
    
  3. Beispielausgabe:

    "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs"
    "mynexusk8scluster-0b32128d-control-plane-qq5jm"
    
  4. Legen Sie den Clusterknotennamen auf die Variable VM_NAME fest.

    VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    
  5. Führen Sie den folgenden Befehl aus, um sich per SSH in den Clusterknoten einzuwählen.

    az ssh arc --subscription $SUBSCRIPTION_ID \
        --resource-group $MANAGED_RESOURCE_GROUP \
        --name $VM_NAME \
        --local-user $ADMIN_USERNAME \
        --private-key-file $SSH_PRIVATE_KEY_FILE
    

Zugriff auf Knoten über die Kubernetes-API

Diese Methode erfordert die Verwendung des kubectl debug-Befehls. Diese Methode ist auf Container beschränkt und kann umfassendere Systemprobleme übersehen, im Gegensatz zu SSH (mit „az ssh arc“ oder direkter IP), das vollen Zugriff auf Knoten und Kontrolle bietet.

Zugriff auf die Kubernetes-API über Azure Arc für Kubernetes

Hinweis

Wenn Sie einen Nexus Kubernetes-Cluster erstellen, erstellt Nexus automatisch eine verwaltete Ressourcengruppe, die zum Speichern der Clusterressourcen bestimmt ist. Innerhalb dieser Gruppe wird die mit Arc verbundene Clusterressource eingerichtet.

Um auf Ihren Cluster zuzugreifen, müssen Sie die Clusterverbindung kubeconfig festlegen. Nachdem Sie sich mit der entsprechenden Microsoft Entra-Entität bei Azure CLI angemeldet haben, können Sie die kubeconfig abrufen, die notwendig ist, um von überall aus mit dem Cluster zu kommunizieren, sogar außerhalb der Firewall, die ihn umgibt.

  1. Legen Sie die Variablen CLUSTER_NAME, RESOURCE_GROUP und SUBSCRIPTION_ID fest.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Abfragen einer verwalteten Ressourcengruppe mit az und Speichern in MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Der folgende Befehl startet einen connectedk8s-Proxy, mit dem Sie mit dem Kubernetes-API-Server für den angegebenen Nexus Kubernetes-Cluster eine Verbindung herstellen können.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Verwenden Sie kubectl, um Anforderungen an den Cluster zu senden:

    kubectl get pods -A
    

    Sie sollten jetzt eine Antwort des Clusters sehen, die die Liste aller Knoten enthält.

Hinweis

Wenn Sie die Fehlermeldung „Zugriffstoken konnte nicht für den Client proxyFailed veröffentlicht werden, um eine Verbindung mit MSI herzustellen“ sehen, müssen Sie möglicherweise ein az login durchführen, um sich erneut bei Azure zu authentifizieren.

Zugriff auf Clusterknoten über Azure Arc für Kubernetes

Sobald Sie über Arc für Kubernetes mit einem Cluster verbunden sind, können Sie mit dem Befehl kubectl debug eine Verbindung mit einzelnen Kubernetes-Knoten herstellen, um einen privilegierten Container auf Ihrem Knoten auszuführen.

  1. Auflisten der Knoten in Ihrem Nexus Kubernetes-Cluster:

    $> kubectl get nodes
    NAME                                             STATUS   ROLES           AGE    VERSION
    mynexusk8scluster-0b32128d-agentpool1-md-7h9t4   Ready    <none>          125m   v1.24.9
    mynexusk8scluster-0b32128d-agentpool1-md-c6xbs   Ready    <none>          125m   v1.24.9
    mynexusk8scluster-0b32128d-control-plane-qq5jm   Ready    <none>          124m   v1.24.9
    
  2. Starten Sie einen privilegierten Container auf Ihrem Knoten und stellen Sie eine Verbindung damit her:

    $> kubectl debug node/mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 -it --image=mcr.microsoft.com/cbl-mariner/base/core:2.0
    Creating debugging pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg with container debugger on node mynexusk8scluster-0b32128d-agentpool1-md-7h9t4.
    If you don't see a command prompt, try pressing enter.
    root [ / ]#
    

    Dieser privilegierte Container gewährt Zugriff auf den Knoten. Führen Sie Befehle auf dem Clusterknoten aus, indem Sie chroot /host an der Befehlszeile ausführen.

  3. Wenn Sie mit einem Debugpod fertig sind, geben Sie den Befehl exit ein, um die interaktive Shellsitzung zu beenden. Stellen Sie sicher, dass Sie den Pod löschen, nachdem Sie die Shell verlassen haben:

    kubectl delete pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg 
    

Erstellen einer interaktiven Shellverbindung mit einem Knoten mithilfe der IP-Adresse

Herstellen einer Verbindung mit dem Clusterknoten über Azure Jumpbox

Eine weitere Option für eine sichere Verbindung mit einem Azure Operator Nexus Kubernetes-Clusterknoten besteht darin, von der Azure Jumpbox-VM aus einen direkten Zugang zum CNI-Netzwerk des Clusters einzurichten. Mit diesem Ansatz können Sie sich per SSH in die Clusterknoten einwählen und auch kubectl-Befehle mit Hilfe der Datei kubeconfig für den Cluster ausführen.

Wenden Sie sich an Ihren Netzwerkadministrator oder die Netzwerkadministratorin, um diese direkte Verbindung von Azure Jumpbox-VM mit dem CNI-Netzwerk des Clusters einzurichten.

Herstellen einer Verbindung mit dem Clusterknoten über lokale Jumpbox

Richten Sie dazu von Ihrer lokalen Jumpbox aus direkten Zugriff auf das CNI (Container Network Interface) des Clusters ein. Dieser direkte Zugriff ermöglicht Ihnen den SSH-Zugang zu den Cluster-Knoten und die Ausführung von kubectl-Befehlen über die Datei kubeconfig.

Wenden Sie sich an Ihre Netzwerkadmins, um diese direkte Verbindung zum CNI-Netzwerk des Clusters einzurichten.

IP-Adresse der Clusterknoten

Bevor Sie eine Verbindung zu den Clusterknoten herstellen können, müssen Sie die IP-Adresse der Knoten ermitteln. Die IP-Adresse der Knoten können Sie über das Azure-Portal oder die Azure CLI herausfinden.

Verwenden der Azure CLI

  1. Passen Sie die Variablen RESOURCE_GROUP, CLUSTER_NAME und SUBSCRIPTION_ID an Ihre Umgebung an.

    RESOURCE_GROUP="myResourceGroup"
    CLUSTER_NAME="myNexusK8sCluster"
    SUBSCRIPTION_ID="<Subscription ID>"
    
  2. Führen Sie den folgenden Befehl aus, um die IP-Adresse der Knoten zu ermitteln.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[] | select(any(.networkAttachments[]; .networkAttachmentName == "defaultcni")) | {name: .name, ipv4Address: (.networkAttachments[] | select(.networkAttachmentName == "defaultcni").ipv4Address)}'
    
  3. Hier sehen Sie ein Beispiel für die Ausgabe des Befehls.

    {
      "name": "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4",
      "ipv4Address": "10.5.54.47"
    }
    {
      "name": "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs",
      "ipv4Address": "10.5.54.48"
    }
    {
      "name": "mynexusk8scluster-0b32128d-control-plane-qq5jm",
      "ipv4Address": "10.5.54.46"
    }
    

Verwenden des Azure-Portals

Um die IP-Adresse der VM für SSH zu ermitteln, gehen Sie wie folgt vor:

  1. Rufen Sie das Azure-Portal auf und melden Sie sich mit Ihrem Benutzernamen und Kennwort an.
  2. Geben Sie „Kubernetes Cluster (Operator Nexus)“ in das Suchfeld ein und wählen Sie den Dienst „Kubernetes Cluster“ aus der Liste der Ergebnisse.

Screenshot: Durchsuchen des Nexus Kubernetes-Diensts

  1. Suchen Sie die spezifische Ressource „Nexus Kubernetes-Cluster“, die Sie benötigen, über die Suche.

Screenshot: Durchsuchen des Nexus Kubernetes-Clusters

  1. Wenn Sie die richtige Ressource gefunden haben, indem Sie ihren Namen mit dem Clusternamen abgleichen, wählen Sie die Ressource aus, um zur Startseite des „Kubernetes Clusters“ zu gelangen.

Screenshot: Homepage des Nexus Kubernetes-Clusters

  1. Sobald Sie die richtige Ressource gefunden haben, indem Sie ihren Namen mit dem Clusternamen abgleichen, gehen Sie im Menü links zum Abschnitt „Kubernetes Clusterknoten“.

Screenshot: Durchsuchen der Nexus Kubernetes-Clusterknoten

  1. Wählen Sie den Namen des Kubernetes-Knotens, der Sie interessiert, um seine Details anzuzeigen.
  2. Prüfen Sie die Registerkarte „Angebundene Netzwerke“, um die IP-Adresse des „Layer 3-Netzwerks“ des Knotens zu finden, das als CNI-Netzwerk verwendet wird.

Screenshot: Durchsuchen von Nexus Kubernetes Clusterknoten-Netzwerken

Nächste Schritte

Lesen Sie die folgenden Artikel, um mehr über den Azure Operator Nexus Kubernetes-Cluster zu erfahren.