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 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
  • 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é

  1. Créez un groupe de ressources Azure pour votre cluster AKS à l’aide de la commande az group create.

    az group create -l eastus -n myResourceGroup
    
  2. Créez un cluster AKS avec la commande az aks create. Transmettez le paramètre --network-plugin avec la valeur de paramètre de none.

    az aks create -l eastus -g myResourceGroup -n myAKSCluster --network-plugin none
    

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 :