Konfigurieren von Azure CNI Powered by 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 sich nicht sicher sind, welche Option Sie auswählen sollen, lesen Sie Auswählen des zu verwendenden Netzwerkmodells.
Netzwerkrichtlinienerzwingung
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.
Die Cilium L7-Richtlinienerzwingung ist deaktiviert.
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.Derselbe Hostport kann nicht von mehreren Kubernetes-Diensten mit verschiedenen Protokollen (z. B. TCP oder UDP) verwendet werden (Cilium-Problem #14287).
Netzwerkrichtlinien können für Antwortpakete erzwungen werden, wenn sich ein Pod über Dienstcluster-IP (Cilium-Problem #19406) mit sich selbst verbindet.
Netzwerkrichtlinien werden nicht auf Pods mit Hostnetzwerken (
spec.hostNetwork: true
) angewendet, da diese Pods die Hostidentität verwenden, anstatt einzelne Identitäten zu haben.
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
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?CiliumNetworkPolicy
benutzerdefinierte Ressourcen werden teilweise unterstützt. Kunden können die FQDN-Filterung als Teil des Funktionspakets Erweiterte Container Netzwerkdienste verwenden.Dieses
CiliumNetworkPolicy
Beispiel veranschaulicht ein Muster für die Suche nach Diensten, die der angegebenen Bezeichnung entsprechen.apiVersion: "cilium.io/v2" kind: CiliumNetworkPolicy metadata: name: "example-fqdn" spec: endpointSelector: matchLabels: foo: bar egress: - toFQDNs: - matchPattern: "*.example.com"
Warum wird Datenverkehr blockiert, wenn die
NetworkPolicy
einenipBlock
enthält, der IP-Adressen zulässt?Eine Einschränkung von Azure CNI Powered by Cilium besteht darin, dass ein der
NetworkPolicy
zugehörigeripBlock
keine Pod- oder Knoten-IPs auswählen kann.Diese
NetworkPolicy
hat z. B. eine EigenschaftipBlock
, die den gesamten ausgehenden Datenverkehr an0.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 desipBlock
CIDR befinden.Als Problemumgehung können Sie für die Auswahl von Pods
namespaceSelector
undpodSelector
hinzufügen. Im folgenden Beispiel werden alle Pods in allen Namespaces ausgewählt: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, einer
NetworkPolicy
mit einemipBlock
Knoten-IPs anzugeben, der Datenverkehr zu Knoten-IPs zulässt.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 in Azure CNI Overlay oder Azure CNI mit dynamischer IP-Zuordnung befinden und auf Azure CNI Powered by Cilium ausführende AKS-Cluster 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:
Upgrade der IPAM-Modi und der Dataplane-Technologie von Azure Kubernetes Service (AKS).
Verwenden einer statischen IP-Adresse mit dem Lastenausgleich von Azure Kubernetes Service (AKS)
Verwenden eines internen Lastenausgleichs mit Azure Container Service (AKS)
Erstellen eines einfachen Eingangscontrollers mit Konnektivität mit einem externen Netzwerk
Azure Kubernetes Service