Freigeben über


Konfigurieren von Azure CNI, unterstützt von Cilium, in Azure Kubernetes Service (AKS)

Azure CNI Powered by Cilium kombiniert die robuste Steuerungsebene von Azure CNI mit der Datenebene von Cilium, um Hochleistungsnetzwerke und Sicherheit bereitzustellen.

Durch die Verwendung von in den Linux-Kernel geladen en eBPF-Programmen und einer effizienteren API-Objektstruktur bietet Azure CNI Powered by Cilium die folgenden Vorteile:

  • Funktionalität, die vorhandenen Azure CNI- und Azure CNI Overlay-Plug-Ins entspricht

  • Verbessertes Dienstrouting

  • Effizientere Erzwingung von Netzwerkrichtlinien

  • Verbesserte Überwachung des Clusterdatenverkehrs

  • Unterstützung für größere Cluster (mehr Knoten, Pods und Dienste)

IP-Adressverwaltung (IPAM) mit Azure CNI Powered by Cilium

Azure CNI Powered by Cilium kann mit zwei verschiedenen Methoden zur Zuweisung von Pod-IPs bereitgestellt werden:

  • Zuweisen von IP-Adressen aus einem Überlagerungsnetzwerk (ähnlich dem Azure CNI Overlay-Modus)

  • Zuweisen von IP-Adressen aus einem virtuellen Netzwerk (ähnlich vorhandener Azure CNI mit dynamischer Pod-IP-Zuordnung)

Wenn Sie nicht sicher sind, welche Option Sie auswählen möchten, lesen Sie "Auswählen eines zu verwendenden Netzwerkmodells".

Versionen

Kubernetes-Version Minimale Cilium-Version
1.27 (LTS) 1.13.18
1.28 (Ende der Lebensdauer) 1.13.18
1.29 1.14.19
1.30 (LTS) 1.14.19
1.31 1.16.6
1.32 1.17.0

Weitere Informationen zu AKS-Versionsverwaltung und Veröffentlichungszeitachsen finden Sie unter "Unterstützte Kubernetes-Versionen ".

Durchsetzung von Netzwerkrichtlinien

Cilium erzwingt Netzwerkrichtlinien, um Datenverkehr zwischen Pods zuzulassen oder zu verweigern. Mit Cilium müssen Sie kein separates Netzwerkrichtlinienmodul wie Azure Network Policy Manager oder Calico installieren.

Einschränkungen

Azure CNI powered by Cilium weist derzeit die folgenden Einschränkungen auf:

  • Nur für Linux und nicht für Windows verfügbar.

  • Netzwerkrichtlinien können ipBlock nicht verwenden, um Zugriff auf Knoten- oder Pod-IP-Adressen zuzulassen. Weitere Informationen und empfohlene Problemumgehung finden Sie unter Häufig gestellte Fragen.

  • Für Cilium-Versionen 1.16 oder früher können mehrere Kubernetes-Dienste nicht denselben Hostport mit verschiedenen Protokollen (z. B. TCP oder UDP) (Cilium-Problem #14287) verwenden.

  • Netzwerkrichtlinien werden nicht auf Pods mit Hostnetzwerken (spec.hostNetwork: true) angewendet, da diese Pods die Hostidentität anstelle einzelner Identitäten verwenden.

  • Cilium Endpoint Slices werden in Kubernetes Version 1.32 und höher unterstützt. Cilium-Endpunkt-Slices unterstützen keine Konfiguration der Gruppierung von Cilium-Endpunkten. Prioritätsnamespaces durch cilium.io/ces-namespace werden nicht unterstützt.

Überlegungen

Um Funktionen wie Sichtbarkeit in Ihrem Netzwerkdatenverkehr und Sicherheitsfeatures wie auf einem vollqualifizierten Domänennamen (engl. Fully Qualified Domain Name, FQDN) basierende Filterung und Layer 7-basierte Netzwerkregeln auf Ihrem Cluster zu erhalten, ziehen Sie die Aktivierung von Advanced Container Networking Services auf Ihren Clustern in Betracht.

Voraussetzungen

  • Azure CLI, Version 2.48.1 oder höher. Führen Sie az --version aus, um die derzeit installierte Version anzuzeigen. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

  • Wenn Sie ARM-Vorlagen oder die REST-API verwenden, muss die AKS-API-Version 2022-09-02-preview oder höher sein.

Hinweis

In früheren AKS-API-Versionen (2022-09-02preview bis 2023-01-02preview) wurde das Feld „networkProfile.ebpfDataplane=cilium“ verwendet. AKS-API-Versionen seit 2023-02-02preview verwenden das Feld „networkProfile.networkDataplane=cilium“, um Azure CNI Powered by Cilium zu aktivieren.

Erstellen eines neuen AKS-Clusters mit Azure CNI Powered by Cilium

Option 1: Zuweisen von IP-Adressen aus einem Überlagerungsnetzwerk

Führen Sie die folgenden Befehle aus, um einen Cluster mit einem Überlagerungsnetzwerk und Cilium zu erstellen. Ersetzen Sie die Werte für <clusterName>, <resourceGroupName> und <location>.

az aks create \
    --name <clusterName> \
    --resource-group <resourceGroupName> \
    --location <location> \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --pod-cidr 192.168.0.0/16 \
    --network-dataplane cilium \
    --generate-ssh-keys

Hinweis

Das --network-dataplane cilium-Flag ersetzt das veraltete --enable-ebpf-dataplane-Flag, das in früheren Versionen der aks-preview CLI-Erweiterung verwendet wurde.

Option 2: Zuweisen von IP-Adressen aus einem virtuellen Netzwerk

Führen Sie die folgenden Befehle aus, um eine Ressourcengruppe und ein virtuelles Netzwerk mit einem Subnetz für Knoten und einem Subnetz für Pods zu erstellen.

# Create the resource group
az group create --name <resourceGroupName> --location <location>
# Create a virtual network with a subnet for nodes and a subnet for pods
az network vnet create --resource-group <resourceGroupName> --location <location> --name <vnetName> --address-prefixes <address prefix, example: 10.0.0.0/8> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name nodesubnet --address-prefixes <address prefix, example: 10.240.0.0/16> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name podsubnet --address-prefixes <address prefix, example: 10.241.0.0/16> -o none

Erstellen Sie den Cluster unter Verwendung von --network-dataplane cilium:

az aks create \
    --name <clusterName> \
    --resource-group <resourceGroupName> \
    --location <location> \
    --max-pods 250 \
    --network-plugin azure \
    --vnet-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/nodesubnet \
    --pod-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/podsubnet \
    --network-dataplane cilium \
    --generate-ssh-keys

Option 3: Zuweisen von IP-Adressen aus dem Knotensubnetz

Hinweis

Azure CLI Version 2.69.0 oder höher ist erforderlich. Führen Sie az --version aus, um die derzeit installierte Version anzuzeigen. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Erstellen eines Clusters mithilfe des Knotensubnetz mit einer Cilium-Datenebene:

az aks create \
    --name <clusterName> \
    --resource-group <resourceGroupName> \
    --location <location> \
    --network-plugin azure \
    --network-dataplane cilium \
    --generate-ssh-keys

Häufig gestellte Fragen

  • Kann ich die Cilium-Konfiguration anpassen?

    Nein, die Cilium-Konfiguration wird von AKS verwaltet und kann nicht geändert werden. Wir empfehlen Kunden, die mehr Kontrolle benötigen, AKS BYO CNI zu verwenden und Cilium manuell zu installieren.

  • Kann ich benutzerdefinierte CiliumNetworkPolicy-Ressourcen anstelle von Kubernetes-NetworkPolicy-Ressourcen verwenden?

    Kunden können FQDN-Filter- und Layer 7-Richtlinien als Teil des Featurebundle advanced Container Networking Services verwenden.

  • Kann ich verwenden ClusterwideCiliumNetworkPolicy?

    ClusterwideCiliumNetworkPolicy wird nicht unterstützt.

  • Welche Cilium-Features werden in von Azure verwalteten CNI unterstützt? Welche dieser Dienste erfordern erweiterte Containernetzwerkdienste?

    Unterstützte Funktion w/o ACNS w/ ACNS
    Cilium-Endpunkt-Slices ✔️ ✔️
    K8s-Netzwerkrichtlinien ✔️ ✔️
    Cilium L3/L4-Netzwerkrichtlinien ✔️ ✔️
    FQDN-Filterung ✔️
    L7-Netzwerkrichtlinien (HTTP/gRPC/Kafka) ✔️
    Containernetzwerk-Beobachtbarkeit (Metriken und Datenflussprotokolle) ✔️
  • Warum wird Datenverkehr blockiert, wenn die NetworkPolicy einen ipBlock enthält, der IP-Adressen zulässt?

    Eine Einschränkung von Azure CNI Powered by Cilium besteht darin, dass ein der NetworkPolicy zugehöriger ipBlock keine Pod- oder Knoten-IPs auswählen kann.

    Diese NetworkPolicy hat z. B. eine Eigenschaft ipBlock, die den gesamten ausgehenden Datenverkehr an 0.0.0.0/0 zulässt:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: example-ipblock
    spec:
      podSelector: {}
      policyTypes:
        - Egress
      egress:
        - to:
          - ipBlock:
              cidr: 0.0.0.0/0 # This will still block pod and node IPs.
    

    Wenn diese NetworkPolicy jedoch angewendet wird, blockiert Cilium den ausgehenden Datenverkehr an Pod- und Knoten-IPs, obwohl sich die IP-Adressen innerhalb des ipBlock CIDR befinden.

    Als Problemumgehung können Sie für die Auswahl von Pods namespaceSelector und podSelector hinzufügen. Dieses Beispiel wählt alle Pods in allen Namespaces aus.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: example-ipblock
    spec:
      podSelector: {}
      policyTypes:
        - Egress
      egress:
        - to:
          - ipBlock:
              cidr: 0.0.0.0/0
          - namespaceSelector: {}
          - podSelector: {}
    

    Hinweis

    Es ist zurzeit nicht möglich, einen NetworkPolicy zusammen mit einem ipBlock anzugeben, um den Datenverkehr zu Knoten-IPs zuzulassen.

  • Konfiguriert AKS CPU- oder Arbeitsspeicherlimits für das Cilium daemonset?

    Nein, AKS konfiguriert keine CPU- oder Arbeitsspeicherlimits für das Cilium daemonset, da Cilium eine wichtige Systemkomponente für Pod-Netzwerke und das Erzwingen von Netzwerkrichtlinien ist.

  • Verwendet Azure CNI Powered by Cilium Kube-Proxy?

    Nein, mit einer Netzwerkdatenebene wie Cilium erstellte AKS-Cluster verwenden keinen Kube-Proxy. Wenn sich die AKS-Cluster im Azure CNI Overlay oder in Azure CNI mit dynamischer IP-Zuordnung befinden und auf AKS-Cluster, die Azure CNI powered by Cilium ausführen, aktualisiert werden, werden neue Knotenworkloads ohne kube-proxy erstellt. Im Rahmen dieses Upgradevorgangs werden auch ältere Workloads zur Ausführung ohne Kube-Proxy migriert.

Nächste Schritte

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