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
Aktualizace existujícího clusteru na Azure CNI powered by Cilium
Poznámka:
Existující cluster můžete aktualizovat na Azure CNI s technologií Cilium, pokud cluster splňuje následující kritéria:
- Cluster používá překrytí Azure CNI nebo Azure CNI s dynamickým přidělováním IP adres. Nezahrnuje Azure CNI.
- Cluster nemá žádné fondy uzlů Windows.
Poznámka:
Když povolíte Cilium v clusteru s jiným modulem zásad sítě (Azure NPM nebo Calico), modul síťových zásad se odinstaluje a nahradí cilium. Další podrobnosti najdete v tématu Odinstalace Azure Network Policy Manageru nebo Calico .
Upozorňující
Procesupgraduho systému aktivuje, aby se každý fond uzlů znovu zopakoval. Upgrade jednotlivých fondů uzlů není podporován samostatně. Jakékoli přerušení sítě clusteru se podobá upgradu image uzlu nebo upgradu verze Kubernetes, kde je každý uzel ve fondu uzlů znovu image. Cilium začne vynucovat zásady sítě až po opětovném zobrazení všech uzlů.
K provedení upgradu budete potřebovat Azure CLI verze 2.52.0 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.
Pomocí následujícího příkazu upgradujte existující cluster na Azure CNI Powered by Cilium. Nahraďte hodnoty pro <clusterName>
a <resourceGroupName>
:
az aks update --name <clusterName> --resource-group <resourceGroupName> \
--network-dataplane cilium
Poznámka:
Po povolení Azure CNI Powered by Cilium v clusteru AKS ho nemůžete zakázat. Pokud chcete použít jinou rovinu dat sítě, musíte vytvořit nový cluster AKS.
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:
Azure Kubernetes Service