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) (IPAM) s Azure CNI powered by 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řazení IP adres z virtuální sítě (podobné existující službě Azure CNI s přiřazením dynamické IP adresy podů)

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

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.

  • Vynucení zásad Cilium L7 je zakázané.

  • Zásady sítě nemůžou 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 .

  • Několik služeb Kubernetes nemůže použít stejný hostitelský port s různými protokoly (například TCP nebo UDP) (problém s Cilium č. 14287).

  • Zásady sítě se můžou vynucovat u paketů odpovědí, když se pod připojí k sobě přes IP adresu clusteru služeb (problém s Cilium č. 19406).

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

Požadavky

  • Azure CLI verze 2.48.1 nebo novější Spuštěním zobrazíte az --version 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

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 NetworkPolicy používat CiliumNetworkPolicy vlastní prostředky?

    CiliumNetworkPolicy Vlastní prostředky jsou částečně podporované. Zákazníci můžou používat filtrování plně kvalifikovaného názvu domény jako součást sady funkcí Advanced Container Networking Services .

    Tento CiliumNetworkPolicy příklad ukazuje vzor porovnávání pro služby, které odpovídají zadanému popisku.

    apiVersion: "cilium.io/v2"
    kind: CiliumNetworkPolicy
    metadata:
      name: "example-fqdn"
    spec:
      endpointSelector:
        matchLabels:
          foo: bar
      egress:
      - toFQDNs:
        - matchPattern: "*.example.com"
    
  • Proč se provoz zablokuje, když NetworkPolicyipBlock ip adresu, která umožňuje?

    Omezení Azure CNI Powered by Cilium spočívá v tom, že NetworkPolicynení ipBlock možné 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 to NetworkPolicy ale použije, Cilium zablokuje výchozí přenos dat na IP adresy podu a uzlů, i když jsou IP adresy v rámci ipBlock CIDR.

    Jako alternativní řešení můžete přidat namespaceSelector a podSelector vybrat pody. Následující příklad vybere všechny pody ve všech oborech názvů:

    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é zadat ip adresu s povoleným provozem NetworkPolicy ipBlock do IP adres uzlu.

  • 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 rovinou dat sítě jako 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: