Exercice - Déployer un cluster Azure Kubernetes Service avec Azure CNI

Effectué

Notes

Cet exercice est facultatif. Si vous souhaitez effectuer cet exercice, vous devrez créer un abonnement Azure avant de commencer. Si vous n’avez pas de compte Azure ou si vous ne souhaitez pas en créer un pour l’instant, vous pouvez lire les instructions pour comprendre les informations qui sont présentées.

Dans cet exercice, vous déployez des réseaux virtuels, des sous-réseaux et des identités, puis vous déployez un cluster Azure Kubernetes Service (AKS) à l’aide du plug-in Azure Container Networking Interface (CNI).

Vous avez sollicité le service informatique de votre entreprise et avez fourni les informations recueillies concernant les exigences de l’application, le dimensionnement des machines virtuelles (VM) et du réseau. Le service informatique a fourni certaines plages d’adresses réseau à utiliser pour le cluster.

Le tableau suivant répertorie les besoins, ainsi que les adresses IP fournies par le service informatique :

Élément Description Adresses IP
Sous-réseau AKS Adresses IP des nœuds et des pods du cluster. 248 adresses IP utilisables nécessaires. 10.150.20.0/24
Sous-réseau des services Kubernetes Adresses IP utilisées à l’intérieur du cluster pour les services Kubernetes. Ne doivent pas entrer en conflit avec d’autres réseaux virtuels ou locaux. 10.240.0.0/24
Adresse IP de service Domain Name System (DNS) Doit se trouver dans le sous-réseau du service Kubernetes, sans être la première adresse IP de la plage disponible. 10.240.0.10
  • Pour le sous-réseau AKS, vous avez identifié un besoin de 248 adresses IP utilisables. Votre service informatique a proposé le réseau 10.150.20.0/24, qui fournit 251 adresses IP utilisables une fois les cinq adresses réservées par Azure dans chaque sous-réseau prises en compte.
  • Le sous-réseau des services Kubernetes est un groupe d’adresses IP non utilisées dans les autres réseaux virtuels Azure et qui n’entrent pas en conflit avec des plages d’adresses réseau locales. Cette plage d’adresses est utilisée uniquement à l’intérieur du cluster. Votre service informatique vous a recommandé d’utiliser la plage d’adresses 10.240.0.0/24.
  • L’adresse IP du service DNS est une adresse IP située dans la plage d’adresses du sous-réseau des services Kubernetes. Toutefois, elle ne peut pas être la première adresse IP de cette plage. Vous avez décidé d’utiliser l’adresse 10.240.0.10 comme adresse IP du DNS.

Créer le réseau virtuel et le sous-réseau

Pour cet exercice, vous créez un réseau virtuel et un sous-réseau. Dans un environnement réel, une équipe de votre service informatique peut être responsable de la gestion des réseaux et crée ces ressources à votre place.

  1. Lancez Azure Cloud Shell.

  2. Si vous n’êtes pas connecté à Azure, connectez-vous à votre compte à l’aide de la commande az login.

    az login
    
  3. Choisissez une région Azure proche de vous, par exemple eastus pour les États-Unis. Stockez la valeur dans une variable d’environnement pour pouvoir l’utiliser dans le reste de l’exercice.

    AKSLocation=eastus
    
  4. Créez un groupe de ressources, AKSLearn, pour contenir les ressources de cet exercice à l’aide de la commande az group create.

    az group create --location $AKSLocation --name AKSLearn
    
  5. Créez un réseau virtuel, AKSVirtualNetwork, avec la commande az network vnet create.

    az network vnet create \
        --name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --address-prefixes 10.150.0.0/16  \
        --location $AKSLocation
    
  6. Créez un sous-réseau, AKSSubnet, à l’aide de la commande az network vnet subnet create et spécifiez la plage d’adresses fournie par le service informatique.

    az network vnet subnet create \
        --resource-group AKSLearn \
        --vnet-name AKSVirtualNetwork \
        --name AKSSubnet \
        --address-prefixes 10.150.20.0/24
    

Créer une identité managée Azure

Vous devez créer une identité managée Azure pour AKS à utiliser pour accéder aux ressources dans votre abonnement Azure. Les deux commandes suivantes permettent de créer une identité managée Azure, puis de stocker sa valeur d’ID unique dans une variable d’environnement pour une utilisation ultérieure.

  1. Créez une identité managée Azure, AKSIdentity, à l’aide de la commande az identity create.

    az identity create \
        --name AKSIdentity \
        --resource-group AKSLearn
    
  2. Obtenez l’ID de l’identité managée à l’aide de la commande az identity show et stockez-la dans une variable d’environnement, identityId, à utiliser dans les commandes ultérieures.

    identityId=$(az identity show \
        --name AKSIdentity \
        --resource-group AKSLearn \
        --query id \
        --output tsv)
    

Créer un cluster AKS

  1. Obtenez la valeur d’ID de la ressource du sous-réseau à l’aide de la commande az network vnet subnet list et stockez-la dans une variable d’environnement, subnetId, à utiliser dans les commandes ultérieures.

    subnetId=$(az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[?name=='AKSSubnet'].id" \
        --output tsv)
    
  2. Créez un cluster AKS, AKSCluster, avec la commande 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
    

    Le tableau suivant décrit les paramètres utilisés dans la commande az aks create :

    Paramètre Description
    --name Nom du cluster en cours de création.
    --resource-group Groupe de ressources où le cluster doit être créé.
    --location Région Azure où le cluster doit être créé.
    --network-plugin Spécifie le plugin réseau à utiliser.
    --vnet-subnet-id Spécifie l’ID de la ressource du sous-réseau à utiliser.
    --service-cidr Spécifie la plage d’adresses du service Kubernetes à utiliser.
    --dns-service-ip Spécifie l’adresse IP DNS à utiliser.
    --generate-ssh-keys Crée un ensemble de clés SSH utilisées pour sécuriser les nœuds.
    --enable-managed-identity Permet d’utiliser une identité managée Azure pour accéder aux ressources de l’abonnement Azure.
    --assign-identity Spécifie la valeur d’ID de l’identité managée Azure à utiliser.
    --node-vm-size Spécifie la taille de machine virtuelle à utiliser.
    --node-count Spécifie le nombre de nœuds à créer.
  3. Une fois le cluster déployé, vérifiez les détails du pool de nœuds à l’aide de la commande az aks nodepool list.

    az aks nodepool list \
        --cluster-name AKSCluster \
        --resource-group AKSLearn \
        --output table
    

    Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

    Name       OsType    VmSize           Count    MaxPods    ProvisioningState    Mode
    ---------  --------  ---------------  -------  ---------  -------------------  ------
    nodepool1  Linux     Standard_F8s_v2  3        30         Succeeded            System
    

    Depuis la sortie, vous pouvez voir qu’il existe trois nœuds de type Standard_F8s_v2, une valeur MaxPods de 30 et un mode de pool de nœuds System.

Confirmer l’utilisation des adresses IP du cluster

  • Vérifiez le nombre d’adresses IP utilisées par le cluster à l’aide de la commande az network vnet subnet list.

    az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[].ipConfigurations.length(@)" \
        --output table
    

    Cette commande utilise une chaîne de requête JMESPath pour déterminer le nombre de ipConfigurations définis dans le sous-réseau. la sortie maximale doit être 93. Vous avez déployé trois nœuds pour commencer. Ainsi, chaque nœud a une adresse IP. Vous avez utilisé la valeur par défaut 30 pour le nombre de pods maximum. Par conséquent, chaque nœud a 30 adresses IP préallouées pour les pods à utiliser. Le nombre total d’adresses IP allouées jusqu’à présent est 3 x nodes + (30 pods * 3 nodes) = 93. Toutefois, certaines adresses sont réservées afin que votre sortie puisse être inférieure.

Ajouter un nœud supplémentaire au cluster

Voyons comment l’utilisation de l’adresse IP est affectée par le vol du cluster et l’ajout d’un autre nœud.

  1. Effectuez un scale-up du cluster et ajoutez un autre nœud à l’aide de la commande az aks scale.

    az aks scale \
        --name AKSCluster \
        --resource-group AKSLearn \
        --node-count=4
    
  2. Une fois la commande achevée, confirmez les nouveaux détails du pool de nœuds à l’aide de la commande az aks nodepool list.

    az aks nodepool list \
        --cluster-name AKSCluster \
        --resource-group AKSLearn \
        --output table
    

    Votre sortie doit ressembler à l’exemple de sortie suivant qui montre la disponibilité actuelle de quatre nœuds.

    Name       OsType    VmSize           Count    MaxPods    ProvisioningState    Mode
    ---------  --------  ---------------  -------  ---------  -------------------  ------
    nodepool1  Linux     Standard_F8s_v2  4        30         Succeeded            System
    
  3. Vérifiez le nombre d’adresses IP utilisées à ce moment précis par le cluster à l’aide de la commande az network vnet subnet list.

    az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[].ipConfigurations.length(@)" \
        --output table
    

    Cette fois, la sortie maximum doit être de 124, soit 31 de plus que la dernière fois. Cela correspond à une adresse IP supplémentaire pour le nouveau nœud, plus 30 autres adresses IP préallouées pour les pods qui s’exécutent sur ce nœud. Toutefois, certaines adresses sont réservées afin que votre sortie puisse être inférieure.