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

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:

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

    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 NetworkPolicyvan pods of knooppunten ipBlock niet kunnen worden geselecteerd.

    Dit heeft bijvoorbeeld NetworkPolicy een ipBlock 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 de ipBlock CIDR.

    Als tijdelijke oplossing kunt u pods toevoegen namespaceSelector en podSelector 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: