Udostępnij przez


Uzyskiwanie dostępu do prywatnego klastra usługi Azure Kubernetes Service (AKS) przy użyciu funkcji wywołania polecenia lub uruchomienia polecenia

Gdy uzyskujesz dostęp do prywatnego klastra usługi Azure Kubernetes Service (AKS), musisz nawiązać połączenie z klastrem z sieci wirtualnej klastra , sieci równorzędnej lub skonfigurowanego prywatnego punktu końcowego. Te podejścia wymagają dodatkowej konfiguracji, takiej jak konfigurowanie sieci VPN lub usługi Express Route.

Za pomocą command invoke interfejsu wiersza polecenia platformy Azure można uzyskiwać dostęp do klastrów prywatnych bez konieczności konfigurowania sieci VPN lub usługi Express Route. command invoke Umożliwia zdalne wywoływanie poleceń, takich jak kubectl i helm, w klastrze prywatnym za pośrednictwem interfejsu API platformy Azure bez bezpośredniego nawiązywania połączenia z klastrem. Akcje RBAC Microsoft.ContainerService/managedClusters/runcommand/action i Microsoft.ContainerService/managedClusters/commandResults/read kontrolują uprawnienia do używania command invoke.

Za pomocą witryny Azure Portal możesz użyć Run command funkcji do uruchamiania poleceń w klastrze prywatnym. Funkcja Run command używa tej samej command invoke funkcji do uruchamiania poleceń w klastrze. Zasobnik utworzony przez Run command zapewnia kubectl i helm do obsługi klastra. jq, xargs, grepi awk są dostępne dla obsługi powłoki Bash.

Wskazówka

Do uruchamiania poleceń kubectl w portalu Azure można użyć Azure Copilot. Aby uzyskać więcej informacji, zobacz Praca z klastrami AKS wydajnie przy użyciu rozwiązania Azure Copilot.

Wymagania wstępne

Wymagania systemowe i uprawnienia

Typ wymagania Specification Jak to sprawdzić
Wersja interfejsu wiersza polecenia platformy Azure 2.24.0 lub nowsza Użyj polecenia az --version, aby sprawdzić swoją wersję.
Prywatny klaster AKS Musi już istnieć Jeśli nie masz istniejącego klastra prywatnego, wykonaj kroki opisane w temacie Tworzenie prywatnego klastra usługi AKS.
Akcje RBAC Microsoft.ContainerService/managedClusters/runcommand/action i Microsoft.ContainerService/managedClusters/commandResults/read Sprawdź, czy używasz strony Kontrola dostępu (IAM) w portalu Azure lub za pomocą polecenia Azure CLI.

Specyfikacje zasobów podów uruchomieniowych

Typ zasobu Wartość Wpływ
Żądania CPU 200 m Minimalna rezerwa procesora CPU zarezerwowana dla modułu sterowania
Żądania pamięci 500Mi Minimalna ilość pamięci zarezerwowanej dla zasobnika poleceń
Limity procesora CPU 500 m Maksymalna liczba dostępnych procesorów dla zasobnika poleceń
Limity pamięci 1Gi Maksymalna pamięć dostępna dla zasobnika komend
Limit czasu interfejsu API usługi Azure Resource Manager (ARM) 60 sekund Maksymalny czas planowania zasobników
Limit rozmiaru danych wyjściowych 512kB Maksymalny rozmiar danych wyjściowych polecenia

Ograniczenia i zagadnienia

Zakres projektu

  • Nie dotyczy dostępu programowego: użyj usługi Bastion, sieci VPN lub usługi ExpressRoute na potrzeby zautomatyzowanych wywołań interfejsu API.
  • Zależność planowania podów: Wymaga wystarczających zasobów klastra (zobacz specyfikacje zasobów).
  • Ograniczenia danych wyjściowych: exitCode i tylko tekst , bez szczegółów na poziomie interfejsu API.
  • Obowiązują ograniczenia sieci: Podlegają ograniczeniom dotyczącym sieci i zabezpieczeń klastra.

Potencjalne punkty awarii

  • Niepowodzenie planowania podów, jeśli węzły mają ograniczone zasoby.
  • Ograniczenie czasowe interfejsu API ARM (60 sekund) w przypadku, gdy pod nie zostanie szybko umieszczony w harmonogramie.
  • Obcinanie danych wyjściowych, jeśli odpowiedź przekracza limit 512kB.

