Używanie Azure Kubernetes Service w usłudze Azure Stack Hub za pomocą interfejsu wiersza polecenia

Jest to przewodnik umożliwiający rozpoczęcie korzystania z usługi Azure Kubernetes Service (AKS) w usłudze Azure Stack Hub. W tym artykule opisano główny zestaw scenariuszy, aby zapoznać się z usługą AKS w usłudze Azure Stack Hub. Funkcja dostępna w usłudze Azure Stack Hub to podzbiór dostępności na globalnej platformie Azure.

W poniższych sekcjach wykonasz następujące czynności:

  1. Wypełnij wymagania wstępne dotyczące korzystania z usługi AKS w usłudze Azure Stack Hub.
  2. Ukończ operacje cyklu życia klastra usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure i portalu użytkowników usługi Azure Stack Hub.

Zainstaluj interfejs wiersza polecenia platformy Azure

Musisz zainstalować interfejs wiersza polecenia platformy Azure z obsługą usługi AKS dla maszyny. Przygotuj czystą maszynę z systemem Linux lub Windows, aby zainstalować wersję zapoznawcza interfejsu wiersza polecenia platformy Azure przy użyciu obsługi usługi AKS. Upewnij się, że maszyna nie ma zainstalowanego interfejsu wiersza polecenia platformy Azure, aby uniknąć konfliktu z wersją zapoznawcza interfejsu wiersza polecenia platformy Azure, który zostanie zainstalowany w następnej kolejności. Większość poniższych instrukcji zakłada, że używasz maszyny wirtualnej z systemem Linux, ale w dokumentacji produktu można znaleźć równoważne kroki w systemie Windows.

Nie uaktualnij interfejsu wiersza polecenia platformy Azure po zainstalowaniu interfejsu wiersza polecenia platformy Azure z obsługą usługi AKS. W przypadku uaktualnienia zostanie ona zastąpiona wersją gotową do produkcji, która nie obsługuje usługi AKS.

W przypadku maszyny z systemem Ubuntu postępuj zgodnie z instrukcjami w temacie Instalowanie interfejsu wiersza polecenia platformy Azure w systemie Linux.

Po zainstalowaniu interfejsu wiersza polecenia platformy Azure z obsługą usługi AKS sprawdź, czy instalacja jest poprawna, uruchamiając następujące polecenie interfejsu wiersza polecenia platformy Azure:

    az --version

To są dane wyjściowe z maszyny z systemem Linux:

dane wyjściowe z maszyny z systemem Linux

Interfejs wiersza polecenia platformy Azure powinien mieć wartość 2.28.0 lub nowszą.

Nawiązywanie połączenia z usługą Azure Stack Hub

  1. Połącz się z punktem końcowym usługi Azure Stack Hub. Musisz użyć interfejsu wiersza polecenia platformy Azure, aby ustanowić konkretne środowisko usługi Azure Stack Hub, z którym nawiązujesz połączenie. Instrukcje można znaleźć w temacie Connect to Azure Stack Hub (Nawiązywanie połączenia z usługą Azure Stack Hub)

  2. Zarejestruj środowisko, aby interfejs wiersza polecenia platformy Azure mógł nawiązać połączenie z punktem końcowym usługi Azure Stack Hub Resource Manager dla twojego wystąpienia. Zaktualizuj adresy URL w poniższym fragmencie kodu i uruchom następujące polecenie:

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. Ustaw aktywne środowisko.

    az cloud set -n aks-preview-test
    
  4. Zaktualizuj konfigurację środowiska.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Połącz się ze środowiskiem.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    Uwaga

    Jeśli wyzwolono błąd weryfikacji certyfikatu, może to oznaczać, że certyfikat używany dla punktu końcowego usługi Azure Resource Manager nie jest zaufany przez maszynę kliencką. Jeśli tak, musisz wyeksportować certyfikat używany w punktach końcowych usługi Azure Stack Hub i zaufać mu. Instrukcje można znaleźć w temacie Eksportowanie certyfikatu głównego urzędu certyfikacji usługi Azure Stack Hub.

    W szczególności w przypadku maszyn z systemem Linux zobacz: identyfikator Microsoft Entra w systemie Linux

  6. Ustaw subskrypcję w sesji interfejsu wiersza polecenia platformy Azure jako domyślną wartością:

    az account set --subscription <subscription-id>
    
  7. Zarejestruj dostawcę zasobów Azure Kubernetes Service. Wyświetl listę dostępnych dostawców zasobów w subskrypcji.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    Dane wyjściowe powinny wyglądać następująco:

    Dane wyjściowe powinny wyglądać następująco:

  8. Zanotuj dostawcę zasobów Microsoft.ContainerService , a następnie zarejestruj dostawcę:

    az provider register --namespace Microsoft.ContainerService
    
  9. Uruchom ponownie krok siedem, aby zweryfikować stan rejestracji dostawcy zasobów. Rejestracja może potrwać kilka minut.

Po wykonaniu tych kroków wymagań wstępnych możesz przejść do testowania następujących scenariuszy.

Tworzenie klastra AKS

Instrukcje dotyczące globalnej platformy Azure można znaleźć w temacie Deploy an Azure Kubernetes Service cluster using the Azure CLI (Wdrażanie klastra Azure Kubernetes Service przy użyciu interfejsu wiersza polecenia platformy Azure). Instrukcje w tym miejscu odzwierciedlają ograniczenia korzystania z usługi AKS w usłudze Azure Stack Hub. Interfejs wiersza polecenia platformy Azure umożliwia utworzenie klastra usługi AKS dla kontenerów systemu Linux lub Windows.

  1. Utwórz grupę zasobów:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Upewnij się, że masz gotowy identyfikator jednostki usługi z uprawnieniem współautora do tworzenia w niej klastrów.

    1. Aby utworzyć jednostkę usługi (SPN) przy użyciu identyfikatora Microsoft Entra, postępuj zgodnie z tymi instrukcjami.
    2. Aby utworzyć nazwę SPN przy użyciu usług Federacyjnych Active Directory (AD FS), postępuj zgodnie z tymi instrukcjami.
    3. Aby przypisać rolę "Współautor" do nazwy SPN, zobacz instrukcje. Upewnij się, że wybrano rolę "Współautor".
  3. Utwórz klaster usługi AKS z trzema węzłami agenta. Podaj wartości poniższych parametrów. Podano przykłady. Uruchom:

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    Dane wyjściowe tej operacji będą w formacie json i zawierają specyfikację klastra, w tym wygenerowany klucz publiczny ssh, w pełni kwalifikowaną nazwę domeny (FQDN) używaną w klastrze między innymi właściwościami. Zwróć uwagę, że polecenie wyświetli tekst, taki jak ten z wyróżnioną lokalizacją klucza prywatnego: SSH key files '/home/azureuser/.ssh/id_rsa' i '/home/azureuser/.ssh/id_rsa.pub' został wygenerowany w celu \~/.ssh umożliwienia dostępu SSH do maszyny wirtualnej. Przechowuj te klucze w bezpiecznej lokalizacji, aby można było ich używać w przypadku konieczności ssh na maszynach wirtualnych, tak jak w przypadku rozwiązywania problemów.

  4. Teraz możesz kontynuować powtarzanie testów skalowania, wdrażania aplikacji i usuwania.

