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.
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)
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'
Beispielausgabe:
"mynexusk8scluster-0b32128d-agentpool1-md-7h9t4" "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs" "mynexusk8scluster-0b32128d-control-plane-qq5jm"
Legen Sie den Clusterknotennamen auf die Variable VM_NAME fest.
VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
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.
Legen Sie die Variablen
CLUSTER_NAME
,RESOURCE_GROUP
undSUBSCRIPTION_ID
fest.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Abfragen einer verwalteten Ressourcengruppe mit
az
und Speichern inMANAGED_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)
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 &
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.
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
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.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
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>"
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)}'
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:
- Rufen Sie das Azure-Portal auf und melden Sie sich mit Ihrem Benutzernamen und Kennwort an.
- Geben Sie „Kubernetes Cluster (Operator Nexus)“ in das Suchfeld ein und wählen Sie den Dienst „Kubernetes Cluster“ aus der Liste der Ergebnisse.
- Suchen Sie die spezifische Ressource „Nexus Kubernetes-Cluster“, die Sie benötigen, über die Suche.
- 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.
- Sobald Sie die richtige Ressource gefunden haben, indem Sie ihren Namen mit dem Clusternamen abgleichen, gehen Sie im Menü links zum Abschnitt „Kubernetes Clusterknoten“.
- Wählen Sie den Namen des Kubernetes-Knotens, der Sie interessiert, um seine Details anzuzeigen.
- 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.
Nächste Schritte
Lesen Sie die folgenden Artikel, um mehr über den Azure Operator Nexus Kubernetes-Cluster zu erfahren.