Oefening: een Azure Kubernetes Service-cluster implementeren met Azure CNI
Notitie
Deze oefening is optioneel. Als u deze oefening wilt voltooien, moet u een Azure-abonnement maken voordat u begint. Als u geen Azure-account hebt of als u er op dit moment geen wilt maken, kunt u de instructies doorlezen zodat u de informatie begrijpt die wordt gepresenteerd.
In deze oefening implementeert u virtuele netwerken, subnetten en identiteiten en implementeert u vervolgens een AKS-cluster (Azure Kubernetes Service) met behulp van de CNI-invoegtoepassing (Azure Container Networking Interface).
U hebt de IT-afdeling van uw bedrijf benaderd en de informatie opgegeven die u hebt verzameld over de toepassingsvereisten, de grootte van de virtuele machine (VM) en de netwerkgrootte. De IT-afdeling heeft een aantal netwerkadresbereiken geleverd die u voor het cluster kunt gebruiken.
De volgende tabel bevat de vereisten en IP-adressen van de IT-afdeling:
Item | Beschrijving | IP-adressen |
---|---|---|
AKS-subnet | IP-adressen voor de knooppunten en pods in het cluster. Er zijn 248 bruikbare IP-adressen vereist. | 10.150.20.0/24 |
Kubernetes-servicesubnet | IP-adressen die in het cluster worden gebruikt voor Kubernetes-services. Mag geen conflict veroorzaken met andere virtuele netwerken of on-premises netwerken. | 10.240.0.0/24 |
IP-adres van DNS-service (Domain Name System) | Moet zich in het Kubernetes-servicesubnet bevinden, maar kan niet het eerste IP-adres uit het beschikbare bereik zijn. | 10.240.0.10 |
- Voor het AKS-subnet hebt u vastgesteld dat u 248 bruikbare IP-adressen nodig hebt. Uw IT-afdeling heeft het netwerk 10.150.20.0/24 gegeven, dat 251 bruikbare IP-adressen biedt na de boekhouding voor de vijf adressen die Azure in elk subnet reserveert.
- Het Subnet van de Kubernetes-service is een groep IP-adressen die niet worden gebruikt in andere virtuele Azure-netwerken en die niet conflicteren met on-premises netwerkbereiken. Dit adresbereik wordt alleen gebruikt in het cluster. Uw IT-afdeling heeft aangegeven dat u 10.240.0.0/24 moet gebruiken.
- Het IP-adres van de DNS-service is één IP-adres binnen het subnetbereik van de Kubernetes-service, maar kan niet het eerste IP-adres in dat bereik zijn. U hebt besloten om 10.240.0.10 te gebruiken als het DNS-IP-adres.
Het virtuele netwerk en subnet maken
Voor deze oefening maakt u een virtueel netwerk en subnet. In een echte omgeving hebt u mogelijk een team in uw IT-afdeling die verantwoordelijk is voor het beheren van netwerken en ze kunnen deze resources voor u maken.
Start Azure Cloud Shell.
Als u nog niet bent aangemeld bij Azure, meldt u zich met de
az login
opdracht aan bij uw Azure-account.az login
Kies een Azure-regio die zich dicht bij u bevindt, bijvoorbeeld eastus. Sla de waarde op in een omgevingsvariabele, zodat u deze in de rest van de oefening kunt gebruiken.
AKSLocation=eastus
Maak een resourcegroep, AKSLearn, om de resources in deze oefening op te slaan met behulp van de
az group create
opdracht.az group create --location $AKSLocation --name AKSLearn
Maak een virtueel netwerk, AKSVirtualNetwork, met behulp van de
az network vnet create
opdracht.az network vnet create \ --name AKSVirtualNetwork \ --resource-group AKSLearn \ --address-prefixes 10.150.0.0/16 \ --location $AKSLocation
Maak een subnet, AKSSubnet, met behulp van de
az network vnet subnet create
opdracht en geef het adresbereik op dat is opgegeven door de IT-afdeling.az network vnet subnet create \ --resource-group AKSLearn \ --vnet-name AKSVirtualNetwork \ --name AKSSubnet \ --address-prefixes 10.150.20.0/24
Een door Azure beheerde identiteit maken
U moet een door Azure beheerde identiteit voor AKS maken om toegang te krijgen tot resources binnen uw Azure-abonnement. Met de volgende twee opdrachten maakt u een azure Managed Identity en slaat u de unieke id-waarde op in een omgevingsvariabele voor later gebruik.
Maak een door Azure beheerde identiteit, AKSIdentity, met behulp van de
az identity create
opdracht.az identity create \ --name AKSIdentity \ --resource-group AKSLearn
Haal de id van de beheerde identiteit op met behulp van de
az identity show
opdracht en sla deze op in een omgevingsvariabele, identityId, om deze in latere opdrachten te gebruiken.identityId=$(az identity show \ --name AKSIdentity \ --resource-group AKSLearn \ --query id \ --output tsv)
Een AKS-cluster maken
Haal de resource-id-waarde van het subnet op met behulp van de
az network vnet subnet list
opdracht en sla deze op in een omgevingsvariabele, subnetId, om in latere opdrachten te gebruiken.subnetId=$(az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[?name=='AKSSubnet'].id" \ --output tsv)
Maak een AKS-cluster, AKSCluster, met behulp van de
az aks create
opdracht.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
In de volgende tabel worden de parameters beschreven die in de
az aks create
opdracht worden gebruikt:Parameter Description --name
De naam van het cluster dat wordt gemaakt. --resource-group
De resourcegroep waarin het cluster moet worden gemaakt. --location
De Azure-regio waar het cluster moet worden gemaakt. --network-plugin
Hiermee geeft u op welke netwerkinvoegtoepassing moet worden gebruikt. --vnet-subnet-id
Hiermee geeft u de resource-id van het subnet dat moet worden gebruikt. --service-cidr
Hiermee geeft u het adresbereik van de Kubernetes-service op dat moet worden gebruikt. --dns-service-ip
Hiermee geeft u het DNS IP-adres te gebruiken. --generate-ssh-keys
Hiermee maakt u een set SSH-sleutels die worden gebruikt om de knooppunten te beveiligen. --enable-managed-identity
Maakt het gebruik van beheerde Azure-identiteit mogelijk voor toegang tot resources in het Azure-abonnement. --assign-identity
Hiermee geeft u de id-waarde van de beheerde Azure-identiteit op die moet worden gebruikt. --node-vm-size
Hiermee geeft u de VM-grootte op die moet worden gebruikt. --node-count
Hiermee geeft u het aantal knooppunten dat moet worden gemaakt. Zodra het cluster is geïmplementeerd, controleert u de details van de knooppuntgroep met behulp van de
az aks nodepool list
opdracht.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 3 30 Succeeded System
In de uitvoer ziet u dat er drie Standard_F8s_v2 knooppunten zijn, een MaxPods-waarde van 30 en een knooppuntgroepmodus van
System
.
Ip-adresgebruik voor het cluster bevestigen
Controleer met de
az network vnet subnet list
opdracht hoeveel IP-adressen door het cluster worden gebruikt.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Deze opdracht maakt gebruik van een JMESPath-queryreeks om te bepalen hoeveel
ipConfigurations
er zijn gedefinieerd in het subnet. de maximale uitvoer moet 93 zijn. U hebt drie knooppunten geïmplementeerd om mee te beginnen, dus elk knooppunt heeft één IP-adres. U hebt de standaardwaarde van 30 gebruikt voor de maximumpods, dus elk knooppunt heeft 30 IP-adressen vooraf toegewezen voor gebruik van pods. Het totale aantal IP-adressen dat tot nu toe is toegewezen, is3 x nodes + (30 pods * 3 nodes) = 93
. Sommige adressen zijn echter gereserveerd, zodat uw uitvoer minder kan zijn.
Een extra knooppunt toevoegen aan het cluster
Laten we eens kijken hoe het ip-adresgebruik wordt beïnvloed door het cluster te stelen en nog een knooppunt toe te voegen.
Schaal het cluster omhoog en voeg nog een knooppunt toe met behulp van de
az aks scale
opdracht.az aks scale \ --name AKSCluster \ --resource-group AKSLearn \ --node-count=4
Zodra de opdracht is voltooid, bevestigt u de nieuwe details van de knooppuntgroep met behulp van de
az aks nodepool list
opdracht.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
Uw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin u nu vier knooppunten hebt.
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 4 30 Succeeded System
Controleer met de
az network vnet subnet list
opdracht hoeveel IP-adressen nu door het cluster worden gebruikt.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Deze keer moet de maximale uitvoer 124 zijn. Dit is 31 meer dan de laatste keer. Dat is nog één IP-adres voor het nieuwe knooppunt, plus nog eens 30 IP-adressen die vooraf zijn toegewezen voor de pods die op dat knooppunt worden uitgevoerd. Sommige adressen zijn echter gereserveerd, zodat uw uitvoer minder kan zijn.