Sdílet prostřednictvím


Konfigurace Azure CNI s využitím Cilium ve službě Azure Kubernetes Service (AKS)

Azure CNI Powered by Cilium kombinuje robustní řídicí rovinu Azure CNI s datovou rovinou Cilium , která poskytuje vysoce výkonné sítě a zabezpečení.

Díky použití programů eBPF načtených do jádra Linuxu a efektivnější struktury objektů rozhraní API poskytuje Azure CNI Powered by Cilium následující výhody:

  • Funkce ekvivalentní stávajícím modulům plug-in Azure CNI a Azure CNI Overlay

  • Vylepšené směrování služeb

  • Efektivnější vynucování zásad sítě

  • Lepší pozorovatelnost provozu clusteru

  • Podpora větších clusterů (více uzlů, podů a služeb)

Správa IP adres (IPAM) s Azure CNI využívající technologii Cilium

Azure CNI Powered by Cilium je možné nasadit pomocí dvou různých metod pro přiřazování IP adres podů:

  • Přiřazení IP adres z překryvné sítě (podobně jako v režimu překrytí Azure CNI)

  • Přiřazování IP adres z virtuální sítě (podobně jako existující Azure CNI s dynamickým přiřazováním IP adres pro pody)

Pokud si nejste jistí, kterou možnost vybrat, přečtěte si téma "Volba síťového modelu, který se má použít".

Verze

Verze Kubernetes Minimální verze Cilium
1.27 (LTS) 1.13.18
1.28 (konec životnosti) 1.13.18
1,29 1.14.19
1.30 (LTS) 1.14.19
1.31 1.16.6
1.32 1.17.0

Další informace o správě verzí a časových osách verzí AKS najdete v tématu Podporované verze Kubernetes .

Vynucení zásad sítě

Cilium vynucuje síťové zásady tak, aby povoloval nebo odepíral provoz mezi pody. S Cilium nemusíte instalovat samostatný síťový modul zásad, jako je Azure Network Policy Manager nebo Calico.

Omezení

Azure CNI využívající Cilium má v současné době následující omezení:

  • K dispozici pouze pro Linux a ne pro Windows.

  • Zásady sítě se nedají použít ipBlock k povolení přístupu k IP adresám uzlů nebo podů. Podrobnosti a doporučené alternativní řešení najdete v nejčastějších dotazech .

  • U cilium verze 1.16 nebo starších nemůže několik služeb Kubernetes používat stejný hostitelský port s různými protokoly (například TCP nebo UDP) (problém s Cilium č. 14287).

  • Zásady sítě se na pody používající sítě hostitele nepoužívají,spec.hostNetwork: true protože tyto pody používají identitu hostitele místo jednotlivých identit.

  • Řezy koncových bodů Cilium jsou podporovány v Kubernetes verzích 1.32 a vyšších. Řezy koncových bodů Cilium nepodporují konfiguraci, jak jsou koncové body Cilium seskupeny. Prioritní obory názvů prostřednictvím cilium.io/ces-namespace nejsou podporovány.

Úvahy

Pokud chcete získat možnosti, jako je pozorovatelnost síťového provozu a funkce zabezpečení, jako je plně kvalifikovaný název domény (FQDN) založené na filtrování a zásady sítě založené na vrstvě 7 v clusteru, zvažte povolení pokročilých síťových služeb kontejneru ve vašich clusterech.

Požadavky

  • Azure CLI verze 2.48.1 nebo novější Spusťte az --version a zobrazte si aktuálně nainstalovanou verzi. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

  • Pokud používáte šablony ARM nebo rozhraní REST API, musí být verze rozhraní API AKS 2022-09-02-preview nebo novější.

Poznámka:

Předchozí verze rozhraní API AKS (2022-09-02preview až 2023-01-02preview) použily pole networkProfile.ebpfDataplane=cilium. Verze rozhraní API AKS od 2023-02-02preview používají toto pole networkProfile.networkDataplane=cilium k povolení Azure CNI Powered by Cilium.

Vytvoření nového clusteru AKS pomocí Azure CNI powered by Cilium

Možnost 1: Přiřazení IP adres z překryvné sítě

Pomocí následujících příkazů vytvořte cluster s překryvnou sítí a Cilium. Nahraďte hodnoty pro <clusterName>, <resourceGroupName>a <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

Poznámka:

Příznak --network-dataplane cilium nahrazuje zastaralý --enable-ebpf-dataplane příznak použitý v dřívějších verzích rozšíření rozhraní příkazového řádku aks-preview.

Možnost 2: Přiřazení IP adres z virtuální sítě

Spuštěním následujících příkazů vytvořte skupinu prostředků a virtuální síť s podsítí pro uzly a podsíť pro pody.

# 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

Vytvořte cluster pomocí --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

Možnost 3: Přiřazení IP adres z podsítě uzlu

Poznámka:

Vyžaduje se Azure CLI verze 2.69.0 nebo novější. Spusťte az --version a zobrazte si aktuálně nainstalovanou verzi. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Vytvořte cluster s datovou rovinou Cilium pomocí podsítě uzlu.

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

Nejčastější dotazy

  • Můžu přizpůsobit konfiguraci Cilium?

    Ne, AKS spravuje konfiguraci Cilium a nedá se upravit. Doporučujeme zákazníkům, kteří vyžadují větší kontrolu, používat AKS BYO CNI a nainstalovat Cilium ručně.

  • Můžu místo prostředků Kubernetes CiliumNetworkPolicy používat NetworkPolicy vlastní prostředky?

    Zákazníci mohou používat filtrování FQDN a zásady vrstvy 7 jako součást balíčku funkcí Advanced Container Networking Services.

  • Můžu použít ClusterwideCiliumNetworkPolicy?

    ClusterwideCiliumNetworkPolicy se nepodporuje.

  • Které funkce Cilium jsou podporované ve spravovanéM CNI Azure? Které z těchto služeb vyžadují pokročilé síťové služby kontejnerů?

    Podporovaná funkce bez ACNS w/ ACNS
    Úseky koncového bodu Cilium ✔️ ✔️
    Zásady sítě K8s ✔️ ✔️
    Zásady sítě Cilium L3/L4 ✔️ ✔️
    Filtrování plně kvalifikovaného názvu domény ✔️
    Zásady sítě L7 (HTTP/gRPC/Kafka) ✔️
    Pozorovatelnost kontejnerové sítě (protokoly metrik a toků) ✔️
  • Proč je provoz blokován, když NetworkPolicyipBlock IP adresu, která je povolena?

    Omezení Azure CNI s podporou Cilium spočívá v tom, že NetworkPolicy's ipBlock nemůže vybrat IP adresy podů nebo uzlů.

    To NetworkPolicy má například možnost ipBlock , která umožňuje všechny výchozí přenosy dat 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.
    

    Když se ale NetworkPolicy použije, Cilium blokuje odchozí provoz na IP adresy podu a uzlu, i když jsou IP adresy v rámci ipBlock CIDR.

    Jako alternativní řešení můžete přidat namespaceSelector a podSelector k výběru podů. Tento příklad vybere všechny pody ve všech jmenových prostorech.

    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: {}
    

    Poznámka:

    V současné době není možné specifikovat NetworkPolicy a ipBlock, které by umožnily provoz na IP adresy uzlů.

  • Konfiguruje AKS omezení procesoru nebo paměti na Cilium daemonset?

    Ne, AKS nenakonfiguruje omezení procesoru nebo paměti na Cilium, protože Cilium daemonset je důležitou systémovou komponentou pro sítě podů a vynucení zásad sítě.

  • Využívá Azure CNI technologii Cilium k použití Kube-Proxy?

    Ne, clustery AKS vytvořené s datovou rovinou sítě Cilium nepoužívají Kube-Proxy. Pokud jsou clustery AKS v překrytí Azure CNI nebo Azure CNI s dynamickým přidělováním IP adres a upgradují se na clustery AKS, na kterých běží Azure CNI využívající Cilium, vytvoří se nové úlohy uzlů bez kube-proxy. Starší úlohy se také migrují tak, aby běžely bez kube-proxy jako součást tohoto procesu upgradu.

Další kroky

Další informace o sítích v AKS najdete v následujících článcích: