Ćwiczenie — wdrażanie klastra usługi Azure Kubernetes Service przy użyciu usługi Azure CNI
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.
Jeśli jeszcze nie zalogowałeś się na platformie Azure, zaloguj się do konta platformy Azure przy użyciu polecenia
az login
.az login
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
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
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
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.
Utwórz tożsamość zarządzaną platformy Azure AKSIdentity przy użyciu polecenia
az identity create
.az identity create \ --name AKSIdentity \ --resource-group AKSLearn
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
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)
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. 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 jest3 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.
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
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
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.