A Cilium által működtetett Azure CNI konfigurálása az Azure Kubernetes Service-ben (AKS)
Az Azure CNI Powered by Cilium egyesíti az Azure CNI robusztus vezérlősíkját a Cilium adatsíkjával, hogy nagy teljesítményű hálózatkezelést és biztonságot nyújtson.
A Linux kernelbe betöltött eBPF-programok és egy hatékonyabb API-objektumstruktúra használatával az Azure CNI Powered by Cilium a következő előnyöket biztosítja:
A meglévő Azure CNI- és Azure CNI Overlay beépülő modulokkal egyenértékű funkciók
Továbbfejlesztett szolgáltatás-útválasztás
Hatékonyabb hálózati házirend-kényszerítés
A fürtforgalom jobb megfigyelhetősége
Nagyobb fürtök (több csomópont, pod és szolgáltatás) támogatása
IP-címkezelés (IPAM) a Cilium által működtetett Azure CNI-vel
A Cilium által üzemeltetett Azure CNI két különböző módszerrel telepíthető a pod IP-címeinek hozzárendeléséhez:
IP-címek hozzárendelése átfedési hálózatról (hasonló az Azure CNI átfedési módjához)
IP-címek hozzárendelése virtuális hálózatról (hasonlóan a meglévő Azure CNI-hez dinamikus pod IP-hozzárendeléssel)
Ha nem biztos abban, hogy melyik lehetőséget válassza, olvassa el a "Használandó hálózati modell kiválasztása" című cikket.
Hálózati házirend kényszerítése
A Cilium hálózati házirendeket kényszerít ki a podok közötti forgalom engedélyezésére vagy letiltására. A Cilium használatával nem kell külön hálózati házirendmotort telepítenie, például az Azure Network Policy Managert vagy a Calico-t.
Korlátozások
A Cilium által üzemeltetett Azure CNI jelenleg a következő korlátozásokkal rendelkezik:
Csak Linux rendszeren érhető el, Windowshoz nem.
A Cilium L7 szabályzatkényszerítése le van tiltva.
A hálózati házirendek nem tudják
ipBlock
engedélyezni a csomópontokhoz vagy pod IP-címekhez való hozzáférést. A részletekkel és az ajánlott kerülő megoldásokkal kapcsolatban gyakran ismételt kérdéseket talál.Több Kubernetes-szolgáltatás nem használhatja ugyanazt a gazdagépportot különböző protokollokkal (például TCP vagy UDP) (Cilium-probléma #14287).
A hálózati szabályzatok akkor kényszeríthetők a válaszcsomagokra, ha egy pod a szolgáltatásfürt IP-címén keresztül csatlakozik magához (Cilium-probléma #19406).
A hálózati házirendek nem alkalmazhatók a gazdagépek hálózatkezelését használó podokra (
spec.hostNetwork: true
), mert ezek a podok a gazdagépidentitást használják az egyéni identitások helyett.
Előfeltételek
Az Azure CLI 2.48.1-es vagy újabb verziója. Futtassa
az --version
a jelenleg telepített verziót. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.Arm-sablonok vagy REST API használata esetén az AKS API-verziónak 2022-09-02-es vagy újabb verziójúnak kell lennie.
Feljegyzés
A korábbi AKS API-verziók (2022-09-02preview to 2023-01-02preview) a mezőt networkProfile.ebpfDataplane=cilium
használták. Az AKS API 2023-02-02preview óta futó verziói a mező networkProfile.networkDataplane=cilium
használatával engedélyezik a Cilium által működtetett Azure CNI-t.
Új AKS-fürt létrehozása a Cilium által működtetett Azure CNI-vel
1. lehetőség: IP-címek hozzárendelése átfedési hálózatról
Az alábbi parancsokkal hozzon létre egy átfedési hálózatot és a Ciliumot tartalmazó fürtöt. Cserélje le a , <resourceGroupName>
és <location>
a : értékeket<clusterName>
.
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
Feljegyzés
A --network-dataplane cilium
jelölő az aks-preview CLI-bővítmény korábbi verzióiban használt elavult --enable-ebpf-dataplane
jelzőt váltja fel.
2. lehetőség: IP-címek hozzárendelése virtuális hálózatról
Futtassa az alábbi parancsokat egy erőforráscsoport és virtuális hálózat létrehozásához a csomópontok alhálózatával és a podok alhálózatával.
# 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
Hozza létre a fürtöt a következővel --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
Gyakori kérdések
Testre szabhatom a Cilium konfigurációját?
Nem, az AKS kezeli a Cilium-konfigurációt, és nem módosítható. Javasoljuk, hogy a nagyobb ellenőrzést igénylő ügyfelek használják az AKS BYO CNI-t , és telepítse manuálisan a Ciliumot.
Használhatok
CiliumNetworkPolicy
egyéni erőforrásokat Kubernetes-erőforrásokNetworkPolicy
helyett?CiliumNetworkPolicy
az egyéni erőforrások részben támogatottak. Az ügyfelek teljes tartománynév-szűrést használhatnak az Advanced Container Networking Services szolgáltatáscsomag részeként.Ez a
CiliumNetworkPolicy
példa egy mintaillesztési mintát mutat be a megadott címkének megfelelő szolgáltatásokhoz.apiVersion: "cilium.io/v2" kind: CiliumNetworkPolicy metadata: name: "example-fqdn" spec: endpointSelector: matchLabels: foo: bar egress: - toFQDNs: - matchPattern: "*.example.com"
Miért blokkolódik a forgalom, ha az
NetworkPolicy
IP-címet engedélyezőipBlock
ip-címmel rendelkezik?A Cilium által üzemeltetett Azure CNI korlátozása, hogy egy
NetworkPolicy
'sipBlock
nem tudja kiválasztani a pod- vagy csomópont IP-címeket.Ennek például van egy
ipBlock
olyan eleme,NetworkPolicy
amely lehetővé teszi az összes kimenő forgalom számára: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.
Ha azonban ezt
NetworkPolicy
alkalmazza, a Cilium blokkolni fogja a pod- és csomópont IP-címekre való kimenő forgalmat annak ellenére, hogy az IP-címek aipBlock
CIDR-ben találhatók.Áthidaló megoldásként hozzáadhat
namespaceSelector
éspodSelector
kiválaszthat podokat. Az alábbi példa kijelöli az összes podot az összes névtérben: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: {}
Feljegyzés
Jelenleg nem adható meg olyan
NetworkPolicy
, amelyipBlock
engedélyezi a csomópont IP-címek felé történő forgalmat.Az AKS konfigurálja a Cilium
daemonset
processzor- vagy memóriakorlátjait?Nem, az AKS nem konfigurál cpu- vagy memóriakorlátokat a Ciliumon
daemonset
, mert a Cilium kritikus rendszerösszetevő a podok hálózatkezeléséhez és a hálózati házirendek érvényesítéséhez.A Cilium által üzemeltetett Azure CNI Kube-Proxyt használ?
Nem, a hálózati adatsíkkal létrehozott AKS-fürtök, mivel a Cilium nem használja a Kube-Proxyt. Ha az AKS-fürtök az Azure CNI Overlay vagy az Azure CNI dinamikus IP-kiosztással vannak elosztva, és a Cilium által üzemeltetett Azure CNI-t futtató AKS-fürtökre vannak frissítve, az új csomópontok számítási feladatai kube-proxy nélkül jönnek létre. A régebbi számítási feladatok is migrálva lesznek, hogy kube-proxy nélkül fussanak a frissítési folyamat részeként.
Következő lépések
További információ az AKS hálózatkezeléséről az alábbi cikkekben:
Frissítse az Azure Kubernetes Service (AKS) IPAM-módjait és a Dataplane-technológiát.
Statikus IP-cím használata az Azure Kubernetes Service (AKS) terheléselosztójával
Belső terheléselosztó használata az Azure Container Service-lel (AKS)
Alapszintű bejövőforgalom-vezérlő létrehozása külső hálózati kapcsolattal
Azure Kubernetes Service