Configurer la mise en réseau Azure CNI pour l’allocation dynamique des adresses IP et la prise en charge améliorée des sous-réseaux dans Azure Kubernetes Service (AKS)

Un inconvénient de la CNI (Container Networking Interface) traditionnelle est l’épuisement des adresses IP de pod à mesure que le cluster AKS croît, ce qui entraîne le besoin de reconstruire l’ensemble de votre cluster dans un sous-réseau plus grand. La nouvelle fonctionnalité d’allocation d’adresses IP dynamique dans Azure CNI résout ce problème en allouant des adresses IP de pod à partir d’un sous-réseau séparé du sous-réseau hébergeant le cluster AKS.

Elle offre les avantages suivants :

  • Meilleure utilisation des adresses IP : les adresses IP sont allouées de façon dynamique aux pods du cluster à partir du sous-réseau de pod. Cela permet d’améliorer l’utilisation des adresses IP dans le cluster par rapport à la solution de CNI traditionnelle, qui effectue une allocation statique des adresses IP pour chaque nœud.
  • Scalabilité et flexibilité : les sous-réseaux de nœud et de pod peuvent être mis à l’échelle indépendamment. Un seul sous-réseau de pod peut être partagé entre plusieurs pools de nœuds d’un cluster ou plusieurs clusters AKS déployés dans le même réseau virtuel. Vous pouvez également configurer un sous-réseau de pod distinct pour un pool de nœuds.
  • Hautes performances : Les adresses IP du réseau virtuel étant affectées aux pods, ces derniers disposent d’une connectivité directe vers d’autres pods du cluster et des ressources dans le réseau virtuel. La solution prend en charge des clusters très volumineux sans dégradation des performances.
  • Stratégies de réseau virtuel distinctes pour les pods : étant donné que les pods ont un sous-réseau distinct, vous pouvez configurer ceux-ci des stratégies de réseau virtuel distinctes, qui diffèrent des stratégies de nœud. Cela permet de nombreux scénarii utiles, tels que l’autorisation de la connectivité Internet uniquement pour les pods et pas pour les nœuds, la correction de l’adresse IP source pour un pod dans un pool de nœuds à l’aide d’Azure NAT Gateway, ainsi que l’utilisation de groupes de sécurité réseau pour filtrer le trafic entre les pools de nœuds.
  • Stratégies réseau Kubernetes : les stratégies réseau Azure et Calico fonctionnent avec cette nouvelle solution.

Cet article vous montre comment utiliser la mise en réseau Azure CNI pour l’allocation dynamique des adresses IP et la prise en charge améliorée des sous-réseaux dans AKS.

Prérequis

Notes

Lorsque vous utilisez l’allocation dynamique d’adresses IP, l’exposition d’une application en tant que service Private Link à l’aide d’un service Kubernetes Load Balancer n’est pas prise en charge.

  • Passez en revue les prérequis à la configuration de la mise en réseau Azure CNI de base dans AKS, car les mêmes prérequis s’appliquent à cet article.

  • Passez en revue les paramètres de déploiement pour la configuration de la mise en réseau Azure CNI de base dans AKS, car les mêmes paramètres s’appliquent.

  • Le moteur AKS et les clusters en libre service ne sont pas pris en charge.

  • Azure CLI version 2.37.0 ou ultérieure.

  • Si vous disposez d’un cluster existant, vous devez activer Container Insights pour surveiller l’utilisation du sous-réseau IP. Vous pouvez activer Container Insights avec la commande az aks enable-addons, comme indiqué dans l’exemple suivant :

    az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    

Planifier l’adressage IP

La planification de votre adressage IP est beaucoup plus simple avec cette fonctionnalité. Étant donné que les nœuds et les pods se mettent à l’échelle indépendamment, leurs espaces d’adressage peuvent également être planifiés séparément. Étant donné que les sous-réseaux de pod peuvent être configurés pour la granularité d’un pool de nœuds, vous pouvez toujours ajouter un sous-réseau quand vous ajoutez un pool de nœuds. Les pods système dans un cluster/pool de nœuds recevant également des adresses IP du sous-réseau de pod, ce comportement doit être pris en compte.

Les adresses IP sont allouées aux nœuds par lots de 16. L’allocation d’adresses IP du sous-réseau de pods doit être planifiée avec un minimum de 16 adresses IP par nœud dans le cluster. Les nœuds demandent 16 adresses IP au démarrage et demandent un autre lot de 16 chaque fois que <8 adresses IP sont non allouées dans leur unité.

La planification des adresses IP pour les services Kubernetes et le pont Docker reste inchangée.

Nombre maximal de pods par nœud dans un cluster avec allocation dynamique d’adresses IP et prise en charge de sous-réseau améliorée

Les valeurs de pods par nœud lors de l’utilisation d’Azure CNI avec allocation dynamique d’adresses IP diffèrent légèrement par rapport au comportement de la CNI traditionnelle :

CNI Default Configurable au moment du déploiement
Azure CNI traditionnelle 30 Oui (jusqu’à 250)
Azure CNI avec allocation dynamique d’adresses IP 250 Oui (jusqu’à 250)

Toutes les autres instructions relatives à la configuration du nombre maximal de nœuds par pod restent les mêmes.

Paramètres de déploiement

Les paramètres de déploiement pour la configuration de la mise en réseau Azure CNI de base dans AKS sont tous valides, à deux exceptions près :

  • Le paramètre sous-réseau fait désormais référence au sous-réseau associé aux nœuds du cluster.
  • Un paramètre supplémentaire sous-réseau de pod est utilisé pour spécifier le sous-réseau dont les adresses IP seront allouées de façon dynamique aux pods.

Configurer la mise en réseau avec allocation dynamique d’adresses IP et prise en charge des sous-réseaux améliorée – Azure CLI

L’utilisation de l’allocation dynamique d’adresses IP et de la prise en charge de sous-réseau améliorée dans votre cluster est similaire à la méthode par défaut pour la configuration d’une Azure CNI de cluster. L’exemple suivant présente la création d’un réseau virtuel avec un sous-réseau pour les nœuds et un sous-réseau pour les pods, et la création d’un cluster qui utilise Azure CNI avec l’allocation dynamique d’adresses IP et la prise en charge de sous-réseau améliorée. Veillez à remplacer les variables comme $subscription par vos propres valeurs.

Créez le réseau virtuel avec deux sous-réseaux.

RESOURCE_GROUP_NAME="myResourceGroup"
VNET_NAME="myVirtualNetwork"
LOCATION="westcentralus"
SUBNET_NAME_1="nodesubnet"
SUBNET_NAME_2="podsubnet"

# Create the resource group
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

# Create our two subnet network 
az network vnet create --resource-group $RESOURCE_GROUP_NAME --location $LOCATION --name $VNET_NAME --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_1 --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_2 --address-prefixes 10.241.0.0/16 -o none 

Créez le cluster en référençant le sous-réseau de nœud à l’aide de --vnet-subnet-id et le sous-réseau de pod à l’aide de --pod-subnet-id puis en activant le module complémentaire d’analyse.

CLUSTER_NAME="myAKSCluster"
SUBSCRIPTION="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --location $LOCATION \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_1 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_2 \
    --enable-addons monitoring

Ajout d’un pool de nœuds

Lorsque vous ajoutez un pool de nœuds, référencez le sous-réseau de nœud à l’aide de --vnet-subnet-id et le sous-réseau de pod à l’aide de --pod-subnet-id. L’exemple suivant crée deux sous-réseaux qui sont ensuite référencés dans la création d’un nouveau pool de nœuds :

SUBNET_NAME_3="node2subnet"
SUBNET_NAME_4="pod2subnet"
NODE_POOL_NAME="mynodepool"

az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_3 --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_4 --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --name $NODE_POOL_NAME \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_3 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_4 \
    --no-wait

Monitorer l’utilisation du sous-réseau IP

Azure CNI offre la possibilité de monitorer l’utilisation du sous-réseau IP. Pour activer le monitoring de l’utilisation du sous-réseau IP, suivez les étapes ci-dessous :

Obtenir le fichier YAML

  1. Téléchargez ou exécutez grep sur le fichier nommé container-azm-ms-agentconfig.yaml à partir de GitHub.

  2. Rechercher azure_subnet_ip_usage dans les intégrations. Définissez enabled sur true.

  3. Enregistrez le fichier .

Récupérer les informations d’identification AKS

Définissez les variables pour l’abonnement, le groupe de ressources et le cluster. Voici quelques exemples :

az account set --subscription $SUBSCRIPTION
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME

Appliquer la configuration

  1. Ouvrez le terminal dans le dossier contenant le fichier téléchargé container-azm-ms-agentconfig.yaml.

  2. Tout d’abord, appliquez la configuration avec la commande : kubectl apply -f container-azm-ms-agentconfig.yaml

  3. Le pod redémarre et les métriques s’affichent au bout de 5-10 minutes.

  4. Pour voir les métriques sur le cluster, accédez à Workbooks dans la page du cluster dans le portail Azure, puis recherchez le workbook nommé « Utilisation d’une IP de sous-réseau ». Votre vue ressemble à la suivante :

    A diagram of the Azure portal's workbook blade is shown, and metrics for an AKS cluster's subnet IP usage are displayed.

FAQ sur l’allocation dynamique d’adresses IP et la prise en charge de sous-réseau améliorée

  • Puis-je attribuer plusieurs sous-réseaux de pod à un cluster/pool de nœuds ?

    Vous ne pouvez attribuer qu’un seul sous-réseau à un cluster ou pool de nœuds. Toutefois, plusieurs clusters ou pools de nœuds peuvent partager un même sous-réseau.

  • Puis-je attribuer des sous-réseaux de pod entièrement à partir d’un autre réseau virtuel ?

    Non, le sous-réseau de pod doit provenir du même réseau virtuel que le cluster.

  • Certains pools de nœuds dans un cluster peuvent-ils utiliser la CNI traditionnelle, tandis que d’autres utilisent la nouvelle CNI ?

    Le cluster tout entier ne doit utiliser qu’un seul type de CNI.

Étapes suivantes

Pour plus d’informations sur la mise en réseau dans AKS, consultez les articles suivants :