Sdílet prostřednictvím


Přístup k privátnímu clusteru Azure Kubernetes Service (AKS) pomocí funkce vyvolání příkazu nebo spuštění příkazu

Když přistupujete k privátnímu clusteru AKS, musíte se k němu připojit z virtuální sítě clusteru, partnerské sítě nebo nakonfigurovaného privátního koncového bodu. Tyto přístupy vyžadují konfiguraci sítě VPN, Express Route, nasazení jumpboxu ve virtuální síti clusteru nebo vytvoření privátního koncového bodu uvnitř jiné virtuální sítě.

Pomocí Azure CLI můžete přistupovat command invoke k privátním clusterům bez nutnosti konfigurace sítě VPN nebo ExpressRoute. command invoke umožňuje vzdáleně volat příkazy, například kubectl a helm, ve vašem privátním clusteru prostřednictvím rozhraní Azure API bez přímého připojení ke clusteru. Akce Microsoft.ContainerService/managedClusters/runcommand/action a Microsoft.ContainerService/managedclusters/commandResults/read řídí oprávnění pro použití command invoke.

Pomocí webu Azure Portal můžete pomocí Run command funkce spouštět příkazy v privátním clusteru. Tato Run command funkce používá stejné command invoke funkce ke spouštění příkazů ve vašem clusteru.

Návod

Ke spouštění kubectl příkazů na webu Azure Portal můžete použít Microsoft Copilot v Azure. Další informace najdete v tématu Efektivní práce s clustery AKS pomocí Microsoft Copilotu v Azure.

Pod vytvořený nástrojem Run command poskytuje kubectl a helm pro provoz vašeho clusteru. jq xargs, grepa awk jsou k dispozici pro podporu Bash.

Než začnete

Než začnete, ujistěte se, že máte následující prostředky a oprávnění:

  • Existující privátní cluster. Pokud ho nemáte, přečtěte si téma Vytvoření privátního clusteru AKS.
  • Azure CLI verze 2.24.0 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI.
  • Přístup k rolím Microsoft.ContainerService/managedClusters/runcommand/action a Microsoft.ContainerService/managedclusters/commandResults/read rolím v clusteru

Omezení

Tato funkce je navržená tak, aby zjednodušila přístup ke clusteru a není určená pro programový přístup. Pro programová volání do clusteru byste měli využít přímý přístup k rozhraní API přes Bastion, VPN nebo ExpressRoute.

Pokud máte program, který volá Kubernetes pomocí Run command, platí následující nevýhody:

  • Získáte pouze ukončovací kód a textový výstup a ztratíte podrobnosti na úrovni rozhraní API.
  • Jeden další skok představuje další body selhání.

Pod vytvořený pomocí Run command200m CPU a 500Mi memory žádosti a 500m CPU a 1Gi memory omezení. V případech, kdy je celý uzel plný nebo přetížený, nemusí být možné naplánovat pod během časového limitu rozhraní ARM API 60 sekund. To znamená, že Run command vyvolání selže.

command invoke spustí příkazy z vašeho clusteru, takže všechny příkazy spouštěné tímto způsobem podléhají nakonfigurovaným omezením sítě a jakýmkoli jiným nakonfigurovaným omezením. Ujistěte se, že v clusteru je dostatek uzlů a prostředků k naplánování tohoto podu příkazů.

Poznámka:

Výstup pro command invoke je omezen na velikost 512 kB.

Spouštění příkazů v clusteru AKS

Níže jsou uvedeny příklady použití az aks command invoke ke spouštění příkazů v privátním clusteru AKS. Tyto příklady předpokládají, že máte existující skupinu prostředků a cluster AKS.

Slouží command invoke ke spuštění jednoho příkazu.

Pomocí příkazu az aks command invoke --command můžete spustit příkaz na svém clusteru. Následující ukázkový příkaz spustí kubectl get pods -n kube-system příkaz v clusteru myPrivateCluster v myResourceGroup.

Nejprve určete proměnné prostředí pro skupinu prostředků a název clusteru pro použití v dalších příkazech.

export AKS_RESOURCE_GROUP="myResourceGroup"
export AKS_CLUSTER_NAME="myPrivateCluster"

Výše uvedené proměnné prostředí vám umožní spouštět příkazy AKS v dalších částech bez nutnosti přepisovat jejich názvy.

Spuštění jednoho příkazu kubectl v clusteru AKS:

az aks command invoke \
  --resource-group $AKS_RESOURCE_GROUP \
  --name $AKS_CLUSTER_NAME \
  --command "kubectl get pods -n kube-system"

Slouží command invoke ke spouštění více příkazů.

Můžete také spustit více příkazů. Následující příklad spustí v clusteru tři helm příkazy v posloupnosti.

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

Slouží command invoke ke spouštění příkazů s připojeným souborem.

Při použití parametru --file s az aks command invoke musí soubor existovat a být přístupný v aktuálním pracovním adresáři. Níže vytvoříme minimální soubor nasazení pro ukázku.

Pokud chcete spustit příkaz s připojeným souborem, nejprve vytvořte soubor manifestu Kubernetes s názvem deployment.yaml. Následující příklad vytvoří malé nasazení nginx a použije ho s command invoke:

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.21.6
        ports:
        - containerPort: 80
EOF

az aks command invoke \
  --resource-group $AKS_RESOURCE_GROUP \
  --name $AKS_CLUSTER_NAME \
  --command "kubectl apply -f deployment.yaml -n default" \
  --file deployment.yaml

Slouží command invoke ke spouštění příkazů se všemi soubory v připojeném aktuálním adresáři.

Používejte jenom malé, nezbytné soubory, abyste se vyhnuli překročení limitů velikosti systému. Níže jsou vytvořeny dva minimální soubory YAML před jejich připojením.

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.21.6
        ports:
        - containerPort: 80
EOF

cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  welcome-message: "Hello from configmap"
EOF

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

Vypnout Run command

Tuto funkci můžete zakázat Run command nastavením .properties.apiServerAccessProfile.disableRunCommand na true.

Řešení problémů

Informace o nejběžnějších problémech s az aks command invoke a jejich řešení najdete v tématu Řešení az aks command invoke chyb.

Další kroky

V tomto článku jste se dozvěděli, jak získat přístup k privátnímu clusteru a spouštět příkazy v tomto clusteru. Další informace o clusterech AKS najdete v následujících článcích: