Delen via


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'.

Versies

Kubernetes-versie Minimumversie van Cilium
1.27 (LTS) 1.13.18
1.28 (einde levensduur) 1.13.18
1,29 1.14.19
1.30 (LTS) 1.14.19
1.31 1.16.6
1.32 1.17.0

Zie Ondersteunde Kubernetes-versies voor meer informatie over AKS-versiebeheer en releasetijdlijnen.

Netwerkbeleidsafdwinging

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.

  • Netwerkbeleid kan ipBlock niet gebruiken om toegang te verlenen tot IP-adressen van knooppunten of pods. Zie veelgestelde vragen voor meer informatie en aanbevolen tijdelijke oplossing.

  • Voor Cilium-versies 1.16 of eerder kunnen meerdere Kubernetes-services niet dezelfde hostpoort gebruiken met verschillende protocollen (bijvoorbeeld TCP of UDP) (Ciliumprobleem #14287).

  • Netwerkbeleid wordt niet toegepast op pods met behulp van hostnetwerken (spec.hostNetwork: true) omdat deze pods de hostidentiteit gebruiken in plaats van afzonderlijke identiteiten.

  • Cilium Endpoint Slices worden ondersteund in Kubernetes versie 1.32 en hoger. Cilium Endpoint Slices bieden geen ondersteuning voor de configuratie van hoe Cilium-eindpunten worden gegroepeerd. Prioriteitsnaamruimten via cilium.io/ces-namespace worden niet ondersteund.

Overwegingen

Als u mogelijkheden wilt krijgen zoals waarneembaarheid in uw netwerkverkeer en beveiligingsfuncties zoals FQDN(Fully Qualified Domain Name) op basis van filteren en netwerkbeleid op basis van laag 7 op uw cluster, kunt u overwegen geavanceerde containernetwerkservices in te schakelen op uw clusters.

Voorwaarden

  • 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 wilt installeren of upgraden, raadpleegt u Azure CLI 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

Optie 3: IP-adressen toewijzen vanuit het knooppuntsubnet

Notitie

Azure CLI versie 2.69.0 of hoger is vereist. Voer deze az --version opdracht uit om de momenteel geïnstalleerde versie te zien. Als u Azure CLI wilt installeren of upgraden, raadpleegt u Azure CLI installeren.

Maak een cluster met behulp van een knooppuntsubnet met een Cilium-gegevensvlak:

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

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-resources NetworkPolicy ?

    Klanten kunnen FQDN-filters en laag 7-beleid gebruiken als onderdeel van de functiebundel Advanced Container Networking Services .

  • Kan ik gebruiken ClusterwideCiliumNetworkPolicy?

    ClusterwideCiliumNetworkPolicy wordt niet ondersteund.

  • Welke Cilium-functies worden ondersteund in door Azure beheerde CNI? Welke van deze vereisen Advanced Container Networking Services?

    Ondersteunde functie zonder ACNS w/ ACNS
    Cilium-eindpuntdelen ✔️ ✔️
    K8s-netwerkbeleid ✔️ ✔️
    Cilium L3/L4-netwerkbeleid ✔️ ✔️
    FQDN filtering ✔️
    L7-netwerkbeleid (HTTP/gRPC/Kafka) ✔️
    Waarneembaarheid van containernetwerk (metrische gegevens en stroomlogboeken) ✔️
  • Waarom wordt het verkeer geblokkeerd wanneer de NetworkPolicy een ipBlock heeft die het IP-adres toestaat?

    Een beperking van Azure CNI Powered by Cilium is dat NetworkPolicyipBlock ip-adressen van pods of knooppunten niet kunnen worden geselecteerd.

    Dit NetworkPolicy heeft bijvoorbeeld een ipBlock die alle uitgaande verbindingen naar 0.0.0.0/0 toestaat:

    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 de ipBlock CIDR.

    Als tijdelijke oplossing kunt u namespaceSelector en podSelector toevoegen aan select pods. In dit 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 NetworkPolicy met een ipBlock te gebruiken 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, aangedreven door Cilium, gebruik van Kube-Proxy?

    Nee, AKS-clusters die zijn gemaakt met een netwerkgegevensvlak zoals Cilium, gebruiken geen Kube-Proxy. 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: