Övning – Distribuera ett Azure Kubernetes Service-kluster med Azure CNI

Slutförd

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.

  1. Starta Azure Cloud Shell.

  2. Om du inte redan är inloggad i Azure loggar du in på ditt Azure-konto med kommandot az login .

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

  1. Skapa en Hanterad Azure-identitet, AKSIdentity, med hjälp av az identity create kommandot .

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

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

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