存取私人 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 功能在叢集上執行命令。

開始之前

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

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

限制

run 命令所建立的 Pod 可使用 kustomize 為叢集提供 helm 和最新相容版本的 kubectl

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 .