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 Hubble 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.A Kubernetes-szolgáltatások
internalTrafficPolicy=Local
nem támogatottak (Cilium-probléma #17796).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).
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 -n <clusterName> -g <resourceGroupName> -l <location> \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16 \
--network-dataplane cilium
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 -g <resourceGroupName> --location <location> --name <vnetName> --address-prefixes <address prefix, example: 10.0.0.0/8> -o none
az network vnet subnet create -g <resourceGroupName> --vnet-name <vnetName> --name nodesubnet --address-prefixes <address prefix, example: 10.240.0.0/16> -o none
az network vnet subnet create -g <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 -n <clusterName> -g <resourceGroupName> -l <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
Meglévő fürt frissítése a Cilium által működtetett Azure CNI-re
Feljegyzés
Ha a fürt megfelel a következő feltételeknek, frissíthet egy meglévő fürtöt a Cilium által működtetett Azure CNI-ra:
- A fürt az Azure CNI Overlayt vagy az Azure CNI-t használja dinamikus IP-kiosztással. Ez nem tartalmazza az Azure CNI-t.
- A fürt nem rendelkezik Windows-csomópontkészletekkel.
Feljegyzés
Ha egy másik hálózati házirendmotorral (Azure NPM vagy Calico) rendelkező fürtön engedélyezi a Ciliumot, a rendszer eltávolítja és lecseréli a Ciliumra. További részletekért lásd: Az Azure Network Policy Manager vagy a Calico eltávolítása.
Figyelmeztetés
A frissítési folyamat aktiválja az egyes csomópontkészleteket, hogy egyidejűleg újraképeződjenek. Az egyes csomópontkészletek külön frissítése nem támogatott. A fürt hálózatának megszakadása hasonló a csomópontok lemezképének frissítéséhez vagy a Kubernetes verziófrissítéséhez , ahol a csomópontkészlet minden csomópontja újra van rendszerképben.
A Cilium csak az összes csomópont újraképezése után kezdi meg a hálózati szabályzatok kikényszerítését.
A frissítés végrehajtásához az Azure CLI 2.52.0-s vagy újabb verziójára lesz szüksége. Futtassa az --version
a jelenleg telepített verziót. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
A következő paranccsal frissíthet egy meglévő fürtöt az Azure CNI Powered by Ciliumra. Cserélje le a következő értékeket <clusterName>
<resourceGroupName>
:
az aks update -n <clusterName> -g <resourceGroupName> \
--network-dataplane cilium
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 hivatalosan nem támogatottak. Azt javasoljuk, hogy az ügyfelek Kubernetes-erőforrásokatNetworkPolicy
használva konfigurálják a hálózati szabályzatokat.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: