Freigeben über


Zugriff auf einen privaten Azure Kubernetes Service (AKS)-Cluster über die Befehlsaufruf- oder „Run“-Befehlsfunktion

Wenn Sie auf einen privaten AKS-Cluster zugreifen, müssen Sie sich mit dem Cluster über das virtuelle Clusternetzwerk, ein gepeertes Netzwerk oder einen konfigurierten privaten Endpunkt verbinden. Diese Ansätze erfordern die Konfiguration eines VPN, ExpressRoute, die Bereitstellung einer Jumpbox innerhalb des virtuellen Netzwerks des Clusters oder die Erstellung eines privaten Endpunkts innerhalb eines anderen virtuellen Netzwerks.

Bei Verwendung der Azure CLI können Sie mit command invoke auf private Cluster zugreifen, ohne ein VPN oder ExpressRoute konfigurieren zu müssen. Mit command invoke können Sie über die Azure-API Befehle wie kubectl und helm remote für Ihren privaten Cluster aufrufen, ohne eine direkte Verbindung mit dem Cluster herzustellen. Die Aktionen Microsoft.ContainerService/managedClusters/runcommand/action und Microsoft.ContainerService/managedclusters/commandResults/read steuern die Berechtigungen für die Verwendung von command invoke.

Wenn Sie das Azure-Portal nutzen, können Sie mit dem Run command-Feature Befehle für Ihren privaten Cluster ausführen. Das Run command-Feature verwendet dieselbe command invoke-Funktionalität zum Ausführen von Befehlen für Ihren Cluster.

Der vom Run command erstellte Pod stellt kubectl und helm für den Betrieb Ihres Clusters bereit. jq, xargs, grep und awk stehen für Bash-Support zur Verfügung.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Ressourcen und Berechtigungen verfügen:

  • Ein vorhandener privater Cluster. Wenn Sie noch keinen haben, lesen Sie die Informationen zum Erstellen eines privaten AKS-Clusters.
  • Die Azure CLI, Version 2.24.0 oder höher. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
  • Zugriff auf die Rollen Microsoft.ContainerService/managedClusters/runcommand/action und Microsoft.ContainerService/managedclusters/commandResults/read im Cluster.

Einschränkungen

Dieses Feature wurde entwickelt, um den Clusterzugriff zu vereinfachen und ist nicht für den programmgesteuerten Zugriff konzipiert. Wenn ein Programm Kubernetes unter Verwendung von Run commandaufruft, gibt es die folgenden Nachteile:

  • Sie erhalten nur exitCode und Textausgabe, und Details auf API-Ebene gehen verloren.
  • Ein zusätzlicher Hop führt zu zusätzlichen Fehlerpunkten.

Der von der Run command erstellte Pod ist hartcodiert mit einer 200m CPU- und 500Mi memory-Anforderung und einem 500m CPU- und 1Gi memory-Limit. In seltenen Fällen, in denen der gesamte Knoten voll ist, kann der Pod nicht innerhalb der ARM-API-Einschränkung von 60 Sekunden eingeplant werden. Dies bedeutet, dass die Run command fehlschlagen würde, auch wenn sie für die automatische Skalierung konfiguriert ist.

command invoke führt die Befehle von Ihrem Cluster aus aus, sodass alle Befehle, die auf diese Weise ausgeführt werden, Ihren konfigurierten Netzwerkeinschränkungen und allen anderen konfigurierten Einschränkungen unterliegen. Vergewissern Sie sich, dass in Ihrem Cluster genügend Knoten und Ressourcen vorhanden sind, um diesen Befehls-Pod zu planen.

Hinweis

Die Ausgabe für command invoke ist auf eine Größe von 512kB beschränkt.

Ausführen von Befehlen für Ihren AKS-Cluster

Verwenden Sie command invoke zum Ausführen eines einzelnen Befehls.

  • Führen Sie mithilfe des Befehls az aks command invoke --command einen Befehl in Ihrem Cluster aus. Im folgenden Beispielbefehl wird der Befehl kubectl get pods -n kube-system im Cluster myPrivateCluster in myResourceGroup ausgeführt.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl get pods -n kube-system"
    

Verwenden Sie command invoke zum Ausführen mehrerer Befehle.

  • Führen Sie mit dem Befehl az aks command invoke --command mehrere Befehle in Ihrem Cluster aus. Im folgenden Beispielbefehl werden drei helm-Befehle im Cluster myPrivateCluster in myResourceGroup ausgeführt.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
    

Verwenden Sie command invoke, um Befehle mit einer angefügten Datei oder einem angefügten Verzeichnis auszuführen.

  • Führen Sie Befehle mit einer angefügten Datei oder einem angefügten Verzeichnis aus, indem Sie den Befehl az aks command invoke --command mit dem Parameter --file verwenden. Im folgenden Beispielbefehl wird kubectl apply -f deployment.yaml -n default im Cluster myPrivateCluster in myResourceGroup ausgeführt. Die Datei deployment.yaml wird aus dem aktuellen Verzeichnis auf dem Entwicklungscomputer angefügt, auf dem az aks command invoke ausgeführt wurde.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Verwenden Sie command invoke, um Befehle mit allen angefügten Dateien im aktuellen Verzeichnis auszuführen

  • Führen Sie Befehle mit allen angefügten Dateien im aktuellen Verzeichnis mithilfe des Befehls az aks command invoke --command mit dem Parameter --file aus. Im folgenden Beispielbefehl wird kubectl apply -f deployment.yaml configmap.yaml -n default im Cluster myPrivateCluster in myResourceGroup ausgeführt. Die Dateien deployment.yaml und configmap.yaml sind Teil des aktuellen Verzeichnisses auf dem Entwicklungscomputer, auf dem az aks command invoke ausgeführt wurde.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \
      --file .
    

Problembehandlung

Weitere Informationen zu den häufigsten Problemen mit az aks command invoke und Schritte zu ihrer Behebung finden Sie unter Beheben von az aks command invoke-Fehlern.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie auf einen privaten Cluster zugreifen und Befehle für diesen Cluster ausführen. Weitere Informationen zu AKS-Clustern finden Sie in den folgenden Artikeln: