Oefening: een Azure Kubernetes Service-cluster implementeren met Azure CNI

Voltooid

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.

  1. Start Azure Cloud Shell.

  2. Als u nog niet bent aangemeld bij Azure, meldt u zich met de az login opdracht aan bij uw Azure-account.

    az login
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  1. Maak een door Azure beheerde identiteit, AKSIdentity, met behulp van de az identity create opdracht.

    az identity create \
        --name AKSIdentity \
        --resource-group AKSLearn
    
  2. 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

  1. 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)
    
  2. 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.
  3. 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, is 3 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.

  1. 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
    
  2. 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
    
  3. 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.