Megosztás:


Azure CNI pod-alhálózat konfigurálása – Statikus blokkok lefoglalása és továbbfejlesztett alhálózati támogatás az Azure Kubernetes Service-ben (AKS)

Az Azure CNI Pod-alhálózat – dinamikus IP-kiosztás egyik korlátozása a pod alhálózat /16 alhálózaton túli méretezhetősége. Nagy méretű alhálózat esetén is előfordulhat, hogy a nagy fürtök 65 000 podra korlátozódnak az Azure címleképezési korlát miatt. A Pod alhálózat – Statikus blokkok lefoglalása az Azure CNI-ben úgy oldja meg ezt a problémát, hogy CIDR-blokkokat rendel a csomópontokhoz egyéni IP-címek helyett.

A következő előnyöket nyújtja:

  • Jobb IP-méretezhetőség: A CIDR-blokkok statikusan vannak lefoglalva a fürtcsomópontokhoz, és a csomópont teljes élettartama alatt jelen vannak, szemben a hagyományos CNI-vel rendelkező egyedi IP-címek hagyományos dinamikus lefoglalásával. Ez lehetővé teszi a CIDR-blokkok szerinti útválasztást, és segít a klaszter-korlát átskálázásában a hagyományos 65 ezer podos határról akár 1 millió podra klaszterenként. Az Azure-beli virtuális hálózatnak elég nagynak kell lennie ahhoz, hogy befogadhassa a klaszter méretét.
  • Rugalmasság: A csomópont- és pod-alhálózatok egymástól függetlenül méretezhetők. Egyetlen pod-alhálózat megosztható egy klaszter több csomópontkészlete között vagy több AKS-klaszter között, amelyek ugyanabban a virtuális hálózatban (VNet) vannak üzembe helyezve. A csomópontkészlethez külön pod-alhálózatot is konfigurálhat.
  • Nagy teljesítmény: Mivel a podok virtuális hálózati IP-címekhez vannak rendelve, közvetlen kapcsolattal rendelkeznek a virtuális hálózat más fürt podjaihoz és erőforrásaihoz.
  • Különálló virtuálishálózat-házirendek podokhoz: Mivel a podok külön alhálózattal rendelkeznek, külön virtuális hálózati házirendeket konfigurálhat hozzájuk, amelyek eltérnek a csomópontszabályzatoktól. Ez számos hasznos forgatókönyvet tesz lehetővé, például az internetkapcsolat engedélyezését csak a podoknak és nem a csomópontoknak, a csomópontkészletek podjainak forrás IP-címének rögzítését egy Azure NAT átjáró használatával, valamint az NSG-k alkalmazását a csomópontkészletek közötti forgalom szűrésére.
  • A Kubernetes hálózati szabályzatai: A Cilium, az Azure NPM és a Calico együttműködik ezzel az új megoldással.

Ez a cikk bemutatja, hogyan használhatja az Azure CNI Pod-alhálózatot – Statikus blokkok lefoglalása és továbbfejlesztett alhálózati támogatás az AKS-ben.

Prerequisites

Note

Pod-alhálózat – Statikus blokklefoglalás használata esetén az alkalmazás privát kapcsolati szolgáltatásként való felfedése Kubernetes Load Balancer-szolgáltatással nem támogatott.

  • Tekintse át az alapszintű Azure CNI-hálózatkezelés konfigurálásának előfeltételeit az AKS-ben, mivel a jelen cikkre ugyanazok az előfeltételek vonatkoznak.

  • Tekintse át az üzembehelyezési paramétereket az Azure CNI alapszintű hálózatkezelésének konfigurálásához az AKS-ben, mivel ugyanezek a paraméterek érvényesek.

  • Az AKS Engine és a DIY-fürtök nem támogatottak.

  • Azure CLI-verzió 2.75.0 vagy újabb

  • Ha már rendelkezik fürtel, engedélyeznie kell a Container Insightst az IP-alhálózatok használatának figyeléséhez. A Container Insightst a az aks enable-addons parancs használatával engedélyezheti, ahogyan az alábbi példában is látható:

    az aks enable-addons --addons monitoring --name <cluster-name> --resource-group <resource-group-name>
    

Limitations

Az alábbiakban bemutatunk néhány korlátozást az Azure CNI pod-alhálózat – Statikus blokkok kiosztása használatára:

  • Minimális Kubernetes-verzió szükséges: 1.28
  • A támogatott alhálózatok maximális mérete x.x.x.x/12 ~ 1 millió IP-cím
  • Alhálózatonként csak egyetlen üzemmód használható. Ha egy alhálózat statikus blokklefoglalási módot használ, nem használhat dinamikus IP-foglalási módot egy másik fürtben vagy csomópontkészletben ugyanazzal az alhálózattal, és fordítva.
  • Csak új fürtökben támogatott, vagy ha egy másik alhálózattal rendelkező csomópontkészleteket ad hozzá a meglévő fürtökhöz. A meglévő fürtök vagy csomópontkészletek áttelepítése vagy frissítése nem támogatott.
  • A csomópontkészlet egy csomóponthoz hozzárendelt összes CIDR-blokkban a rendszer egy IP-címet választ ki a csomópont elsődleges IP-címeként. Így a hálózati rendszergazdák, amikor kiválasztják a --max-pods értéket, használják az alábbi számítást, hogy a lehető legjobban kielégítsék igényeiket és optimálisan kihasználják az IP-címeket az alhálózatban.
    max_pods = (N * 16) - 1
    ahol N bármilyen pozitív egész szám és N > 0

IP-címkezelés tervezése

Az IP-címzés tervezése rugalmasabb és részletesebb. Mivel a csomópontok és podok egymástól függetlenül méretezhetők, a címterek külön is tervezhetők. Mivel a pod-alhálózatok konfigurálhatók a csomópontkészlet részletességéhez, csomópontkészlet hozzáadásakor mindig hozzáadhat egy új alhálózatot. A rendszer podjai egy fürtben/csomópontkészletben IP-címeket kapnak a podok alhálózatáról, így ezt a viselkedést számításba kell venni.

Ebben a forgatókönyvben a /28-ból (16 IP-címből) álló CIDR-blokkok a csomópontkészlet "--max-pods" konfigurációja alapján vannak lefoglalva a csomópontokhoz, amely meghatározza a csomópontonkénti podok maximális számát. Minden csomóponton 1 IP-cím van fenntartva az adott csomóponton található összes rendelkezésre álló IP-címből belső célokra.

Ezért az IP-címek meghatározása és tervezése során elengedhetetlen a "--max-pods" konfiguráció pontos meghatározása, amelyet az alábbiak szerint lehet a leghatékonyabban kiszámítani: max_pods_per_node = (16 * N) - 1 ahol N a 0-nál nagyobb pozitív egész szám

Az IP-címhasználat nélküli ideális értékek esetében a podok maximális értékének meg kell felelnie a fenti kifejezésnek.

  • 1. példa: max_pods = 30, csomópontonként lefoglalt CIDR-blokkok = 2, podokhoz elérhető összes IP-cím = (16 * 2) - 1 = 32 - 1 = 31, IP-címeltágítás csomópontonként = 31 - 30 = 1 [Alacsony wastage - Elfogadható eset]
  • 2. példa: max_pods = 31, csomópontonként lefoglalt CIDR-blokkok = 2, podokhoz elérhető összes IP-cím = (16 * 2) - 1 = 32 - 1 = 31, IP-címeltágítás csomópontonként = 31 – 31 = 0 [Ideális eset]
  • 3. példa: max_pods = 32, csomópontonként lefoglalt CIDR-blokkok = 3, podokhoz elérhető összes IP-cím = (16 * 3) - 1 = 48 - 1 = 47, IP-címeltágítás csomópontonként = 47 - 32 = 15 [Magas wastage - Nem ajánlott eset]

A Kubernetes-szolgáltatások IP-címeinek tervezése változatlan marad.

Note

Győződjön meg arról, hogy a virtuális hálózat elég nagy és összefüggő címtérrel rendelkezik a fürt méretezésének támogatásához.

Üzembehelyezési paraméterek

Az Azure CNI alapszintű hálózatkezelésének AKS-ben való konfigurálására vonatkozó üzembehelyezési paraméterek kivételekkel érvényesek:

  • A virtuális hálózat alhálózat-azonosító paramétere most arra az alhálózatra hivatkozik, amely a fürt csomópontjaival kapcsolatos.
  • A pod alhálózat-azonosítójának paramétere annak az alhálózatnak a megadására szolgál, amelynek IP-címe statikusan vagy dinamikusan lesz lefoglalva a csomópontkészlet podjaihoz.
  • A pod IP-kiosztási mód paramétere határozza meg, hogy használni DynamicIndividual szeretné-e a (dinamikus IP-foglalás) vagy StaticBlock a (statikus blokkok lefoglalása) módban.

Hálózatkezelés konfigurálása CIDR-blokkok statikus lefoglalásával és továbbfejlesztett alhálózati támogatással – Azure CLI

Pod alhálózat használata – Statikus blokklefoglalás a fürtben hasonló a Pod alhálózattal rendelkező fürt konfigurálásának alapértelmezett módszeréhez – Dinamikus IP-foglalás. Az alábbi példa bemutatja, hogyan hozhat létre új virtuális hálózatot csomópontok alhálózatával és podok alhálózatával, és hogyan hozhat létre egy Azure CNI pod-alhálózatot használó fürtöt – statikus blokklefoglalást. Mindenképpen cserélje le a változókat, például $subscription, a saját értékeire.

Hozza létre a virtuális hálózatot két alhálózattal.

resourceGroup="myResourceGroup"
vnet="myVirtualNetwork"
location="myRegion"

# Create the resource group
az group create --name $resourceGroup --location $location

# Create our two subnet network 
az network vnet create --resource-group $resourceGroup --location $location --name $vnet --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnet --name nodesubnet --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnet --name podsubnet --address-prefixes 10.40.0.0/13 -o none 

Hozza létre a fürtöt, a --vnet-subnet-id használatával hivatkozzon a csomópont alhálózatára, a --pod-subnet-id használatával a pod alhálózatára, az --pod-ip-allocation-mode segítségével határozza meg az IP-foglalási módot, és engedélyezze a felügyeleti bővítményt.

clusterName="myAKSCluster"
subscription="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --pod-ip-allocation-mode StaticBlock \
    --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/nodesubnet \
    --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/podsubnet \
    --enable-addons monitoring \
    --generate-ssh-keys

Csomópontkészlet hozzáadása

Csomópontkészlet hozzáadásakor hivatkozzon a csomópont alhálózatára a --vnet-subnet-id használatával, a pod alhálózatára a --pod-subnet-id használatával, és a foglalási módra a '--pod-ip-allocation-mode' használatával. Az alábbi példa két új alhálózatot hoz létre, amelyekre aztán hivatkozni kell egy új csomópontkészlet létrehozásakor:

az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name node2subnet --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name pod2subnet --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $clusterName -g $resourceGroup  -n newnodepool \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/node2subnet \
    --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/pod2subnet \
    --pod-ip-allocation-mode StaticBlock \
    --no-wait

Migrálás pod-alhálózatról – Dinamikus IP-kiosztás pod-alhálózatra – Statikus blokkok kiosztása

Ha egy meglévő AKS-fürt dinamikus IP-kiosztást használ a pod alhálózatban, és Pod alhálózatra - Statikus blokkalapú kiosztásra szeretne átállni, kövesse az alábbi lépéseket:

A költöztetés lépései

  1. Új alhálózat tervezése statikus blokkügynök-készletekhez

    • Hozzon létre egy új alhálózatot a meglévő virtuális hálózatban, amely a Statikus blokk módhoz lesz dedikált
    • Győződjön meg arról, hogy az alhálózat mérete megfelel a Terv IP-címzés szakaszában ismertetett tervezési irányelveknek
  2. Ügynökpool hozzáadása a meglévő fürthöz Statikus Blokk móddal és az új alhálózattal

    • Új csomópontkészlet létrehozása statikus blokklefoglalással a az aks nodepool add paranccsal
    • Hivatkozzon az új alhálózatra --pod-subnet-id használatával, és állítsa be --pod-ip-allocation-mode értéket StaticBlock értékre.
  3. Állítsa le a meglévő ügynökkészletet, hogy az összes üzembe helyezés és forgalom áttérjen az új ügynökkészletre

    • Az kubectl cordon használatával jelölje meg a meglévő csomópontokat ütemezhetetlenként.
    • A számítási feladatok fokozatos ürítése a régi csomópontkészletből az új Statikus blokk csomópontkészletbe
  4. Miután az összes számítási feladat átkerült az új ügynökkészletre, törölje a meglévő nem statikus blokk ügynökkészletet

    • Ellenőrizze, hogy az összes számítási feladat sikeresen fut-e az új csomópontkészleten
    • A régi csomópontkészlet eltávolítása a következővel: az aks nodepool delete

Important

A migrálás gondos tervezést és tesztelést igényel. A meglévő csomópontok kordonozása előtt győződjön meg arról, hogy megfelelő kapacitással rendelkezik az új csomópontkészletben. Először tesztelje a migrációs folyamatot egy nem éles környezetben.

CIDR-blokkok statikus allokációja és továbbfejlesztett alhálózati támogatás – Gyakran Ismételt Kérdések

  • Hozzárendelhetek több pod-alhálózatot egy fürthöz?

    Egy fürthöz több alhálózat is hozzárendelhető, de mindegyik csomópontkészlethez csak egy alhálózat rendelhető hozzá. A különböző csomópontkészletek ugyanazon/különböző fürtön ugyanazt az alhálózatot használhatják.

  • Rendelhetek pod-alhálózatokat egy egészen más virtuális hálózatból?

    Nem, a pod alhálózatának a fürttel azonos virtuális hálózatból kell származnia.

  • Használhatnak dinamikus IP-foglalást a podalhálózati IP-címkezelést használó fürtök egyes csomópontkészleteiben, míg mások az új statikus blokkok lefoglalását használják?

    Igen, a különböző csomópontkészletek különböző foglalási módokat használhatnak. Ha azonban egy alhálózatot egy foglalási módban használ, az csak ugyanabban a foglalási módban használható az összes társított csomópontkészletben.

Következő lépések

További információ az AKS hálózatkezeléséről az alábbi cikkekben: