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žívatCiliumNetworkPolicy
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ž
NetworkPolicy
máipBlock
ip adresu, která umožňuje?Omezení Azure CNI Powered by Cilium spočívá v tom, že
NetworkPolicy
neníipBlock
možné vybrat IP adresy podů nebo uzlů.To
NetworkPolicy
má například možnostipBlock
, která umožňuje všechny výchozí přenosy dat0.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ámciipBlock
CIDR.Jako alternativní řešení můžete přidat
namespaceSelector
apodSelector
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:
Upgradujte režimy IPAM služby Azure Kubernetes Service (AKS) a technologii roviny dat.
Použití statické IP adresy s nástrojem pro vyrovnávání zatížení Azure Kubernetes Service (AKS)
Použití interního nástroje pro vyrovnávání zatížení se službou Azure Container Service (AKS)
Vytvoření základního kontroleru příchozího přenosu dat s připojením k externí síti
Azure Kubernetes Service