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 Azure Kubernetes Service (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í další konfiguraci, například nastavení sítě VPN nebo ExpressRoute.

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 RBAC 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. Pod vytvořený pomocí Run command poskytuje kubectl a helm pro provoz vašeho clusteru. jq xargs, grepa awk jsou k dispozici pro podporu Bash.

Návod

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

Požadavky

Požadavky na systém a oprávnění

Typ požadavku Specification Postup ověření
Verze Azure CLI 2.24.0 nebo novější Pomocí příkazu az --version zkontrolujte svou verzi.
Privátní cluster AKS Musí už existovat Pokud nemáte existující privátní cluster, postupujte podle pokynů v tématu Vytvoření privátního clusteru AKS.
Akce RBAC Microsoft.ContainerService/managedClusters/runcommand/action a Microsoft.ContainerService/managedClusters/commandResults/read Pomocí stránky Řízení přístupu na webu Azure Portal (IAM) nebo az role assignment list příkazu Azure CLI zkontrolujte.

Specifikace prostředků příkazu 'run' podu

Typ zdroje Hodnota Dopad
Požadavky na procesor 200 m Minimální rezervace procesoru pro velitelský modul
Požadavky na paměť 500 MiB Minimální paměť vyhrazená pro řídicí modul
Omezení procesoru 500 m Maximální výpočetní výkon procesoru dostupný pro řídicí pod
Limity paměti 1Gi Maximální paměť dostupná pro příkazový modul
Vypršení časového limitu rozhraní API Azure Resource Manager (ARM) 60 sekund Maximální čas plánování podů
Omezení velikosti výstupu 512kB Maximální velikost výstupu příkazu

Omezení a úvahy

Rozsah návrhu

  • Ne pro programový přístup: Pro automatizovaná volání rozhraní API použijte Bastion, VPN nebo ExpressRoute.
  • Závislost plánování podů: Vyžaduje dostatečné prostředky clusteru (viz specifikace prostředků).
  • Omezení výstupu: pouze exitCode a text , žádné podrobnosti na úrovni rozhraní API.
  • Platí omezení sítě: Na základě omezení síťového provozu v rámci clusteru a jeho zabezpečení.

Potenciální body selhání

  • Selhání plánování podů, pokud jsou uzly omezené zdroji.
  • Vypršení časového limitu rozhraní API ARM (60 sekund), pokud pod nejde rychle naplánovat.
  • Zkrácení výstupu, pokud odpověď překročí limit 512 kB.

Použití command invoke v privátním clusteru AKS s Azure CLI

  • Nastavte proměnné prostředí pro skupinu prostředků a název clusteru pro použití v následujících příkazech.

    export AKS_RESOURCE_GROUP="<resource-group-name>"
    export AKS_CLUSTER_NAME="<cluster-name>"
    

    Tyto proměnné prostředí umožňují spouštět příkazy AKS bez nutnosti přepisovat jejich názvy.

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

  • Spusťte jediný příkaz na svém clusteru pomocí příkazu az aks command invoke a parametru --command pro určení příkazu, který se má spustit. Následující příklad zobrazí pody v oboru názvů kube-system.

    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ů.

  • Spuštěním několika příkazů v clusteru pomocí az aks command invoke příkazu a parametru --command určete příkazy, které se mají spustit. Následující příklad přidá úložiště chartů Bitnami Helm, aktualizuje úložiště a nainstaluje nginx chart.

    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.

Pokud chcete spustit příkaz s připojeným souborem, musí soubor existovat a být přístupný v aktuálním pracovním adresáři. V následujícím příkladu vytvoříme minimální soubor nasazení pro ukázku.

  1. Vytvořte soubor manifestu Kubernetes s názvem deployment.yaml. Následující příklad souboru pro nasazení spustí nginx pod.

    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
    
  2. Aplikujte soubor nasazení na váš cluster pomocí příkazu az aks command invoke s parametrem --file pro připojení souboru. Následující příklad aplikuje soubor deployment.yaml do prostoru názvů default.

    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 aktuálním adresáři.

Poznámka:

Používejte jenom malé, nezbytné soubory, abyste se vyhnuli překročení limitů velikosti systému.

V následujícím příkladu vytvoříme dva minimální soubory nasazení pro ukázku.

  1. Vytvořte dva soubory manifestu Kubernetes s názvem deployment.yaml a configmap.yaml. Následující příklad souborů nasazení nasadí nginx pod a vytvoří Objekt ConfigMap s uvítací zprávou.

    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
    
  2. Proveďte aplikaci souborů nasazení na váš cluster použitím příkazu az aks command invoke s parametrem --file pro připojení souboru. Následující příklad aplikuje soubory deployment.yaml a configmap.yaml do default oboru názvů.

    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
    

Použití Run command v privátním clusteru AKS na webu Azure Portal

Pomocí funkce Run command můžete použít následující příkazy kubectl:

  • kubectl get nodes
  • kubectl get deployments
  • kubectl get pods
  • kubectl describe nodes
  • kubectl describe pod <pod-name>
  • kubectl describe deployment <deployment-name>
  • kubectl apply -f <file-name>

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

  1. Na webu Azure Portal přejděte do privátního clusteru.
  2. V nabídce služby v části Prostředky Kubernetes vyberte Příkaz Spustit.
  3. Zadejte příkaz, který chcete spustit, a vyberte Spustit.

Slouží Run command ke spouštění příkazů s připojenými soubory.

  1. Na webu Azure Portal přejděte do privátního clusteru.

  2. V nabídce služby v části Prostředky Kubernetes vyberte Příkaz Spustit.

  3. Vyberte Připojit soubory>, vyhledejte soubory.

    Snímek obrazovky s připojením souborů k příkazu Spustit na webu Azure Portal

  4. Vyberte soubor nebo soubory, které chcete připojit, a pak vyberte Připojit.

  5. Zadejte příkaz, který chcete spustit, a vyberte Spustit.

Vypnout Run command

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

Odstraňování problémů command invoke

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.

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: