Udostępnij za pośrednictwem


Tworzenie klastrów Kubernetes przy użyciu interfejsu wiersza polecenia platformy Azure

Dotyczy: Azure Stack HCI, wersja 23H2

W tym artykule opisano sposób tworzenia klastrów Kubernetes w usłudze Azure Stack HCI przy użyciu interfejsu wiersza polecenia platformy Azure. Przepływ pracy wygląda następująco:

  1. Utwórz klaster Kubernetes w usłudze Azure Stack HCI 23H2 przy użyciu interfejsu wiersza polecenia platformy Azure. Klaster jest domyślnie połączony z usługą Azure Arc.
  2. Podczas tworzenia klastra należy podać grupę Entra firmy Microsoft zawierającą listę użytkowników usługi Microsoft Entra z dostępem administratora klastra Kubernetes.
  3. Uzyskaj dostęp do klastra przy użyciu narzędzia kubectl i identyfikatora Entra firmy Microsoft.
  4. Uruchom przykładową aplikację z wieloma kontenerami z frontonem internetowym i wystąpieniem usługi Redis w klastrze.

Zanim rozpoczniesz

  • Przed rozpoczęciem upewnij się, że masz następujące szczegóły od administratora infrastruktury lokalnej:
    • Identyfikator subskrypcji platformy Azure — identyfikator subskrypcji platformy Azure, w którym usługa Azure Stack HCI jest używana do wdrażania i rejestracji.
    • Identyfikator lokalizacji niestandardowej — identyfikator usługi Azure Resource Manager lokalizacji niestandardowej. Lokalizacja niestandardowa jest konfigurowana podczas wdrażania klastra rozwiązania Azure Stack HCI. Administrator infrastruktury powinien podać identyfikator usługi Resource Manager lokalizacji niestandardowej. Ten parametr jest wymagany w celu utworzenia klastrów Kubernetes. Identyfikator usługi Resource Manager można również uzyskać przy użyciu polecenia az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, jeśli administrator infrastruktury udostępnia niestandardową nazwę lokalizacji i nazwę grupy zasobów.
    • Identyfikator sieci — identyfikator usługi Azure Resource Manager sieci logicznej usługi Azure Stack HCI utworzonej zgodnie z tymi krokami. Administrator powinien podać identyfikator sieci logicznej. Ten parametr jest wymagany w celu utworzenia klastrów Kubernetes. Identyfikator usługi Azure Resource Manager można również uzyskać przy użyciu polecenia az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv , jeśli znasz grupę zasobów, w której została utworzona sieć logiczna.
  • Kroki opisane w tym artykule można uruchomić na lokalnym komputerze deweloperskim, aby utworzyć klaster Kubernetes we zdalnym wdrożeniu rozwiązania Azure Stack HCI. Upewnij się, że na maszynie dewelopera masz najnowszą wersję interfejsu wiersza polecenia Az. Możesz również uaktualnić wersję interfejsu wiersza polecenia az przy użyciu polecenia az upgrade.
  • Aby nawiązać połączenie z klastrem Kubernetes z dowolnego miejsca, utwórz grupę Microsoft Entra i dodaj do niej członków. Wszyscy członkowie grupy Microsoft Entra mają dostęp administratora klastra do klastra. Pamiętaj, aby dodać siebie jako członka do grupy Microsoft Entra. Jeśli nie dodasz się samodzielnie, nie możesz uzyskać dostępu do klastra Kubernetes przy użyciu narzędzia kubectl. Aby uzyskać więcej informacji na temat tworzenia grup Entra firmy Microsoft i dodawania użytkowników, zobacz Zarządzanie grupami i członkostwem w grupach firmy Microsoft.
  • Pobierz i zainstaluj narzędzie kubectl na maszynie deweloperów. Narzędzie wiersza polecenia kubernetes kubectl umożliwia uruchamianie poleceń w klastrach Kubernetes. Za pomocą narzędzia kubectl można wdrażać aplikacje, sprawdzać zasoby klastra i zarządzać nimi oraz wyświetlać dzienniki.

Instalowanie rozszerzenia interfejsu wiersza polecenia platformy Azure

Uruchom następujące polecenie, aby zainstalować niezbędne rozszerzenia interfejsu wiersza polecenia platformy Azure:

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Tworzenie klastra Kubernetes

Użyj polecenia , az aksarc create aby utworzyć klaster Kubernetes w usłudze AKS Arc. Przed uruchomieniem tego polecenia upewnij się, że logujesz się na platformie Azure. Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji przy użyciu polecenia az account set .

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0  --control-plane-ip $controlplaneIP

Po kilku minutach polecenie zostanie wykonane i zwróci informacje o klastrze w formacie JSON.

Uwaga

  • Wartość klucza SSH jest kluczem publicznym na potrzeby uzyskiwania dostępu do węzłów w aprowizowanego klastra. Domyślnie ten klucz znajduje się w lokalizacji ~/.ssh/id_rsa.pub. Możesz określić inną lokalizację przy użyciu parametru --ssh-key-value podczas tworzenia klastra.
  • Parametr --generate-ssh-keys jest wymagany, jeśli na komputerze lokalnym nie ma istniejącego klucza SSH. Jeśli nie dołączysz tego parametru podczas tworzenia klastra i nie istnieje żaden klucz SSH, zostanie wyświetlony komunikat o błędzie.
  • Jeśli masz już klucz SSH na komputerze lokalnym, klaster usługi AKS ponownie używa tego klucza. W tym przypadku określenie --generate-ssh-keysparametru lub pominięcie tego parametru nie ma wpływu.

Nawiązywanie połączenia z klastrem Kubernetes

Teraz możesz nawiązać połączenie z klastrem Kubernetes, uruchamiając az connectedk8s proxy polecenie na komputerze deweloperskim. Przed uruchomieniem tego polecenia upewnij się, że logujesz się na platformie Azure. Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji przy użyciu polecenia az account set .

To polecenie pobiera plik kubeconfig klastra Kubernetes na maszynę dewelopera i otwiera kanał połączenia serwera proxy z lokalnym klastrem Kubernetes. Kanał jest otwarty tak długo, jak polecenie jest uruchamiane. Pozwól, aby to polecenie było uruchamiane tak długo, jak chcesz uzyskać dostęp do klastra. Jeśli upłynął limit czasu, zamknij okno interfejsu wiersza polecenia, otwórz nowy, a następnie ponownie uruchom polecenie.

Aby pomyślnie uruchomić następujące polecenie, musisz mieć uprawnienia Współautor w grupie zasobów, która hostuje klaster Kubernetes:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Oczekiwane dane wyjściowe:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Nie uruchamiaj tej sesji i nawiąż połączenie z klastrem Kubernetes z innego wiersza polecenia/terminalu. Sprawdź, czy możesz nawiązać połączenie z klastrem Kubernetes, uruchamiając polecenie kubectl get. To polecenie zwraca listę węzłów klastra:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

Poniższy przykład danych wyjściowych przedstawia węzeł utworzony w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

Wdrażanie aplikacji

Plik manifestu kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia.

Możesz użyć manifestu, aby utworzyć wszystkie obiekty potrzebne do uruchomienia aplikacji Azure Vote. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes:

  • Przykładowe aplikacje azure Vote Python.
  • Wystąpienie usługi Redis.

Tworzone są również dwie usługi Kubernetes:

  • Wewnętrzna usługa dla wystąpienia usługi Redis.
  • Usługa zewnętrzna w celu uzyskania dostępu do aplikacji Azure Vote z Internetu.

Utwórz plik o nazwie azure-vote.yaml i skopiuj go w następującym manifeście:

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: <path to image>/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: <path to image>/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

Wdróż aplikację przy użyciu polecenia kubectl apply i określ nazwę pliku YAML:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

W poniższych przykładowych danych wyjściowych przedstawiono pomyślnie utworzone wdrożenia i usługi:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Testowanie aplikacji

Po uruchomieniu aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut.

Monitoruj postęp przy użyciu polecenia kubectl get service za pomocą argumentu --watch .

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

Dane wyjściowe EXTERNAL-IP dla usługi azure-vote-front początkowo są wyświetlane jako oczekujące.

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

Gdy adres EXTERNAL-IP zmieni się z oczekujące na rzeczywisty publiczny adres IP, użyj CTRL-C, aby zatrzymać proces zegarka kubectl. Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

Aby wyświetlić działającą aplikację Azure Vote, otwórz zewnętrzny adres IP usługi w przeglądarce internetowej.

Usuwanie klastra

Uruchom polecenie , az aksarc delete aby wyczyścić utworzony klaster:

az aksarc delete --resource-group $aksclustername --name $resource_group

Następne kroki