Łączenie z klastrem

  1. Aby zarządzać klastrem Kubernetes, należy użyć klienta wiersza polecenia usługi Kubernetes — narzędzia kubectl. Aby zainstalować narzędzie kubectl lokalnie, użyj polecenia az aks install-cli (może być konieczne użycie polecenia "sudo" na początku, aby mieć uprawnienia do jego zainstalowania):

    az aks install-cli
    
  2. Aby skonfigurować narzędzie kubectl w celu nawiązania połączenia z klastrem Kubernetes, użyj az aks get-credentials polecenia . To polecenie powoduje pobranie poświadczeń i zastosowanie ich w konfiguracji interfejsu wiersza polecenia Kubernetes.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Aby zweryfikować połączenie z klastrem, użyj polecenia kubectl get, aby zwrócić listę węzłów klastra.

    kubectl get nodes
    

weryfikowanie połączenia z klastrem

Skalowanie klastra

Innym zadaniem zarządzania klastrem jest skalowanie klastra. Klaster można skalować w dowolnym momencie po jego utworzeniu przy użyciu polecenia az aks scale. Aby przeskalować klaster z początkowych trzech węzłów do 4, uruchom polecenie:

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

Po pomyślnym skalowaniu klastra dane wyjściowe będą zawierać ciąg "agentPoolProfiles" podobny do następującego przykładu:

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

Usuwanie klastra

Po wykonaniu poprzednich operacji możesz przejść do usunięcia klastra. Uruchom:

az aks delete --name myakscluster --resource-group myResourceGroup

Tworzenie klastra usługi AKS z niestandardową siecią wirtualną

Tworzenie klastra do wdrożenia w sieci udostępnionej przez użytkownika jest typowym scenariuszem. Planowanie konfiguracji sieci wymaga przygotowania. Zwróć również uwagę, że w przypadku usługi AKS domyślna wtyczka sieci to Azure CNI, a nie Platforma Kubenet, podobnie jak w przypadku aparatu AKS. Dzięki usłudze Azure CNI każdy zasobnik otrzymuje adres IP z podsieci i może być dostępny bezpośrednio (bez konieczności używania tabeli routingu, tak jak w przypadku rozwiązania Kubenet). Te adresy IP muszą być unikatowe w przestrzeni sieciowej i muszą być planowane. W poniższym artykule przedstawiono proces planowania wdrożenia niestandardowej sieci wirtualnej. Możesz znaleźć różne konfiguracje sieci, które działają dla Twoich potrzeb i przetestować je. W przypadku testu początkowego w dwóch krokach przedstawiono podstawowy proces:

  1. Postępuj zgodnie z instrukcjami w tym artykule , aby zaplanować wdrożenie przy użyciu usługi Azure CNI. Na przykład można użyć portalu do utworzenia sieci wirtualnej o nazwie "myAKSVnet" z zakresem adresów IP 10.0.0.0/8 z podsiecią "myAKSSubnet" i zakresem adresów IP 10.240.0.0/16 w grupie zasobów o nazwie "myTest-rg". Następnie użyj następnego kroku do utworzenia klastra.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Zwróć uwagę, że polecenie klastra podane w artykule dotyczącym platformy Azure działa prawidłowo podczas wdrażania na platformie Azure, aby wdrożyć w usłudze Azure Stack Hub, należy określić dodatkowe parametry, jak w poniższym przykładzie. Identyfikator podsieci sieci wirtualnej powinien wyglądać następująco: "/subscriptions/dfdfdff-5dfdf-dfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSubnet":

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. Postępuj zgodnie z instrukcjami w sekcji "Łączenie z klastrem", aby nawiązać połączenie z klastrem Kubernetes i wdrożyć aplikacje.

Sprawdzanie spójności

Sprawdzanie spójności między platformą Azure i usługą Azure Stack Hub

  1. Wybierz kombinację poleceń z tych przetestowanych powyżej, z poniższej sekcji "Odwołanie do poleceń" lub z własnych codziennych skryptów.
  2. Zastosuj je do platformy Azure, a później do usługi Azure Stack Hub. Zanotuj wszelkie niezgodności, których nie oczekiwano i przekaż opinię.

Następne kroki

Dowiedz się więcej o usłudze AKS w usłudze Azure Stack Hub