Freigeben über


Eigenes CNI-Plug-In (Container Network Interface) mit Azure Kubernetes Service (AKS)

Kubernetes stellt standardmäßig kein Netzwerkschnittstellensystem bereit. Stattdessen stellen Netzwerk-Plug-Ins diese Funktionalität bereit. Azure Kubernetes Service (AKS) bietet mehrere unterstützte CNI-Plug-Ins. Informationen zu unterstützten Plug-Ins finden Sie unter AKS-Netzwerkkonzepte.

Die unterstützten Plug-Ins erfüllen die meisten Netzwerkanforderungen in Kubernetes. Fortgeschrittene AKS-Benutzer möchten jedoch möglicherweise dasselbe CNI-Plug-In, das in lokalen Kubernetes-Umgebungen verwendet wird, oder erweiterte Funktionen verwenden, die in anderen CNI-Plug-Ins verfügbar sind.

In diesem Artikel wird beschrieben, wie Sie ein AKS-Cluster ohne vorinstalliertes CNI-Plug-In bereitstellen. Dort können Sie dann jedes CNI-Plug-In von Drittanbietern installieren, das in Azure funktioniert.

Support

Der Microsoft-Support kann keine CNI-bezogenen Probleme in Clustern unterstützen, die mit ByOCNI (Bring Your Own Container Network Interface) bereitgestellt werden. CNI-bezogene Probleme würden z. B. den größten Teil des Ost-West-Datenverkehrs (Pod-zu-Pod) sowie kubectl proxy und ähnliche Befehle betreffen. Wenn Sie CNI-bezogene Unterstützung benötigen, verwenden Sie ein unterstütztes AKS-Netzwerk-Plug-In, oder suchen Sie Unterstützung vom BYOCNI-Plug-In-Drittanbieter.

Für Probleme, die sich nicht auf das CNI beziehen, wird weiterhin Support bereitgestellt.

Voraussetzungen

  • Verwenden Sie für Azure Resource Manager (ARM) oder Bicep mindestens die Vorlagenversion 2022-01-02-preview oder 2022-06-01.
  • Verwenden Sie für Azure CLI mindestens Version 2.39.0.
  • Das virtuelle Netzwerk des AKS-Clusters muss ausgehende Internetkonnektivität zulassen.
  • AKS-Cluster dürfen für den Adressbereich des Kubernetes-Diensts, den Adressbereich für den Pod oder den Adressbereich für das virtuelle Clusternetzwerk nicht 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 oder 192.0.2.0/24 verwenden.
  • Die vom AKS-Cluster verwendete Clusteridentität muss mindestens Berechtigungen Netzwerkmitwirkender für das Subnetz in Ihrem virtuellen Netzwerk haben. Wenn Sie eine benutzerdefinierte Rolle anstelle der integrierten Rolle des Netzwerkmitwirkenden definieren möchten, sind die folgenden Berechtigungen erforderlich:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • Das Subnetz, das dem AKS-Knotenpool zugewiesen ist, darf kein delegiertes Subnetz sein.
  • AKS wendet keine Netzwerksicherheitsgruppen (NSGs) auf das eigene Subnetz an und ändert keine der NSGs, die diesem Subnetz zugeordnet sind. Wenn Sie Ihr eigenes Subnetz bereitstellen und NSGs hinzufügen, die diesem Subnetz zugeordnet sind, müssen Sie sicherstellen, dass die Sicherheitsregeln in den NSGs Datenverkehr im CIDR-Knotenbereich zulassen. Weitere Informationen finden Sie unter Netzwerksicherheitsgruppen.

Erstellen eines AKS-Clusters ohne vorinstalliertes CNI-Plug-In

  1. Erstellen Sie mithilfe des Befehls az group create eine Azure-Ressourcengruppe für Ihren AKS-Cluster.

    az group create --location eastus --name myResourceGroup
    
  2. Erstellen Sie mit dem Befehl az aks create einen AKS-Cluster. Übergeben Sie den Parameter --network-plugin mit dem Parameterwert none.

    az aks create \
        --location eastus \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --network-plugin none \
        --generate-ssh-keys
    

Bereitstellen eines CNI-Plug-Ins

Nach Abschluss der AKS-Bereitstellung ist der Cluster online, aber alle Knoten befinden sich in einem NotReady Zustand, wie im folgenden Beispiel gezeigt:

  $ 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

An diesem Punkt ist der Cluster für die Installation eines CNI-Plug-Ins bereit.

Nächste Schritte

Weitere Informationen zu Netzwerken in AKS finden Sie in den folgenden Artikeln: