Vue d’ensemble de la mise en réseau Azure CNI dans Azure Kubernetes Service (AKS)

Par défaut, les clusters AKS utilisent kubenet, et un réseau et un sous-réseau virtuels sont créés. Avec kubenet, les nœuds obtiennent une adresse IP d’un sous-réseau du réseau virtuel. La traduction d’adresses réseau (NAT) est ensuite configurée sur les nœuds, et les pods reçoivent une adresse IP « cachée » derrière l’adresse IP du nœud. Cette approche réduit le nombre d’adresses IP que vous avez besoin de réserver dans votre espace réseau à l’usage des pods.

Avec l’interface Azure Container Networking Interface (CNI), chaque pod reçoit une adresse IP du sous-réseau et est accessible directement. Les systèmes dans le même réseau virtuel que le cluster AKS voient l’adresse IP du pod comme l’adresse source pour tout trafic en provenance du pod. Les systèmes situés en dehors du réseau virtuel du cluster AKS voient l’adresse IP du nœud en tant qu’adresse source pour tout le trafic en provenance du pod. Ces adresses IP doivent être uniques dans votre espace réseau et doivent être planifiées à l’avance. Chaque nœud possède un paramètre de configuration pour le nombre maximal de pods qu’il prend en charge. Le nombre équivalent d’adresses IP par nœud est alors réservé à l’avance pour ce nœud. Cette approche nécessite davantage de planification. De plus, elle conduit souvent à l’épuisement des adresses IP ou à la nécessité de regénérer les clusters dans un sous-réseau plus vaste à mesure que vos demandes d’applications augmentent.

Remarque

Cet article présente uniquement azure CNI traditionnel. Pour la superposition Azure CNI, le réseau virtuel Azure CNI pour l’allocation d’adresses IP dynamiques et le réseau virtuel Azure CNI – Allocation de blocs statiques (préversion). Veuillez vous reporter à leur documentation à la place.

Prérequis

  • Le réseau virtuel du cluster AKS doit autoriser les connexions Internet sortantes.

  • Les clusters AKS ne peuvent pas utiliser 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 ou 192.0.2.0/24 pour la plage d’adresses de service Kubernetes, la plage d’adresses de pod ou la plage d’adresses de réseau virtuel de cluster.

  • L’identité de cluster utilisée par le cluster AKS doit au moins disposer des autorisations Contributeur de réseau sur le sous-réseau de votre réseau virtuel. Si vous souhaitez définir un rôle personnalisé au lieu d’utiliser le rôle de contributeur de réseau intégré, les autorisations suivantes sont nécessaires :

    • Microsoft.Network/virtualNetworks/subnets/join/action

    • Microsoft.Network/virtualNetworks/subnets/read

    • Microsoft.Authorization/roleAssignments/write

  • Le sous-réseau affecté au pool de nœuds AKS ne peut pas être un sous-réseau délégué.

  • AKS n’applique pas les groupes de sécurité réseau (NSG) à son sous-réseau et ne modifie pas les NSG associés à ce sous-réseau. Si vous fournissez votre propre sous-réseau et ajoutez des groupes associés à ce sous-réseau, vous devez vous assurer que les règles de sécurité dans les groupes autorisent le trafic dans la plage du noeud CIDR. Pour plus d’informations, consultez Groupes de sécurité réseau.

Planifier l’adressage IP pour votre cluster

Les clusters configurés avec la mise en réseau Azure CNI nécessitent une planification supplémentaire. La taille de votre réseau virtuel et de son sous-réseau doit être suffisante pour prendre en charge le nombre de pods que vous envisagez d’exécuter, ainsi que le nombre de nœuds du cluster.

Les adresses IP des pods et des nœuds de cluster sont affectées à partir du sous-réseau spécifié du réseau virtuel. Chaque nœud est configuré avec une adresse IP principale. Azure CNI préconfigure 30 adresses IP supplémentaires par défaut. Ces adresses IP sont affectées aux pods planifiés sur le nœud. Lorsque vous effectuez un scale-out de votre cluster, chaque nœud est configuré de manière similaire avec des adresses IP du sous-réseau. Vous pouvez également voir le nombre maximal de pods par nœud.

Important

Le nombre d’adresses IP requises doit prendre en compte des considérations relatives aux opérations de mise à niveau et à l’échelle. Si vous définissez la plage d’adresses IP pour prendre en charge uniquement un nombre fixe de nœuds, vous ne pouvez pas mettre à niveau ou mettre à l’échelle votre cluster.

  • Lorsque vous mettez à niveau votre cluster AKS, un nouveau nœud est déployé dans le cluster. Les services et charges de travail commencent à s’exécuter sur le nouveau nœud, et le nœud plus ancien est supprimé du cluster. Ce processus de mise à niveau propagée nécessite la disponibilité d’un minimum d’adresses IP ou de bloc supplémentaires. Le nombre de nœuds est alors n + 1.

    • Cette considération est particulièrement importante lorsque vous utilisez des pools de nœuds Windows Server. Les nœuds Windows Server dans AKS n'appliquent pas automatiquement les mises à jour Windows. En revanche, vous devez effectuer une mise à niveau sur le pool de nœuds. Cette mise à niveau déploie les nouveaux nœuds avec les derniers correctifs de sécurité et image de nœud de base Windows Server 2019. Pour plus d’informations sur la mise à niveau d’un pool de nœuds Windows Server, consultez Upgrade a node pool (Mettre à niveau un pool de nœuds).
  • Lorsque vous mettez à l’échelle un cluster AKS, un nouveau nœud est déployé dans le cluster. Les services et charges de travail commencent à s’exécuter sur le nouveau nœud. Votre plage d’adresses IP doit tenir compte de la manière dont vous voulez faire le scale-up du nombre de nœuds et de pods que votre cluster prend en charge. Un nœud supplémentaire pour les opérations de mise à niveau doit également être inclus. Le nombre de nœuds est alors n + number-of-additional-scaled-nodes-you-anticipate + 1.

Si vous vous attendez à ce que vos nœuds exécutent le nombre maximal de pods, détruisent et déploient régulièrement des pods, vous devez également prendre en compte des adresses IP supplémentaires par nœud. La suppression d’un service et la libération de son adresse IP peuvent prendre quelques secondes avant qu’un nouveau service puisse être déployé et acquérir l’adresse. Ces adresses IP supplémentaires prennent en compte cette possibilité.

Le plan d’adressage IP pour un cluster AKS se compose d’un réseau virtuel, d’au moins un sous-réseau pour les nœuds et les pods, et d’une plage d’adresses de service Kubernetes.

Plage Azure/ressource Azure Limites et tailles
Réseau virtuel Le réseau virtuel Azure peut être aussi volumineux que la valeur /8, mais est limité à 65 536 adresses IP configurées. Avant de configurer votre espace d’adressage, prenez en compte tous vos besoins en matière de mise en réseau, dont la communication avec des services dans d’autres réseaux virtuels. Par exemple, si vous configurez un espace d’adressage trop grand, vous risquez de rencontrer des problèmes de chevauchement avec d’autres espaces d’adressage au sein de votre réseau.
Subnet Doit pouvoir contenir les nœuds, les pods, ainsi que toutes les ressources Kubernetes et Azure qui peuvent être provisionnées dans votre cluster. Par exemple, si vous déployez un équilibreur de charge interne Azure, ses adresses IP frontend sont allouées à partir du sous-réseau du cluster, et non à partir des adresses IP non publiques. La taille du sous-réseau doit également prendre en compte les opérations de mise à niveau ou de futurs besoins de mise à l’échelle.

Utilisez l’équation suivante pour calculer la taille minimale du sous-réseau, y compris un nœud supplémentaire pour les opérations de mise à niveau : (number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)

Exemple pour un cluster de 50 nœuds : (51) + (51 * 30 (default)) = 1,581 (/21 ou plus)

Exemple pour un cluster de 50 nœuds qui inclut également une préparation pour effectuer un scale-up de 10 nœuds supplémentaires : (61) + (61 * 30 (default)) = 1,891 (/21 ou plus)

Si vous ne spécifiez pas de nombre maximal de pods par nœud lorsque vous créez votre cluster, le nombre maximal de pods par nœud est de 30. Le nombre minimal d’adresses IP requises est basé sur cette valeur. Si vous calculez vos besoins en adresses IP minimales sur une valeur maximale différente, consultez Pods maximal par nœud pour définir cette valeur lorsque vous déployez votre cluster.

Plage d’adresses de service Kubernetes Tout élément réseau sur ce réseau virtuel ou connecté à celui-ci ne doit pas utiliser cette plage. Le CIDR d’adresse du service doit être inférieur à /12. Vous pouvez réutiliser cette plage sur différents clusters AKS.
Adresse IP du service DNS Kubernetes Adresse IP dans la plage d’adresses de service Kubernetes qui est utilisée par la détection de service de cluster. N’utilisez pas la première adresse IP de votre plage d’adresses. La première adresse de votre plage de sous-réseaux est utilisée pour l’adresse kubernetes.default.svc.cluster.local.

Nombre maximal de pods par nœud

Le nombre maximal de pods par nœud dans un cluster AKS est de 250. Le nombre maximal par défaut de pods par nœud varie selon qu’il s’agit d’un réseau kubenet ou Azure CNI, mais aussi en fonction de la méthode de déploiement du cluster.

Méthode de déploiement Kubenet par défaut Azure CNI par défaut Configurable au moment du déploiement
Azure CLI 110 30 Oui (jusqu’à 250)
Modèle Resource Manager 110 30 Oui (jusqu’à 250)
Portail 110 110 (configurable dans l’onglet Pools de nœuds) Oui (jusqu’à 250)

Configurer le nombre maximal de pods par nœud pour les nouveaux clusters

Vous pouvez configurer le nombre maximal de pods par nœud au moment du déploiement du cluster ou lorsque vous ajoutez de nouveaux pools de nœuds. Vous pouvez définir le nombre maximal de pods par valeur de nœud jusqu’à 250.

Si vous ne spécifiez pas le paramètre maxPods lors de la création de pools de nœuds, vous recevez une valeur par défaut de 30 pour Azure CNI.

Une valeur minimale pour le nombre maximal de pods par nœud est appliquée afin de garantir l’espace des blocs système critiques pour l’intégrité du cluster. La valeur minimale qui peut être définie pour le nombre maximal de pods par nœud est égale à 10 si, et seulement si, la configuration de chaque pool de nœuds a un espace pour un minimum de 30 pods. Par exemple, la définition du nombre maximal de pods par nœud sur la valeur minimale de 10 nécessite que chaque pool de nœuds inclue un minimum de trois nœuds. Cette exigence s’applique également à chaque pool de nœuds créé, de sorte que, si la valeur 10 est définie comme le nombre maximal de pods par nœud, chaque pool de nœuds ajouté doit inclure au moins trois nœuds.

Mise en réseau Minimum Maximale
Azure CNI 10 250
Kubenet 10 250

Remarque

La valeur minimale dans le tableau précédent est strictement appliquée par le service AKS. Vous ne pouvez pas définir une valeur pour maxPods qui soit inférieure au minimum indiqué, car le cluster pourrait alors ne pas démarrer.

  • Azure CLI : Spécifiez l’argument --max-pods lorsque vous déployez un cluster avec la commande az aks create. La valeur maximale est 250.
  • Modèle Resource Manager : spécifiez la propriété maxPods dans l’objet ManagedClusterAgentPoolProfile lorsque vous déployez un cluster avec un modèle Resource Manager. La valeur maximale est 250.
  • Portail Azure : modifiez le champ Max pods per node dans les paramètres du pool de nœuds lors de la création d’un cluster ou de l’ajout d’un nouveau pool de nœuds.

Configurer le nombre maximal de pods par nœud pour les clusters existants

Le paramètre maxPods par nœud peut être défini lorsque vous créez un pool de nœuds. Si vous devez augmenter le paramètre maxPods sur un cluster existant, ajoutez un nouveau pool de nœuds avec le nouveau nombre maxPods souhaité. Après la migration de vos pods vers le nouveau pool, supprimez le pool plus ancien. Pour supprimer un pool plus ancien dans un cluster, veillez à définir des modes de pool de nœuds comme défini dans le document sur les pools de nœuds système.

Paramètres de déploiement

Quand vous créez un cluster AKS, les paramètres suivants sont configurables pour les réseaux Azure CNI :

Réseau virtuel : réseau virtuel dans lequel vous souhaitez déployer le cluster Kubernetes. Si vous souhaitez créer un réseau virtuel pour votre cluster, sélectionnez Créer un nouveau, puis suivez la procédure décrite dans la section Créer un réseau virtuel. Si vous voulez sélectionner un réseau virtuel existant, vérifiez qu’il se trouve au même emplacement et dans le même abonnement Azure que votre cluster Kubernetes. Pour plus d’informations sur les limites et quotas d’un réseau virtuel Azure, voir Abonnement Azure et limites, quotas et contraintes du service.

Sous-réseau : sous-réseau du réseau virtuel dans lequel vous souhaitez déployer le cluster. Si vous souhaitez créer un nouveau sous-réseau dans le réseau virtuel pour votre cluster, sélectionnez Créer un nouveau, puis exécutez la procédure décrite dans la section Créer un sous-réseau. Pour une connectivité hybride, la plage d’adresses ne doit pas chevaucher d’autres réseaux virtuels dans votre environnement.

Plug-in Réseau Azure : quand le plug-in Réseau Azure est utilisé, le service LoadBalancer interne avec le paramètre « externalTrafficPolicy=Local » n’est pas accessible à partir de machines virtuelles ayant une adresse IP dans clusterCIDR qui n’appartient pas au cluster AKS.

Plage d’adresses du service Kubernetes : ce paramètre est l’ensemble d’adresses IP virtuelles que Kubernetes attribue aux services internes dans votre cluster. Cette plage ne peut pas être mise à jour après la création de votre cluster. Vous pouvez utiliser n’importe quelle plage d’adresses privées répondant aux exigences suivantes :

  • ne peut pas figurer dans la plage d’adresses IP de réseau virtuel de votre cluster ;
  • ne peut pas présenter de chevauchement avec un autre réseau virtuel avec lequel le réseau virtuel du cluster s’apparie ;
  • ne doit avoir aucun élément en commun avec des adresses IP locales ;
  • ne doit pas être dans les plages 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 ou 192.0.2.0/24

Bien qu’il soit techniquement possible de spécifier une plage d’adresses de service dans le même réseau virtuel que votre cluster, cette procédure n’est pas recommandée. Tout chevauchement entre des plages d’adresses IP est susceptible d’entraîner des comportements imprévisibles. Pour plus d’informations, consultez la section FAQ de cet article. Pour plus d’informations sur les services Kubernetes, consultezServices dans la documentation de Kubernetes.

Adresse IP du service DNS Kubernetes :l’adresse IP du service DNS du cluster. Cette adresse doit se situer dans la plage d’adresses du service Kubernetes. N’utilisez pas la première adresse IP de votre plage d’adresses. La première adresse de votre plage de sous-réseaux est utilisée pour l’adresse kubernetes.default.svc.cluster.local.

Forum aux questions

  • Puis-je déployer des machines virtuelles dans le sous-réseau de mon cluster ?

    Oui. Toutefois, pour Azure CNI pour l’allocation d’adresses IP dynamiques, les machines virtuelles ne peuvent pas être déployées dans le sous-réseau du pod.

  • Quelle adresse IP source les systèmes externes voient-ils pour le trafic en provenance d’un pod compatible avec Azure CNI ?

    Les systèmes dans le même réseau virtuel que le cluster AKS voient l’adresse IP du pod comme l’adresse source pour tout trafic en provenance du pod. Les systèmes situés en dehors du réseau virtuel du cluster AKS voient l’adresse IP du nœud en tant qu’adresse source pour tout le trafic en provenance du pod.

    Toutefois, pour Azure CNI pour l’allocation d’adresses IP dynamiques, quelle que soit la connexion se trouvant dans le même réseau virtuel ou entre réseaux virtuels, l’adresse IP du pod est toujours l’adresse source pour tout trafic provenant du pod. Cela est dû au fait que Azure CNI pour l’allocation d’adresses IP dynamiques implémente l’infrastructure de mise en réseau de conteneurs Microsoft Azure, qui offre une expérience de bout en bout. Par conséquent, il élimine l’utilisation de ip-masq-agent, qui est toujours utilisée par Azure CNI traditionnel.

  • Puis-je configurer des stratégies de réseau spécifiques aux pods ?

    Oui, la stratégie de réseau Kubernetes est disponible dans AKS. Pour la prise en main, consultez Sécuriser le trafic entre les pods avec des stratégies réseau dans Azure Kubernetes Service (AKS).

  • Le nombre maximal de pods pouvant être déployés sur un nœud peut-il être configuré ?

    Oui, lorsque vous déployez un cluster avec l’interface CLI Azure ou un modèle Resource Manager. Consultez Nombre maximal de pods par nœud.

    Vous ne pouvez pas modifier le nombre maximal de pods par nœud sur un cluster existant.

  • Comment configurer des propriétés supplémentaires pour le sous-réseau développé lors de la création du cluster AKS ? Par exemple, des points de terminaison du service.

    La liste complète des propriétés pour le réseau virtuel et les sous- réseaux développés durant la création du cluster AKS peut être configurée dans la page de configuration du réseau virtuel standard du portail Azure.

  • Puis-je utiliser un autre sous-réseau dans le réseau virtuel de Mon cluster pour laplage d’adresses du service Kubernetes?

    Cette configuration, bien que possible, n’est pas recommandée. La plage d’adresses du service est un jeu d’adresses IP virtuelles que Kubernetes attribue aux services internes dans votre cluster. Azure Networking ne peut pas voir la plage d’adresses IP de service du cluster Kubernetes. Le manque de visibilité de la plage d’adresses de service du cluster peut entraîner des problèmes. Il est possible de créer ultérieurement un sous-réseau dans le réseau virtuel du cluster qui chevauche la plage d’adresses de service. Si un chevauchement de ce type se produit, Kubernetes peut affecter à un service une adresse IP déjà utilisée par une autre ressource dans le sous-réseau, ce qui provoque un comportement imprévisible ou des échecs. Utilisez une plage d’adresses en dehors du réseau virtuel du cluster pour éviter tout risque de chevauchement.

Étape suivante

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