Övning – Distribuera ett Azure Kubernetes Service-kluster med Azure CNI
Kommentar
Den här övningen är valfri. Om du vill slutföra den här övningen måste du skapa en Azure-prenumeration innan du börjar. Om du inte har något Azure-konto eller om du inte vill skapa ett för tillfället kan du läsa igenom anvisningarna så att du förstår den information som visas.
I den här övningen distribuerar du virtuella nätverk, undernät och identiteter och distribuerar sedan ett AkS-kluster (Azure Kubernetes Service) med hjälp av plugin-programmet Azure Container Networking Interface (CNI).
Du kontaktade företagets IT-avdelning och tillhandahöll den information du samlade in om programkraven, storleken på virtuella datorer (VM) och nätverksstorleken. IT-avdelningen tillhandahöll några nätverksadressintervall som du kan använda för klustret.
I följande tabell visas de krav och IP-adresser som tillhandahålls av IT-avdelningen:
Objekt | beskrivning | IP-adresser |
---|---|---|
AKS-undernät | IP-adresser för noderna och poddarna i klustret. 248 användbara IP-adresser krävs. | 10.150.20.0/24 |
Kubernetes-tjänstens undernät | IP-adresser som används i klustret för Kubernetes-tjänster. Får inte vara i konflikt med andra virtuella nätverk eller lokala nätverk. | 10.240.0.0/24 |
DNS-tjänstens IP-adress (Domain Name System) | Måste finnas i Kubernetes-tjänstens undernät, men kan inte vara den första IP-adressen från det tillgängliga intervallet. | 10.240.0.10 |
- För AKS-undernätet har du fastställt att du behöver 248 användbara IP-adresser. IT-avdelningen gav nätverket 10.150.20.0/24, som tillhandahåller 251 användbara IP-adresser efter att ha redovisat de fem adresser som Azure reserverar i varje undernät.
- Kubernetes-tjänstens undernät är en grupp IP-adresser som inte används i andra virtuella Azure-nätverk och inte står i konflikt med några lokala nätverksintervall. Det här adressintervallet används bara i klustret. It-avdelningen angav att du skulle använda 10.240.0.0/24.
- DNS-tjänstens IP-adress är en enskild IP-adress inom Kubernetes-tjänstens undernätsintervall med adresser, men kan inte vara den första IP-adressen i det intervallet. Du bestämde dig för att använda 10.240.0.10 som DNS IP-adress.
Skapa det virtuella nätverket och undernätet
I den här övningen skapar du ett virtuellt nätverk och undernät. I en verklig miljö kan du ha ett team på it-avdelningen som ansvarar för att hantera nätverk och de kan skapa dessa resurser åt dig.
Starta Azure Cloud Shell.
Om du inte redan är inloggad i Azure loggar du in på ditt Azure-konto med kommandot
az login
.az login
Välj en Azure-region som ligger nära dig, till exempel eastus. Lagra värdet i en miljövariabel så att du kan använda det i resten av övningen.
AKSLocation=eastus
Skapa en resursgrupp, AKSLearn, för att lagra resurserna i den här övningen
az group create
med kommandot .az group create --location $AKSLocation --name AKSLearn
Skapa ett virtuellt nätverk, AKSVirtualNetwork, med kommandot
az network vnet create
.az network vnet create \ --name AKSVirtualNetwork \ --resource-group AKSLearn \ --address-prefixes 10.150.0.0/16 \ --location $AKSLocation
Skapa ett undernät, AKSSubnet, med hjälp av
az network vnet subnet create
kommandot och ange adressintervallet som tillhandahålls av IT-avdelningen.az network vnet subnet create \ --resource-group AKSLearn \ --vnet-name AKSVirtualNetwork \ --name AKSSubnet \ --address-prefixes 10.150.20.0/24
Skapa en hanterad Azure-identitet
Du måste skapa en Azure-hanterad identitet som AKS kan använda för att få åtkomst till resurser i din Azure-prenumeration. Följande två kommandon skapar en Azure Managed Identity och lagrar sedan dess unika ID-värde i en miljövariabel för senare användning.
Skapa en Hanterad Azure-identitet, AKSIdentity, med hjälp av
az identity create
kommandot .az identity create \ --name AKSIdentity \ --resource-group AKSLearn
Hämta ID för den hanterade identiteten
az identity show
med kommandot och lagra det i en miljövariabel, identityId, som ska användas i senare kommandon.identityId=$(az identity show \ --name AKSIdentity \ --resource-group AKSLearn \ --query id \ --output tsv)
Skapa ett AKS-kluster
Hämta resurs-ID-värdet för undernätet med kommandot
az network vnet subnet list
och lagra det i en miljövariabel, subnetId, som ska användas i senare kommandon.subnetId=$(az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[?name=='AKSSubnet'].id" \ --output tsv)
Skapa ett AKS-kluster, AKSCluster, med kommandot
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
I följande tabell beskrivs de parametrar som används i
az aks create
kommandot:Parameter Description --name
Namnet på klustret som skapas. --resource-group
Den resursgrupp där klustret ska skapas. --location
Den Azure-region där klustret ska skapas. --network-plugin
Anger vilket nätverksinsticksprogram som ska användas. --vnet-subnet-id
Anger resurs-ID för undernätet som ska användas. --service-cidr
Anger det Kubernetes-tjänstadressintervall som ska användas. --dns-service-ip
Anger den DNS IP-adress som ska användas. --generate-ssh-keys
Skapar en uppsättning SSH-nycklar som används för att skydda noderna. --enable-managed-identity
Möjliggör användning av Azure-hanterad identitet för åtkomst till resurser i Azure-prenumerationen. --assign-identity
Anger ID-värdet för den Azure-hanterade identitet som ska användas. --node-vm-size
Anger den VM-storlek som ska användas. --node-count
Anger antalet noder som ska skapas. När klustret har distribuerats kontrollerar du informationen om nodpoolen
az aks nodepool list
med hjälp av kommandot .az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
Dina utdata bör se ut ungefär som följande exempelutdata:
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 3 30 Succeeded System
Från utdata kan du se att det finns tre noder av typen Standard_F8s_v2, ett MaxPods-värde på 30 och ett nodpoolsläge på
System
.
Bekräfta IP-adressanvändningen för klustret
Kontrollera hur många IP-adresser som används av klustret med hjälp av
az network vnet subnet list
kommandot .az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Det här kommandot använder en JMESPath-frågesträng för att avgöra hur många
ipConfigurations
som definieras i undernätet. maximalt antal utdata ska vara 93. Du har distribuerat tre noder till att börja med, så varje nod har en IP-adress. Du använde standardvärdet 30 för maximalt antal poddar, så varje nod har 30 IP-adresser förallokerade för poddar att använda. Det totala antalet IP-adresser som har allokerats hittills är3 x nodes + (30 pods * 3 nodes) = 93
. Vissa adresser är dock reserverade så att dina utdata kan vara mindre.
Lägga till en extra nod i klustret
Nu ska vi se hur IP-adressanvändningen påverkas genom att stjäla klustret och lägga till ytterligare en nod.
Skala upp klustret och lägg till ytterligare en nod med kommandot
az aks scale
.az aks scale \ --name AKSCluster \ --resource-group AKSLearn \ --node-count=4
När kommandot har slutförts bekräftar du den nya informationen om nodpoolen
az aks nodepool list
med kommandot .az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
Dina utdata bör se ut ungefär som i följande exempelutdata, som visar att du nu har fyra noder.
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 4 30 Succeeded System
Kontrollera hur många IP-adresser som nu används av klustret med hjälp av
az network vnet subnet list
kommandot .az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Den här gången ska maximalt antal utdata vara 124, vilket är 31 fler än förra gången. Det är ytterligare en IP-adress för den nya noden, plus ytterligare 30 IP-adresser som är förallokerade för poddarna som körs på noden. Vissa adresser är dock reserverade så att dina utdata kan vara mindre.