Apporter votre propre plug-in CNI (Container Network Interface) avec Azure Kubernetes Service (AKS)
Kubernetes ne fournit pas de système d’interface réseau par défaut. Au lieu de cela, les plug-ins réseau fournissent cette fonctionnalité. Azure Kubernetes Service (AKS) fournit plusieurs plug-ins CNI pris en charge. Pour plus d’informations sur les plug-ins pris en charge, consultez les concepts de mise en réseau AKS.
Les plug-ins pris en charge répondent à la plupart des besoins en réseau dans Kubernetes. Cependant, les utilisateurs avancés d’AKS pourraient vouloir le même plug-in CNI que celui utilisé dans les environnements Kubernetes sur site ou utiliser des fonctionnalités avancées disponibles dans d’autres plug-ins CNI.
Cet article montre comment déployer un cluster AKS sans plug-in CNI préinstallé. À partir de là, vous pouvez ensuite installer n’importe quel plug-in CNI tiers qui fonctionne dans Azure.
Support
Le support Microsoft ne peut pas aider à résoudre les problèmes liés à CNI dans les clusters déployés avec BYOCNI (Bring your own Container Network Interface). Par exemple, les problèmes liés à CNI couvrent la plupart du trafic est/ouest (pod à pod), ainsi que kubectl proxy
et commandes similaires. Si vous souhaitez une prise en charge liée à CNI, utilisez un plug-in réseau AKS pris en charge ou demandez l’aide du fournisseur tiers du plug-in BYOCNI.
Le support est fourni pour les problèmes non liés à CNI.
Prérequis
- Pour Azure Resource Manager (ARM) ou Bicep, utilisez au moins la version 2022-01-02-preview ou 2022-06-01.
- Pour Azure CLI, utilisez au moins la version 2.39.0.
- 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
ou192.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
- 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.
Créer un cluster AKS sans plug-in CNI préinstallé
Créez un groupe de ressources Azure pour votre cluster AKS à l’aide de la commande
az group create
.az group create --location eastus --name myResourceGroup
Créez un cluster AKS avec la commande
az aks create
. Transmettez le paramètre--network-plugin
avec la valeur de paramètre denone
.az aks create \ --location eastus \ --resource-group myResourceGroup \ --name myAKSCluster \ --network-plugin none \ --generate-ssh-keys
Déployer un plug-in CNI
Une fois l’approvisionnement AKS terminé, le cluster est en ligne, mais tous les nœuds sont dans un état NotReady
, comme illustré dans l’exemple suivant :
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-23902496-vmss000000 NotReady agent 6m9s v1.21.9
$ kubectl get node -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].message'
NAME STATUS
aks-nodepool1-23902496-vmss000000 container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
À ce stade, le cluster est prêt pour l’installation d’un plug-in CNI.
Étapes suivantes
Pour plus d’informations sur la mise en réseau dans AKS, consultez les articles suivants :
Azure Kubernetes Service