共用方式為


使用命令叫用或執行命令功能存取私人 Azure Kubernetes Service (AKS) 叢集

存取私人 AKS 叢集時,您必須從叢集虛擬網路、對等互連網路或已設定的私人端點連線到叢集。 這些方式需要設定 VPN、Express Route、在叢集虛擬網路內部署 jumpbox,或在另一個虛擬網路內建立私人端點。

透過 Azure CLI,您可以使用 command invoke 來存取私人叢集,而不需要設定 VPN 或 Express Route。 command invoke 可讓您透過 Azure API 在私人叢集上遠端叫用 kubectlhelm 這類命令,而不需要直接連線至叢集。 Microsoft.ContainerService/managedClusters/runcommand/actionMicrosoft.ContainerService/managedclusters/commandResults/read 動作可控制使用 command invoke 的權限。

透過 Azure 入口網站,您可以使用 Run command 功能在私人叢集上執行命令。 Run command 功能會使用相同的 command invoke 功能在叢集上執行命令。

所建立的 Run command Pod會提供 kubectlhelm 來操作您的叢集。 jqxargsgrepawk 可供 Bash 支援使用。

開始之前

開始之前,請確定您擁有下列資源和權限:

  • 現有私人叢集。 如果您還沒有私人叢集,請參閱建立私人 AKS 叢集
  • Azure CLI 2.24.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI
  • 存取叢集上的 Microsoft.ContainerService/managedClusters/runcommand/actionMicrosoft.ContainerService/managedclusters/commandResults/read 角色。

限制

這項功能是設計來簡化叢集存取,並非 專為程式設計存取所設計。 如果您有程式使用 叫用 Run commandKubernetes,則適用下列缺點:

  • 您只會取得 exitCode文字輸出,而且會遺失 API 層級的詳細數據。
  • 一個額外的躍點引進額外的失敗點。

所建立的 Run command Pod 會以 200m CPU500Mi memory 要求進行硬式編碼,以及和 500m CPU 1Gi memory 限制。 在封裝所有節點的罕見情況下,無法在 ARM API 限制 60 秒內排程 Pod。 這表示 Run command 會失敗,即使它設定為自動調整也一樣。

command invoke 會從叢集執行命令,因此,任何以這種方式執行的命令都受限於您設定的網路限制和所有其他已設定的限制。 請確保叢集中有足夠的節點和資源,以將這個命令 Pod 進行排程。

注意

command invoke 的輸出大小限制為 512kB。

在 AKS 叢集上執行命令

使用 command invoke 以執行單一命令

  • 使用 az aks command invoke --command 命令,在叢集上執行命令。 下列範例命令會在 myResourceGroupmyPrivateCluster 叢集上執行 kubectl get pods -n kube-system 命令。

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

使用 command invoke 以執行多個命令

  • 使用 az aks command invoke --command 命令,在叢集上執行多個命令。 下列範例命令會在 myResourceGroupmyPrivateCluster 叢集上執行三個 helm 命令。

    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"
    

使用 command invoke 以執行具有附加檔案或目錄的命令

  • 使用 az aks command invoke --command 命令搭配 --file 參數,執行具有附加檔案或目錄的命令。 下列範例命令會在 myResourceGroupmyPrivateCluster 叢集上執行 kubectl apply -f deployment.yaml -n defaultdeployment.yaml 檔案是從 az aks command invoke 執行所在之開發電腦的目前目錄所附加。

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

使用 command invoke 執行附加了目前目錄中所有檔案的命令

  • 使用 az aks command invoke --command 命令搭配 --file 參數,執行附加了目前目錄中所有檔案的命令。 下列範例命令會在 myResourceGroupmyPrivateCluster 叢集上執行 kubectl apply -f deployment.yaml configmap.yaml -n defaultdeployment.yamlconfigmap.yaml 檔案是開發電腦上目前目錄的一部分,而此開發電腦上已執行 az aks command invoke

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

疑難排解

如需 az aks command invoke 最常見問題與其修正方式的相關資訊,請參閱解決 az aks command invoke 失敗 (部分機器翻譯)。

下一步

在本文中,您已了解如何存取私人叢集並在該叢集上執行命令。 如需 AKS 叢集的詳細資訊,請參閱下列文章: