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
undMicrosoft.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 command
aufruft, 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 Befehlkubectl 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 dreihelm
-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 wirdkubectl apply -f deployment.yaml -n default
im Cluster myPrivateCluster in myResourceGroup ausgeführt. Die Dateideployment.yaml
wird aus dem aktuellen Verzeichnis auf dem Entwicklungscomputer angefügt, auf demaz 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 wirdkubectl apply -f deployment.yaml configmap.yaml -n default
im Cluster myPrivateCluster in myResourceGroup ausgeführt. Die Dateiendeployment.yaml
undconfigmap.yaml
sind Teil des aktuellen Verzeichnisses auf dem Entwicklungscomputer, auf demaz 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:
Azure Kubernetes Service