Użyj command invoke w prywatnym klastrze AKS za pomocą Azure CLI

  • Ustaw zmienne środowiskowe dla grupy zasobów i nazwy klastra do użycia w kolejnych poleceniach.

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

    Te zmienne środowiskowe umożliwiają uruchamianie poleceń usługi AKS bez konieczności ponownego zapisywania ich nazw.

Użyj command invoke polecenia , aby uruchomić pojedyncze polecenie

  • Uruchom pojedyncze polecenie w klastrze przy użyciu az aks command invoke polecenia i parametru --command , aby określić polecenie do uruchomienia. Poniższy przykład pobiera zasobniki w kube-system przestrzeni nazw.

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

Użyj command invoke polecenia , aby uruchomić wiele poleceń

  • Uruchom wiele poleceń w klastrze, używając polecenia az aks command invoke i parametru --command, aby określić, które polecenia mają być uruchomione. W poniższym przykładzie dodano repozytorium Bitnami dla Helm, zaktualizowano repozytorium i zainstalowano wykres nginx.

    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"
    

Użyj command invoke do uruchomienia polecenia z dołączonym plikiem

Jeśli chcesz uruchomić polecenie z dołączonym plikiem, plik musi istnieć i być dostępny w bieżącym katalogu roboczym. W poniższym przykładzie utworzymy minimalny plik wdrożenia na potrzeby pokazu.

  1. Utwórz plik manifestu kubernetes o nazwie deployment.yaml. Poniższy przykładowy plik wdrożenia wdraża 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. Użyj pliku wdrożenia na swoim klastrze, stosując polecenie az aks command invoke z parametrem --file do dołączenia pliku. Poniższy przykład stosuje plik deployment.yaml do przestrzeni nazw 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
    

Użyj command invoke aby uruchomić polecenia na wszystkich plikach w bieżącym katalogu

Uwaga

Używaj tylko małych, niezbędnych plików, aby uniknąć przekroczenia limitów rozmiaru systemu.

W poniższym przykładzie utworzymy dwa minimalne pliki wdrożenia na potrzeby pokazu.

  1. Utwórz dwa pliki manifestu kubernetes o nazwach deployment.yaml i configmap.yaml. Poniższe przykładowe pliki wdrażania wdrażają pod nginx i tworzą ConfigMap z komunikatem powitalnym.

    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. Zastosuj pliki wdrożeniowe do klastra przy użyciu polecenia az aks command invoke z parametrem --file aby dołączyć plik. Poniższy przykład stosuje pliki deployment.yaml i configmap.yaml do przestrzeni nazw default.

    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
    

Użyj Run command w prywatnym klastrze AKS w Azure Portal

Można użyć następujących poleceń kubectl z funkcją Run command:

  • 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>

Użyj Run command polecenia , aby uruchomić pojedyncze polecenie

  1. W witrynie Azure Portal przejdź do klastra prywatnego.
  2. W menu usługi w obszarze Zasoby kubernetes wybierz pozycję Uruchom polecenie.
  3. Wprowadź polecenie, które chcesz uruchomić, a następnie wybierz pozycję Uruchom.

Użyj Run command polecenia do uruchamiania poleceń z dołączonymi plikami

  1. W witrynie Azure Portal przejdź do klastra prywatnego.

  2. W menu usługi w obszarze Zasoby kubernetes wybierz pozycję Uruchom polecenie.

  3. Wybierz pozycję Dołącz pliki>Przeglądaj w poszukiwaniu plików.

    Zrzut ekranu przedstawiający dołączanie plików do polecenia Uruchom w witrynie Azure Portal.

  4. Wybierz plik lub pliki, które chcesz dołączyć, a następnie wybierz pozycję Dołącz.

  5. Wprowadź polecenie, które chcesz uruchomić, a następnie wybierz pozycję Uruchom.

Wyłączać Run command

Możesz wyłączyć funkcję Run command poprzez ustawienie .properties.apiServerAccessProfile.disableRunCommand na true.

Rozwiąż command invoke problemy

Aby uzyskać informacje na temat najczęstszych problemów i az aks command invoke sposobu ich rozwiązywania, zobacz Rozwiązywanie az aks command invoke błędów.

W tym artykule przedstawiono sposób uzyskiwania dostępu do klastra prywatnego i uruchamiania poleceń w tym klastrze. Aby uzyskać więcej informacji na temat klastrów usługi AKS, zobacz następujące artykuły: