Megosztás a következőn keresztül:


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=ciliumhaszná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ások NetworkPolicy 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's ipBlock 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 a ipBlock CIDR-ben találhatók.

    Áthidaló megoldásként hozzáadhat namespaceSelector és podSelector 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 , amely ipBlock engedélyezi a csomópont IP-címek felé történő forgalmat.

  • Az AKS konfigurálja a Cilium daemonsetprocesszor- 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: