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
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.
Pour afficher, puis vérifier les ressources NodeNetworkConfiguration (NNC) responsables de ces allocations IP, vous pouvez exécuter la commande suivante :
kubectl get nodenetworkconfigs -n kube-system -o wide
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 \
--generate-ssh-keys
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
Téléchargez ou exécutez grep sur le fichier nommé container-azm-ms-agentconfig.yaml à partir de GitHub.
Rechercher
azure_subnet_ip_usage
dans les intégrations. Définissezenabled
surtrue
.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
- Ouvrez le terminal dans le dossier où le fichier téléchargé container-azm-ms-agentconfig.yaml est enregistré.
- Appliquez la configuration en utilisant la commande
kubectl apply -f container-azm-ms-agentconfig.yaml
. Le pod redémarre et les métriques s’affichent au bout de 5-10 minutes. - Visualisez les métriques sur le cluster en accédant à Classeurs dans la page du cluster dans le portail Azure, puis recherchez le classeur nommé Utilisation d’une adresse IP de sous-réseau.
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 :
Azure Kubernetes Service