Azure CNI powered by Cilium configureren in Azure Kubernetes Service (AKS)
Azure CNI Powered by Cilium combineert het robuuste besturingsvlak van Azure CNI met het gegevensvlak van Cilium om krachtige netwerken en beveiliging te bieden.
Door gebruik te maken van eBPF-programma's die zijn geladen in de Linux-kernel en een efficiëntere API-objectstructuur, biedt Azure CNI Powered by Cilium de volgende voordelen:
Functionaliteit die gelijk is aan bestaande Azure CNI- en Azure CNI-overlay-invoegtoepassingen
Verbeterde serviceroutering
Efficiënter afdwingen van netwerkbeleid
Betere waarneembaarheid van clusterverkeer
Ondersteuning voor grotere clusters (meer knooppunten, pods en services)
IP-adresbeheer (IPAM) met Azure CNI Powered by Cilium
Azure CNI Powered by Cilium kan worden geïmplementeerd met behulp van twee verschillende methoden voor het toewijzen van POD-IP's:
IP-adressen toewijzen vanuit een overlaynetwerk (vergelijkbaar met azure CNI-overlaymodus)
IP-adressen toewijzen vanuit een virtueel netwerk (vergelijkbaar met bestaande Azure CNI met dynamische IP-toewijzing van pods)
Als u niet zeker weet welke optie u wilt selecteren, leest u 'Een netwerkmodel kiezen dat u wilt gebruiken'.
Afdwingen van netwerkbeleid
Cilium dwingt netwerkbeleid af om verkeer tussen pods toe te staan of te weigeren. Met Cilium hoeft u geen afzonderlijke engine voor netwerkbeleid te installeren, zoals Azure Network Policy Manager of Calico.
Beperkingen
Azure CNI mogelijk gemaakt door Cilium heeft momenteel de volgende beperkingen:
Alleen beschikbaar voor Linux en niet voor Windows.
Cilium L7-beleidshandhaving is uitgeschakeld.
Hubble is uitgeschakeld.
Netwerkbeleid kan niet worden gebruikt
ipBlock
om toegang tot IP-adressen van knooppunten of pods toe te staan. Zie veelgestelde vragen voor meer informatie en aanbevolen tijdelijke oplossing.Meerdere Kubernetes-services kunnen niet dezelfde hostpoort gebruiken met verschillende protocollen (bijvoorbeeld TCP of UDP) (Ciliumprobleem #14287).
Netwerkbeleid kan worden afgedwongen voor antwoordpakketten wanneer een pod verbinding maakt met zichzelf via ip-adres van het servicecluster (Ciliumprobleem #19406).
Netwerkbeleidsregels worden niet toegepast op pods met behulp van hostnetwerken (
spec.hostNetwork: true
) omdat deze pods de hostidentiteit gebruiken in plaats van afzonderlijke identiteiten te hebben.
Vereisten
Azure CLI versie 2.48.1 of hoger. Voer deze
az --version
opdracht uit om de momenteel geïnstalleerde versie te zien. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.Als u ARM-sjablonen of de REST API gebruikt, moet de AKS-API-versie 2022-09-02-preview of hoger zijn.
Notitie
Vorige AKS API-versies (2022-09-02preview tot 2023-01-02preview) gebruikt het veld networkProfile.ebpfDataplane=cilium
. AKS API-versies sinds 2023-02-02preview gebruiken het veld networkProfile.networkDataplane=cilium
om Azure CNI Powered by Cilium in te schakelen.
Een nieuw AKS-cluster maken met Azure CNI Powered by Cilium
Optie 1: IP-adressen toewijzen vanuit een overlaynetwerk
Gebruik de volgende opdrachten om een cluster te maken met een overlaynetwerk en Cilium. Vervang de waarden voor <clusterName>
, <resourceGroupName>
en <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
Notitie
De --network-dataplane cilium
vlag vervangt de afgeschafte --enable-ebpf-dataplane
vlag die wordt gebruikt in eerdere versies van de CLI-extensie aks-preview.
Optie 2: IP-adressen toewijzen vanuit een virtueel netwerk
Voer de volgende opdrachten uit om een resourcegroep en een virtueel netwerk te maken met een subnet voor knooppunten en een subnet voor pods.
# 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
Maak het cluster met behulp van --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
Een bestaand cluster bijwerken naar Azure CNI Powered by Cilium
Notitie
U kunt een bestaand cluster bijwerken naar Azure CNI Powered by Cilium als het cluster voldoet aan de volgende criteria:
- Het cluster maakt gebruik van Azure CNI Overlay of Azure CNI met dynamische IP-toewijzing. Dit omvat geen Azure CNI.
- Het cluster heeft geen Windows-knooppuntgroepen.
Notitie
Wanneer u Cilium inschakelt in een cluster met een andere netwerkbeleidsengine (Azure NPM of Calico), wordt de engine voor netwerkbeleid verwijderd en vervangen door Cilium. Zie Azure Network Policy Manager of Calico verwijderen voor meer informatie.
Waarschuwing
Tijdens het upgradeproces wordt elke knooppuntgroep geactiveerd om tegelijkertijd opnieuw te worden geinstallatiekopieën. Het afzonderlijk bijwerken van elke knooppuntgroep wordt niet ondersteund. Eventuele onderbrekingen in clusternetwerken zijn vergelijkbaar met een upgrade van de installatiekopie van een knooppunt of een upgrade van de Kubernetes-versie waarbij elk knooppunt in een knooppuntgroep opnieuw wordt geinstallatiekopie gemaakt. Cilium begint het afdwingen van netwerkbeleid pas nadat alle knooppunten opnieuw zijn geinstallatiekopieën hebben gekregen.
Als u de upgrade wilt uitvoeren, hebt u Azure CLI versie 2.52.0 of hoger nodig. Voer deze az --version
opdracht uit om de momenteel geïnstalleerde versie te zien. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
Gebruik de volgende opdracht om een bestaand cluster te upgraden naar Azure CNI Powered by Cilium. Vervang de waarden voor <clusterName>
en <resourceGroupName>
:
az aks update --name <clusterName> --resource-group <resourceGroupName> \
--network-dataplane cilium
Notitie
Na het inschakelen van Azure CNI Powered by Cilium op een AKS-cluster, kunt u deze niet uitschakelen. Als u een ander netwerkgegevensvlak wilt gebruiken, moet u een nieuw AKS-cluster maken.
Veelgestelde vragen
Kan ik de configuratie van Cilium aanpassen?
Nee, AKS beheert de Cilium-configuratie en kan niet worden gewijzigd. We raden klanten aan die meer controle nodig hebben, AKS BYO CNI te gebruiken en Cilium handmatig te installeren.
Kan ik aangepaste resources gebruiken
CiliumNetworkPolicy
in plaats van Kubernetes-resourcesNetworkPolicy
?CiliumNetworkPolicy
aangepaste resources worden gedeeltelijk ondersteund. Klanten kunnen FQDN-filters gebruiken als onderdeel van de functiebundel Advanced Container Networking Services .In dit
CiliumNetworkPolicy
voorbeeld ziet u een voorbeeld van een overeenkomend patroon voor services die overeenkomen met het opgegeven label.apiVersion: "cilium.io/v2" kind: CiliumNetworkPolicy metadata: name: "example-fqdn" spec: endpointSelector: matchLabels: foo: bar egress: - toFQDNs: - matchPattern: "*.example.com"
Waarom wordt verkeer geblokkeerd wanneer het
NetworkPolicy
ipBlock
IP-adres is toegestaan?Een beperking van Azure CNI Powered by Cilium is dat ip-adressen
NetworkPolicy
van pods of knooppuntenipBlock
niet kunnen worden geselecteerd.Dit heeft bijvoorbeeld
NetworkPolicy
eenipBlock
die alle uitgaand verkeer toestaat:0.0.0.0/0
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.
Wanneer dit
NetworkPolicy
echter wordt toegepast, blokkeert Cilium uitgaand verkeer naar pod- en knooppunt-IP-adressen, ook al bevinden de IP-adressen zich binnen deipBlock
CIDR.Als tijdelijke oplossing kunt u pods toevoegen
namespaceSelector
enpodSelector
selecteren. In het onderstaande voorbeeld worden alle pods in alle naamruimten geselecteerd: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: {}
Notitie
Het is momenteel niet mogelijk om een met een
NetworkPolicy
ipBlock
om verkeer naar IP-adressen van knooppunten toe te staan.Configureert AKS CPU- of geheugenlimieten op het Cilium
daemonset
?Nee, AKS configureert geen CPU- of geheugenlimieten op het Cilium
daemonset
, omdat Cilium een essentieel systeemonderdeel is voor podnetwerken en het afdwingen van netwerkbeleid.Maakt Azure CNI mogelijk door Cilium gebruik van Kube-Proxy?
Nee, AKS-clusters die zijn gemaakt met netwerkgegevensvlak, omdat Cilium geen Kube-Proxy gebruikt. Als de AKS-clusters zich in Azure CNI Overlay of Azure CNI bevinden met dynamische IP-toewijzing en worden bijgewerkt naar AKS-clusters waarop Azure CNI wordt uitgevoerd met Cilium, worden er nieuwe werkbelastingen voor knooppunten gemaakt zonder kube-proxy. Oudere workloads worden ook gemigreerd om te worden uitgevoerd zonder kube-proxy als onderdeel van dit upgradeproces.
Volgende stappen
Meer informatie over netwerken in AKS vindt u in de volgende artikelen:
Azure Kubernetes Service