Ćwiczenie — wdrażanie klastra usługi Azure Kubernetes Service przy użyciu usługi Azure CNI

Ukończone

Notatka

To ćwiczenie jest opcjonalne. Jeśli chcesz wykonać to ćwiczenie, przed rozpoczęciem musisz utworzyć subskrypcję platformy Azure. Jeśli nie masz konta platformy Azure lub nie chcesz go tworzyć w tej chwili, możesz zapoznać się z instrukcjami, aby zrozumieć prezentowane informacje.

W tym ćwiczeniu wdrożysz sieci wirtualne, podsieci i tożsamości, a następnie wdrożysz klaster usługi Azure Kubernetes Service (AKS) przy użyciu wtyczki Azure Container Networking Interface (CNI).

Podszedłeś do działu IT twojej firmy i podano informacje zebrane na temat wymagań aplikacji, ustalania rozmiaru maszyny wirtualnej i określania rozmiaru sieci. Dział IT podał niektóre zakresy adresów sieciowych, których można użyć dla klastra.

W poniższej tabeli wymieniono wymagania i adresy IP udostępniane przez dział IT:

Przedmiot Opis Adresy IP
Podsieć AKS Adresy IP węzłów i zasobników w klastrze. Wymagane jest 248 adresów IP do użycia. 10.150.20.0/24
Podsieć usługi Kubernetes Adresy IP używane w klastrze dla usług Kubernetes. Nie może powodować konfliktu z innymi sieciami wirtualnymi ani sieciami lokalnymi. 10.240.0.0/24
Adres IP usługi Systemu nazw domen (DNS) Musi znajdować się w podsieci usługi Kubernetes, ale nie może być pierwszym adresem IP z dostępnego zakresu. 10.240.0.10
  • W przypadku podsieci AKS ustalono, że potrzebujesz 248 użytecznych adresów IP. Dział IT podał sieć 10.150.20.0/24, która zapewnia 251 adresów IP do użycia po uwzględnieniu pięciu adresów rezerwowych przez platformę Azure w każdej podsieci.
  • Podsieć usługi Kubernetes jest grupą adresów IP, które nie są używane w żadnych innych sieciach wirtualnych platformy Azure i nie powodują konfliktu z żadnymi zakresami sieci lokalnych. Ten zakres adresów jest używany tylko w klastrze. Dział IT wskazał, że należy użyć adresu 10.240.0.0/24.
  • adres IP usługi DNS jest pojedynczym adresem IP w zakresie adresów podsieci usługi Kubernetes , ale nie może być pierwszym adresem IP w tym zakresie. Podjęto decyzję o użyciu adresu IP DNS 10.240.0.10.

Tworzenie sieci wirtualnej i podsieci

W tym ćwiczeniu utworzysz sieć wirtualną i podsieć. W rzeczywistym środowisku możesz mieć zespół w dziale IT odpowiedzialny za zarządzanie sieciami i mogą utworzyć te zasoby dla ciebie.

  1. Uruchom usługi Azure Cloud Shell .

  2. Jeśli jeszcze nie zalogowałeś się na platformie Azure, zaloguj się do konta platformy Azure przy użyciu polecenia az login.

    az login
    
  3. Wybierz region platformy Azure, który jest blisko Ciebie, na przykład eastus. Zapisz wartość w zmiennej środowiskowej, aby można było jej użyć w pozostałej części ćwiczenia.

    AKSLocation=eastus
    
  4. Utwórz grupę zasobów AKSLearn, aby przechowywać zasoby w tym ćwiczeniu przy użyciu polecenia az group create.

    az group create --location $AKSLocation --name AKSLearn
    
  5. Utwórz sieć wirtualną AKSVirtualNetwork, używając polecenia az network vnet create.

    az network vnet create \
        --name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --address-prefixes 10.150.0.0/16  \
        --location $AKSLocation
    
  6. Utwórz podsieć AKSSubnetprzy użyciu polecenia az network vnet subnet create i określ zakres adresów dostarczony przez dział IT.

    az network vnet subnet create \
        --resource-group AKSLearn \
        --vnet-name AKSVirtualNetwork \
        --name AKSSubnet \
        --address-prefixes 10.150.20.0/24
    

Tworzenie tożsamości zarządzanej platformy Azure

Aby uzyskać dostęp do zasobów w ramach subskrypcji platformy Azure, musisz utworzyć tożsamość zarządzaną platformy Azure dla usługi AKS. Następujące dwa polecenia tworzą tożsamość zarządzaną platformy Azure, a następnie przechowują unikatową wartość identyfikatora w zmiennej środowiskowej do późniejszego użycia.

  1. Utwórz tożsamość zarządzaną platformy Azure AKSIdentity przy użyciu polecenia az identity create.

    az identity create \
        --name AKSIdentity \
        --resource-group AKSLearn
    
  2. Pobierz identyfikator tożsamości zarządzanej przy użyciu polecenia az identity show i zapisz go w zmiennej środowiskowej, identityId, aby użyć ich w późniejszych poleceniach.

    identityId=$(az identity show \
        --name AKSIdentity \
        --resource-group AKSLearn \
        --query id \
        --output tsv)
    

Utwórz klaster AKS

  1. Pobierz wartość identyfikatora zasobu podsieci przy użyciu polecenia az network vnet subnet list i zapisz ją w zmiennej środowiskowej, subnetId, aby użyć w kolejnych poleceniach.

    subnetId=$(az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[?name=='AKSSubnet'].id" \
        --output tsv)
    
  2. Utwórz klaster AKS, AKSCluster, za pomocą polecenia az aks create.

    az aks create \
        --name AKSCluster \
        --resource-group AKSLearn \
        --location $AKSLocation \
        --network-plugin azure \
        --vnet-subnet-id $subnetId \
        --service-cidr 10.240.0.0/24 \
        --dns-service-ip 10.240.0.10 \
        --generate-ssh-keys \
        --enable-managed-identity \
        --assign-identity $identityId \
        --node-vm-size  Standard_F8s_v2 \
        --node-count 3
    

    W poniższej tabeli opisano parametry używane w poleceniu az aks create:

    Parametr Opis
    --name Nazwa tworzonego klastra.
    --resource-group Grupa zasobów, w której ma zostać utworzony klaster.
    --location Region świadczenia usługi Azure, w którym należy utworzyć klaster.
    --network-plugin Określa, która wtyczka sieciowa ma być używana.
    --vnet-subnet-id Określa identyfikator zasobu podsieci do użycia.
    --service-cidr Określa zakres adresów usługi Kubernetes do użycia.
    --dns-service-ip Określa adres IP DNS do użycia.
    --generate-ssh-keys Tworzy zestaw kluczy SSH używanych do zabezpieczania węzłów.
    --enable-managed-identity Umożliwia korzystanie z tożsamości zarządzanej platformy Azure w celu uzyskania dostępu do zasobów w subskrypcji platformy Azure.
    --assign-identity Określa wartość identyfikatora tożsamości zarządzanej platformy Azure do wykorzystania.
    --node-vm-size Określa rozmiar maszyny wirtualnej do użycia.
    --node-count Określa liczbę węzłów do utworzenia.
  3. Po pomyślnym wdrożeniu klastra sprawdź szczegóły puli węzłów przy użyciu polecenia az aks nodepool list.

    az aks nodepool list \
        --cluster-name AKSCluster \
        --resource-group AKSLearn \
        --output table
    

    Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:

    Name       OsType    VmSize           Count    MaxPods    ProvisioningState    Mode
    ---------  --------  ---------------  -------  ---------  -------------------  ------
    nodepool1  Linux     Standard_F8s_v2  3        30         Succeeded            System
    

    W danych wyjściowych widać, że istnieją trzy węzły typu Standard_F8s_v2, wartość MaxPods wynosi 30, a tryb puli węzłów to System.

Potwierdzanie użycia adresu IP dla klastra

  • Sprawdź, ile adresów IP jest używanych przez klaster przy użyciu polecenia az network vnet subnet list.

    az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[].ipConfigurations.length(@)" \
        --output table
    

    To polecenie używa ciągu zapytania JMESPath do określenia liczby ipConfigurations zdefiniowanych w podsieci. maksymalna wartość wyjściowa powinna wynosić 93. Wdrożono trzy węzły na początku, więc każdy węzeł ma jeden adres IP. Użyto wartości domyślnej 30 dla maksymalnych zasobników, więc każdy węzeł ma 30 adresów IP wstępnie alokowanych dla zasobników do użycia. Całkowita liczba przydzielonych adresów IP do tej pory jest 3 x nodes + (30 pods * 3 nodes) = 93. Jednak niektóre adresy są zarezerwowane, więc dane wyjściowe mogą być mniejsze.

Dodawanie dodatkowego węzła do klastra

Zobaczmy, jak ma to wpływ na użycie adresu IP przez kradzież klastra i dodanie jeszcze jednego węzła.

  1. Przeskaluj klaster w górę i dodaj jeszcze jeden węzeł przy użyciu polecenia az aks scale.

    az aks scale \
        --name AKSCluster \
        --resource-group AKSLearn \
        --node-count=4
    
  2. Po pomyślnym zakończeniu polecenia potwierdź nowe szczegóły puli węzłów przy użyciu polecenia az aks nodepool list.

    az aks nodepool list \
        --cluster-name AKSCluster \
        --resource-group AKSLearn \
        --output table
    

    Dane wyjściowe powinny wyglądać podobnie do poniższych przykładowych danych wyjściowych, co pokazuje, że masz teraz cztery węzły.

    Name       OsType    VmSize           Count    MaxPods    ProvisioningState    Mode
    ---------  --------  ---------------  -------  ---------  -------------------  ------
    nodepool1  Linux     Standard_F8s_v2  4        30         Succeeded            System
    
  3. Sprawdź, ile adresów IP jest teraz używanych przez klaster przy użyciu polecenia az network vnet subnet list.

    az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[].ipConfigurations.length(@)" \
        --output table
    

    Tym razem maksymalna wartość wyjściowa powinna być 124, która jest 31 większa niż ostatnio. Jest to jeszcze jeden adres IP dla nowego węzła, a także kolejne 30 adresów IP wstępnie alokowanych dla zasobników uruchomionych w tym węźle. Jednak niektóre adresy są zarezerwowane, więc dane wyjściowe mogą być mniejsze.