Freigeben über


Herstellen einer Verbindung mit dem Azure Operator Nexus Kubernetes-Cluster

Während des gesamten Lebenszyklus Ihres Azure Operator Nexus Kubernetes-Clusters müssen Sie schließlich direkt auf einen Clusterknoten zugreifen. Dieser Zugriff kann für Wartungs-, Protokollsammlungs- oder Problembehandlungsvorgänge dienen. Sie greifen über die Authentifizierung auf einen Knoten zu, welche Methoden je nach Verbindungsmethode variieren. Sie authentifizieren sich sicher bei Clusterknoten über zwei optionen, die in diesem Artikel erläutert werden. Aus Sicherheitsgründen werden Clusterknoten nicht im Internet verfügbar gemacht. Um eine direkte Verbindung mit Clusterknoten herzustellen, müssen Sie stattdessen entweder kubectl debug oder die IP-Adresse des Hosts aus einem Jumpbox-Element 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.
  • Um SSH mit der Knoten-IP-Adresse zu verwenden, 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 az ssh arc Befehl können Benutzer remote auf eine Cluster-VM zugreifen, die mit Azure Arc verbunden wurde. Diese Methode ist eine sichere Methode, um SSH direkt über die Befehlszeile in den Clusterknoten zu integrieren, wodurch sie eine schnelle und effiziente Methode für die Remoteverwaltung ist.

Hinweis

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

  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 verfügbaren Clusterknotennamen 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 für SSH im Clusterknoten aus.

    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
    

Zugreifen auf Knoten mithilfe der Kubernetes-API

Für diese Methode ist die Verwendung des kubectl debug Befehls erforderlich. Diese Methode ist auf Container beschränkt und kann größere Systemprobleme verpassen, im Gegensatz zu SSH (unter Verwendung von "az ssh arc" oder direct IP), die vollständigen Knotenzugriff 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 in dieser Gruppe dient, wird die mit Arc verbundene Clusterressource eingerichtet.

Um auf Ihren Cluster zuzugreifen, müssen Sie die Clusterverbindung kubeconfigeinrichten. Nachdem Sie sich bei Azure CLI mit der relevanten Microsoft Entra-Entität angemeldet haben, können Sie die kubeconfig erforderliche Kommunikation mit dem Cluster von praktisch überall aus abrufen, auch außerhalb der Firewall, die sie 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. Abfrage verwalteter 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 eine Verbindung mit dem Kubernetes-API-Server für den angegebenen Nexus Kubernetes-Cluster herstellen können.

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

    kubectl get pods -A
    

    Nun sollte eine Antwort des Clusters mit der Liste aller Knoten angezeigt werden.

Hinweis

Wenn die Fehlermeldung "Fehler beim Bereitstellen des Zugriffstokens an den Client-Proxy. Verbindung mit MSI konnte nicht hergestellt werden" angezeigt wird, müssen Sie sich möglicherweise bei Azure neu 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 eine Verbindung mit einem einzelnen Kubernetes-Knoten herstellen, indem Sie den kubectl debug Befehl verwenden, 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 mit diesem 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 Debug-Pod fertig sind, geben Sie den exit Befehl ein, um die interaktive Shellsitzung zu beenden. Stellen Sie nach dem Beenden der Shell sicher, dass Sie den Pod löschen:

    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 Möglichkeit für eine sichere Verbindung mit einem Azure Operator Nexus Kubernetes-Clusterknoten besteht darin, einen direkten Zugriff auf das CNI-Netzwerk des Clusters über azure jumpbox VM einzurichten. Mit diesem Ansatz können Sie sich in die Clusterknoten per SSH einloggen, auch Befehle für den Cluster unter Verwendung der kubectl-Datei ausführenkubeconfig.

Wenden Sie sich an Ihren Netzwerkadministrator, um eine direkte Verbindung von azure jumpbox VM zum CNI-Netzwerk des Clusters einzurichten.

Herstellen einer Verbindung mit dem Clusterknoten über den lokalen Jumpbox

Richten Sie direkten Zugriff auf das CNI (Container Network Interface) des Clusters von Ihrem lokalen Jumpbox-Server ein. Mit diesem direkten Zugriff können Sie sich per SSH in die Clusterknoten einloggen und Befehle mithilfe der kubeconfig-Datei ausführen.

Wenden Sie sich an Ihren Netzwerkadministrator, um diese direkte Verbindung mit dem CNI-Netzwerk des Clusters einzurichten.

IP-Adresse der Clusterknoten

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

Verwenden Sie die Azure CLI

  1. Legen Sie die Variablen RESOURCE_GROUP, CLUSTER_NAME und SUBSCRIPTION_ID fest, damit sie zu Ihrer Umgebung passen.

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

    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 die Beispielausgabe 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

Führen Sie die folgenden Schritte aus, um die IP-Adresse des virtuellen Computers für SSH zu finden:

  1. Wechseln Sie zum Azure-Portal , und melden Sie sich mit Ihrem Benutzernamen und Kennwort an.
  2. Geben Sie im Suchfeld "Kubernetes Cluster (Operator Nexus)" ein, und wählen Sie den "Kubernetes Cluster"-Dienst aus der Ergebnisliste aus.

Screenshot vom Durchsuchen des Nexus Kubernetes-Dienstes.

  1. Suchen Sie nach der spezifischen "Nexus Kubernetes"-Clusterressource, die Sie für die Suche benötigen.

Screenshot des Browsens von Nexus Kubernetes-Cluster.

  1. Nachdem Sie die richtige Ressource gefunden haben, indem Sie ihren Namen mit dem Clusternamen übereinstimmen, wählen Sie die Ressource aus, um zur Startseite "Kubernetes Cluster" zu wechseln.

Screenshot der Homepage des Nexus Kubernetes-Clusters.

  1. Nachdem Sie die richtige Ressource gefunden haben, indem Sie ihren Namen mit dem Clusternamen übereinstimmen, wechseln Sie im linken Menü zum Abschnitt "Kubernetes Clusterknoten".

Screenshot des Durchsuchens der Nexus Kubernetes Clusterknoten.

  1. Wählen Sie den Namen des Kubernetes-Knotens aus, an dem Sie interessiert sind, um dessen Details anzuzeigen.
  2. Überprüfen Sie die Registerkarte "Angefügte Netzwerke", um die IP-Adresse des Knotens "Layer 3-Netzwerk" zu finden, das als CNI-Netzwerk verwendet wird.

Screenshot des Durchblätterns von Nexus Kubernetes Cluster-Nodennetzwerken.

Abrufen des alternativen Subjektnamens (Subject Alternative Name, SAN) für den Cluster

Führen Sie folgende Befehle aus, um die Liste der Subject Alternative Names (SAN) abzurufen, die vom Kubernetes API-Serverzertifikat akzeptiert werden. Greifen Sie zunächst auf den Steuerebenenknoten entweder mithilfe von Azure Arc für Server oder mithilfe der interaktiven Shell mithilfe der IP-Adresse zu. Dadurch erhalten Sie Zugriff auf das vom API-Server verwendete Zertifikat. Sie können den Inhalt des Zertifikats mithilfe des folgenden Befehls mit sudo-Berechtigungen überprüfen:

sudo openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

Jeder der SANs wird durch das Präfix "DNS:" identifiziert. Wählen Sie nur die SANs aus, die der angegebenen Benennungskonvention "<clusterName-resourceGroup><>" folgen, da dies im Vergleich zu anderen SANs wie "kubernetes.default.svc.cluster.local" eindeutig ist.

Nächste Schritte

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