Nyilvános standard terheléselosztó konfigurálása Azure Kubernetes Service (AKS)

A standard nyilvános terheléselosztó különböző beállításait testre szabhatja a fürt létrehozásakor vagy a fürt frissítésével. Ezek a testreszabási lehetőségek lehetővé teszik a számítási feladatok igényeinek megfelelő terheléselosztó létrehozását. A standard terheléselosztóval a következőt teheti:

Fontos

Csak egy kimenő IP-címet használhat (felügyelt IP-címeket, saját IP-címet vagy IP-előtagot) egy adott időpontban.

Mielőtt hozzákezdene

A bejövő készlet típusának módosítása

A terheléselosztó háttérkészleteiben található AKS-csomópontokra hivatkozhat az IP-konfigurációjuk (Azure Virtual Machine Scale Sets tagságuk) vagy csak az IP-címük alapján. Az IP-címalapú háttérkészlet-tagság nagyobb hatékonyságot biztosít a szolgáltatások frissítésekor és a terheléselosztók kiépítésekor, különösen magas csomópontszám esetén. A NAT-átjáróval vagy a felhasználó által definiált útválasztási kimenő forgalomtípusokkal kombinálva az új csomópontok és szolgáltatások kiépítése nagyobb teljesítményű.

Két medencetagsági típus érhető el.

  • nodeIPConfiguration: Legacy Virtual Machine Scale Sets IP-konfiguráció alapú készlettagság típusa.
  • nodeIP: IP-alapú tagság típusa.

A bejövő készlet típusának módosítására vonatkozó követelmények

A bejövő készlet típusának módosítása előtt győződjön meg arról, hogy megfelel a következő követelményeknek:

  • Az AKS-klaszternek 1.23-as vagy újabb verziónak kell lennie.
  • Az AKS-fürtnek szabványos terheléselosztókat és Virtual Machine Scale Sets-et kell használnia.
  • Hozzon létre egy AKS-fürtöt, amely IP-alapú bejövő készlettagsággal rendelkezik, a az aks create parancs és a --load-balancer-backend-pool-type=nodeIP paraméter használatával.

    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --load-balancer-backend-pool-type=nodeIP \
        --generate-ssh-keys
    

Felügyelt kimenő nyilvános IP-címek számának skálázása

Azure Load Balancer kimenő és bejövő kapcsolatot biztosít egy virtuális hálózatról. A kimenő szabályok megkönnyítik a hálózati címfordítás konfigurálását a standard nyilvános terheléselosztóra.

A kimenő szabályok ugyanazt a szintaxist követik, mint a terheléselosztás és a bejövő NAT-szabályok: előtérbeli IP-címek + paraméterek + háttérkészlet

A kimenő szabály konfigurálja a kimenő NAT-hez a háttérkészlet által azonosított összes virtuális gépet, hogy az előtérhez irányítva legyenek. A paraméterek nagyobb ellenőrzést biztosítanak a kimenő NAT-algoritmus felett.

Bár egy kimenő szabályt egyetlen nyilvános IP-címmel is használhat, a kimenő szabályok kiválóan használhatók a kimenő NAT skálázására, mivel megkönnyítik a konfigurációs terheket. Több IP-címmel tervezhet nagy léptékű forgatókönyveket és kimenő szabályokat az SNAT-kimerülési minták mérsékléséhez. Minden előtér által megadott IP-cím 64 000 rövid élettartamú portot biztosít a terheléselosztó számára, hogy SNAT-portként használhassa.

Ha standard termékváltozatú terheléselosztót használ felügyelt kimenő nyilvános IP-címekkel (amelyek alapértelmezés szerint vannak létrehozva), a paraméterrel --load-balancer-managed-outbound-ip-count skálázhatja a felügyelt kimenő nyilvános IP-címek számát.

Fontos

Nem javasoljuk, hogy a Azure portál használatával végezze el a kimenő szabálymódosításokat. A módosítások végrehajtásakor az AKS-fürtön kell végighaladnia, és nem közvetlenül a Load Balancer erőforráson.

A közvetlenül a Load Balancer erőforráson végrehajtott kimenő szabálymódosítások a fürt újraszinkronizálásakor, például leállítása, indítása, frissítése vagy skálázásakor törlődnek.

Használja a Azure CLI a példákban látható módon. A az aks CLI-parancsokkal végrehajtott kimenő szabálymódosítások a fürt leállási időszakaiban is állandóak.

További információ: Azure Load Balancer kimenő szabályok.

Felügyelt kimenő nyilvános IP-címek számának beállítása

  • Hozzon létre egy új AKS-fürtöt a az aks create parancs --load-balancer-managed-outbound-ip-count paraméterével, adott számú kimenő felügyelt nyilvános IP-cím használatával. Az alábbi példa a felügyelt kimenő nyilvános IP-címek számát kettőre állítja.

    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --load-balancer-managed-outbound-ip-count 2 \
        --generate-ssh-keys
    

Saját kimenő nyilvános IP-címek vagy előtagok megadása

Standard termékváltozatú terheléselosztó használatakor az AKS-fürt automatikusan létrehoz egy nyilvános IP-címet az AKS által felügyelt infrastruktúra erőforráscsoportjában, majd alapértelmezés szerint hozzárendeli azt a terheléselosztó kimenő készletéhez.

Az AKS által létrehozott nyilvános IP-cím egy AKS által felügyelt erőforrás, ami azt jelenti, hogy az AKS felügyeli a nyilvános IP-cím életciklusát, és nem igényel felhasználói műveletet közvetlenül a nyilvános IP-erőforráson. Másik lehetőségként hozzárendelheti saját egyéni nyilvános IP-címét vagy nyilvános IP-előtagját a fürt létrehozásakor. Az egyéni IP-címek egy meglévő fürt terheléselosztó tulajdonságain is frissíthetők.

A saját kimenő nyilvános IP-címek vagy előtagok használatára vonatkozó követelmények

Mielőtt saját kimenő nyilvános IP-címeket vagy előtagokat ad meg, győződjön meg arról, hogy megfelel a következő követelményeknek:

  • Egyéni nyilvános IP-címeket kell létrehoznia és saját tulajdonúnak kell lennie. Nem használhatja újra az AKS által létrehozott felügyelt nyilvános IP-címeket "saját egyéni IP-cím"-ként, mert ez felügyeleti ütközéseket okozhat.
  • Győződjön meg arról, hogy az AKS-fürt identitása rendelkezik engedélyekkel a kimenő IP-címhez való hozzáféréshez a szükséges nyilvános IP-engedélyek listájának megfelelően.
  • Győződjön meg arról, hogy megfelel a kimenő IP-címek vagy kimenő IP-előtagok konfigurálásához szükséges előfeltételeknek és korlátozásoknak.

Saját kimenő nyilvános IP-címek megadása

  • Hozzon létre egy új AKS-fürtöt saját kimenő nyilvános IP-címeivel a az aks create parancs és a --load-balancer-outbound-ips paraméter segítségével. Győződjön meg arról, hogy a helyőrző értékeket a sajátjára cseréli.

    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --load-balancer-outbound-ips $PUBLIC_IP_ID1,$PUBLIC_IP_ID2 \
        --generate-ssh-keys
    

Saját kimenő nyilvános IP-előtagok megadása

  • Hozzon létre egy új AKS-fürtöt megadott kimenő nyilvános IP-előtagokkal, a az aks create paranccsal és a --load-balancer-outbound-ip-prefixes paraméterrel. Győződjön meg arról, hogy a helyőrző értékeket a sajátjára cseréli.

    az aks create \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --load-balancer-outbound-ip-prefixes $PUBLIC_IP_PREFIX_ID1,$PUBLIC_IP_PREFIX_ID2 \
        --generate-ssh-keys
    

A lefoglalt kimenő portok konfigurálása

Fontos

Ha olyan alkalmazásokkal rendelkezik a fürtön, amelyek nagy számú kapcsolatot létesíthetnek a nyilvános IP-címeken található kis célkészletekkel, például egy adatbázishoz csatlakozó előtéralkalmazás számos példányával, előfordulhat, hogy az SNAT-portok kimerültek. Az SNAT-portok kimerülése akkor fordul elő, ha egy alkalmazás kifogy a kimenő portokból, hogy kapcsolatot létesítsen egy másik alkalmazással vagy hosttal. Ha sNAT-portkimerülésre hajlamos forgatókönyve van, javasoljuk, hogy növelje a kiosztott kimenő portokat és a kimenő előtérbeli IP-címeket a terheléselosztón.

Az SNAT-ről további információt az SNAT használata kimenő kapcsolatokhoz című témakörben talál.

Az AKS alapértelmezés szerint az AllocatedOutboundPorts beállítás értékét a terheléselosztón, amely lehetővé teszi az automatikus kimenő portok hozzárendelését a háttér-medence mérete alapján0 a fürt létrehozásakor. Ha például egy fürtnek 50 vagy kevesebb csomópontja van, minden csomóponthoz 1024 port van lefoglalva. Ez az érték lehetővé teszi a fürt maximális csomópontszámára való skálázást a hálózat újrakonfigurálása nélkül, de az SNAT-portok kimerülését gyakoribbá teheti a további csomópontok hozzáadásakor. Ahogy nő a csomópontok száma a fürtben, csomópontonként kevesebb port érhető el. A csomópontok számának növelése a diagram határain keresztül (például 50-ről 51 csomópontra vagy 100-ról 101-re) zavaró lehet a kapcsolat szempontjából, mivel a meglévő csomópontokhoz lefoglalt SNAT-portok száma csökken, hogy több csomópontot lehessen használni. Azt javasoljuk, hogy explicit értéket használjunk a AllocatedOutboundPortshoz.

Az aktuális lefoglalt kimenő portok megtekintése

  • Szerezze meg az AKS-fürt terheléselosztójának AllocatedOutboundPorts értékét a az network lb outbound-rule list paranccsal.

    NODE_RG=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query nodeResourceGroup -o tsv)
    az network lb outbound-rule list --resource-group $NODE_RG --lb-name kubernetes -o table
    

    Az alábbi példakimenet azt mutatja, hogy a fürtön engedélyezve van a háttértár-pool méretén alapuló automatikus kimenő port-hozzárendelés.

    AllocatedOutboundPorts    EnableTcpReset    IdleTimeoutInMinutes    Name             Protocol    ProvisioningState    ResourceGroup
    ------------------------  ----------------  ----------------------  ---------------  ----------  -------------------  -------------
    0                         True              30                      aksOutboundRule  All         Succeeded            MC_myResourceGroup_myAKSCluster_eastus
    

Kimenő portok és IP-címek kiszámítása és ellenőrzése szükséges

Egy adott érték beállítása vagy a kimenő portok vagy kimenő IP-címek meglévő értékének növelése előtt ki kell számítania a kimenő portok és IP-címek megfelelő számát. Ehhez a számításhoz használja a következő egyenletet a legközelebbi egész számra kerekítve: 64,000 ports per IP / <outbound ports per node> * <number of outbound IPs> = <maximum number of nodes in the cluster>.

A kimenő portok és IP-címek kiszámításának szempontjai

A kimenő portok és IP-címek számának kiszámításakor és az értékek beállításakor tartsa szem előtt a következő információkat:

  • A csomópontonkénti kimenő portok száma a beállított érték alapján van rögzítve.
  • A kimenő portok értékének 8 többszörösének kell lennie.
  • További IP-címek hozzáadása nem növeli egyetlen csomópont portszámát sem, de nagyobb kapacitást biztosít több csomópont számára a fürtben.
  • Figyelembe kell vennie a frissítések részeként hozzáadható csomópontokat, beleértve a maxCount és maxSurge értékekkel megadott csomópontok számát.

Példák a kimenő portok és IP-címek kiszámítására

Az alábbi példák bemutatják, hogy a megadott értékek hogyan befolyásolják a kimenő portok és IP-címek számát:

  • Ha az alapértelmezett értékeket használja, és a fürt 48 csomópontot tartalmaz, minden csomóponthoz 1024 port érhető el.
  • Ha az alapértelmezett értékeket használja, és a fürt 48 és 52 csomópont között skálázódik, minden csomópont frissül 1024 portról 512 elérhető portra.
  • Ha a kimenő portok száma 1000, a kimenő IP-címek száma pedig 2, akkor a fürt legfeljebb 128 csomópontot támogathat: 64,000 ports per IP / 1,000 ports per node * 2 IPs = 128 nodes.
  • Ha a kimenő portok száma 1000, a kimenő IP-címek száma pedig 7, akkor a fürt legfeljebb 448 csomópontot támogathat: 64,000 ports per IP / 1,000 ports per node * 7 IPs = 448 nodes.
  • Ha a kimenő portok száma 4000, a kimenő IP-címek száma pedig 2, akkor a fürt legfeljebb 32 csomópontot támogathat: 64,000 ports per IP / 4,000 ports per node * 2 IPs = 32 nodes.
  • Ha a kimenő portok száma 4000, a kimenő IP-címek száma pedig 7, akkor a fürt legfeljebb 112 csomópontot támogathat: 64,000 ports per IP / 4,000 ports per node * 7 IPs = 112 nodes.

Fontos

A kimenő portok és IP-címek számának kiszámítása után ellenőrizze, hogy rendelkezik-e extra kimenő portkapacitással a csomópontok frissítés közbeni túlfeszültségének kezeléséhez. A frissítéshez és más műveletekhez szükséges további csomópontokhoz kritikus fontosságú a megfelelő többletportok lefoglalása. Az AKS alapértelmezés szerint egy puffercsomópontra vált a frissítési műveletekhez. Ha értékeket használmaxSurge, szorozza meg a csomópontonkénti kimenő portok számát az maxSurge értékével, hogy meghatározza a szükséges portok mennyiségét. Ha például úgy számítja, hogy csomópontonként 4000 portra van szüksége, amelyhez 7 IP-cím tartozik egy legfeljebb 100 csomópontos fürtön, és legfeljebb 2-es maximális növekedést kalkulál:

  • 2 túlfeszültség-csomópont * csomópontonként 4000 port = 8000 port szükséges a csomópontok frissítés közbeni túlfeszültségéhez.
  • 100 csomópont * 4000 port/csomópont = 400 000 port szükséges a fürthöz.
  • 7 IP-cím * IP-címenként 64000 port = 448 000 port érhető el a fürt számára.

Ez a példa azt mutatja, hogy a fürt 48 000 portnyi többletkapacitással rendelkezik, ami elegendő a frissítések során fellépő csomópont-túlfeszültséghez szükséges 8000 port kezeléséhez.

A lefoglalt kimenő portok és kimenő IP-címek beállítása

Az értékek kiszámítása és ellenőrzése után alkalmazhatja ezeket az értékeket load-balancer-outbound-portsload-balancer-managed-outbound-ip-countload-balancer-outbound-ipsload-balancer-outbound-ip-prefixes a fürtök létrehozásakor vagy frissítésekor.

  • Hozzon létre egy új AKS-fürtöt adott kimenő portokkal és IP-címekkel a az aks create parancs használatával. Az alábbi példa a --load-balancer-managed-outbound-ip-countparamétert 7-re , a paramétert --load-balancer-outbound-portspedig 4000-re állítja:

    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --load-balancer-managed-outbound-ip-count 7 \
        --load-balancer-outbound-ports 4000 \
        --generate-ssh-keys
    

A terheléselosztó tétlen időtúllépésének konfigurálása

Ha az SNAT-port erőforrásai kimerültek, a kimenő folyamatok mindaddig sikertelenek lesznek, amíg a meglévő folyamatok nem oldják fel az SNAT-portokat. A terheléselosztó a folyamat bezárásakor visszanyeri az SNAT-portokat, az AKS által konfigurált terheléselosztó pedig 30 perces tétlenségi időtúllépést használ az SNAT-portok inaktív folyamatokból való kivonásához. A szállítást (például TCP keepalives vagy application-layer keepalives) is használhatja az üresjárati folyamat frissítésére, és szükség esetén alaphelyzetbe állíthatja ezt az üresjárati időtúllépést.

Ha arra számít, hogy számos rövid élettartamú kapcsolattal rendelkezik, és nincs olyan hosszú élettartamú kapcsolata, amely hosszú ideig tétlen lehet, például mint a kubectl proxy vagy kubectl port-forward esetében, fontolja meg egy alacsony időtúllépési érték, például 4 perc használatát. TCP keepalive használata esetén elegendő engedélyezni a kapcsolat egyik oldalán. Elegendő például csak a kiszolgálóoldalon engedélyezni őket a folyamat tétlen időzítőjének alaphelyzetbe állításához. Nem szükséges, hogy mindkét fél elindítsa a TCP-életben tartást. Hasonló fogalmak léteznek az alkalmazásréteghez, beleértve az adatbázis ügyfél-kiszolgáló konfigurációit is. Ellenőrizze a kiszolgálóoldalon, hogy milyen lehetőségek állnak rendelkezésre az alkalmazásspecifikus megőrzési lehetőségekhez.

Fontos

Az AKS alapértelmezés szerint engedélyezi a TCP-alaphelyzetbe állítást tétlen állapotban. Javasoljuk, hogy tartsa meg ezt a konfigurációt, és használja ki az alkalmazás kiszámíthatóbb viselkedése érdekében a forgatókönyvekben. További információ: Azure terheléselosztó TCP-alaphelyzetbe állítása.

Ha az IdleTimeoutInMinutes értéket az alapértelmezett 30 percnél eltérő értékre állítja be, fontolja meg, hogy mennyi ideig kell a számítási feladatoknak kimenő kapcsolatra szükségük. Azt is vegye figyelembe, hogy az AKS-en kívül használt standard termékváltozatú terheléselosztó alapértelmezett időtúllépési értéke 4 perc. Az IdleTimeoutInMinutes érték, amely pontosabban tükrözi az adott AKS-számítási feladatot, csökkentheti az SNAT-kimerültséget, amelyet a már nem használt kapcsolatok összekapcsolása okoz.

Figyelmeztetés

A AllocatedOutboundPorts és az IdleTimeoutInMinutes értékeinek módosítása jelentősen megváltoztathatja a terheléselosztó kimenő szabályának viselkedését, ezért nem szabad könnyedén elvégezni. Tekintse át a Troubleshoot SNAT részt, és vizsgálja meg a Terheléselosztó kimenő szabályait, valamint az Azure-ban lévő kimenő kapcsolatokat, mielőtt frissítené ezeket az értékeket, hogy teljes mértékben megértse a módosítások hatását.

  • Hozzon létre egy új AKS-fürtöt egy adott tétlenségi időtúllépéssel a az aks create parancs használatával, a --load-balancer-idle-timeout paraméterrel. Az alábbi példa az üresjárati időtúllépést 4 percre állítja be:

    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --load-balancer-idle-timeout 4 \
        --generate-ssh-keys
    

Adott IP-tartományok bejövő forgalmának korlátozása

Az alábbi jegyzék egy új IP-tartomány megadását használja loadBalancerSourceRanges a bejövő külső forgalomhoz:

apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front
  loadBalancerSourceRanges:
  - MY_EXTERNAL_IP_RANGE

Ez a példa frissíti a szabályt, hogy csak a tartományból engedélyezze a MY_EXTERNAL_IP_RANGE bejövő külső forgalmat. Ha a belső alhálózat IP-címére cseréli MY_EXTERNAL_IP_RANGE, a forgalom csak a fürt belső IP-címeire korlátozódik. Ha a forgalom a fürt belső IP-címeire korlátozódik, a Kubernetes-fürtön kívüli ügyfelek nem tudják elérni a terhelés-kiegyenlítőt.

Megjegyzés:

A bejövő forgalom korlátozásakor tartsa szem előtt az alábbi információkat:

  • Ha a CIDR-blokkokat és Azure szolgáltatáscímkéket is engedélyeznie kell, távolítsa el a loadBalancerSourceRanges tulajdonságot, és adja hozzá a service.beta.kubernetes.io/azure-allowed-ip-ranges és/vagy service.beta.kubernetes.io/azure-allowed-service-tags Load Balancer széljegyzeteket. Ez a konfiguráció csak az NSG-rétegen alkalmazza a szűrést, és kihagyja a hosztszintű kube-proxy szabályokat. Ha a loadBalancerSourceRanges tulajdonságot a azure-allowed-service-tags annotációval együtt állítja be, az AKS hibát jelez a specifikáció alkalmazásakor.
  • A bejövő forgalom a terheléselosztóról a virtuális hálózatra áramlik az AKS-fürthöz. A virtuális hálózat rendelkezik egy hálózati biztonsági csoporttal (NSG), amely lehetővé teszi a terheléselosztóból érkező összes bejövő forgalmat. Ez az NSG egy LoadBalancer típusú szolgáltatáscímkét használ a terheléselosztóból érkező forgalom engedélyezéséhez.
  • A Pod CIDR-t hozzá kell adni a loadBalancerSourceRanges, ha vannak olyan Podok, amelyeknek hozzá kell férniük a szolgáltatás Betöltéselosztó IP-címéhez, 1.25-ös vagy újabb Kubernetes-verziójú fürtök esetén.

Az ügyfél IP-címének karbantartása bejövő kapcsolatokon

Alapértelmezés szerint a Kubernetesben és az AKS-ben egy típusú LoadBalancerszolgáltatás nem megőrzi az ügyfél IP-címét a podhoz való kapcsolaton. A podnak kézbesített csomag forrás IP-címe a csomópont privát IP-címe lesz. Az ügyfél IP-címének fenntartásához be kell állítania a service.spec.externalTrafficPolicy értékét local-re a szolgáltatásdefinícióban. Az alábbi jegyzék egy példát mutat be:

apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
  - port: 80
  selector:
    app: azure-vote-front

Testreszabások Kubernetes-széljegyzetekkel

Az alábbi széljegyzetek a típussal LoadBalancerrendelkező Kubernetes-szolgáltatások esetében támogatottak, és csak a bejövő folyamatokra vonatkoznak.

Jegyzetelés Érték Description
service.beta.kubernetes.io/azure-load-balancer-internal true vagy false Adja meg, hogy a terheléselosztó belső legyen-e. Ha nincs beállítva, az alapértelmezés szerint nyilvános lesz.
service.beta.kubernetes.io/azure-load-balancer-internal-subnet Az alhálózat neve Adja meg, hogy a belső terheléselosztó melyik alhálózathoz legyen kötve. Ha nincs beállítva, alapértelmezés szerint a felhőkonfigurációs fájlban konfigurált alhálózat lesz.
service.beta.kubernetes.io/azure-dns-label-name A DNS-címke neve nyilvános IP-címeken Adja meg a nyilvános szolgáltatás DNS-címkéjének nevét. Ha üres sztringre van állítva, a rendszer nem használja a nyilvános IP-cím DNS-bejegyzését.
service.beta.kubernetes.io/azure-load-balancer-resource-group Az erőforráscsoport neve Adja meg a terheléselosztó nyilvános IP-címeinek erőforráscsoportját, amelyek nem ugyanabban az erőforráscsoportban szerepelnek, mint a fürtinfrastruktúra (csomóponterőforrás-csoport).
service.beta.kubernetes.io/azure-allowed-service-tags Engedélyezett szolgáltatáscímkék listája Adja meg az engedélyezett szolgáltatáscímkék vesszővel elválasztott listáját.
service.beta.kubernetes.io/azure-allowed-ip-ranges az engedélyezett IP-tartományok listája Adja meg az engedélyezett IP-tartományok vesszővel elválasztott listáját.
service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout TCP tétlenségi időtúllépések a percekben Adja meg a TCP-kapcsolat tétlen időtúllépés percekben meghatározott idejét a terheléselosztón. Az alapértelmezett és minimális érték 4. A maximális érték 30. Az értéknek egész számnak kell lennie.
service.beta.kubernetes.io/azure-load-balancer-disable-tcp-reset true vagy false Adja meg, hogy a terheléselosztó letiltsa-e a TCP-alaphelyzetbe állítást tétlen időtúllépéskor.
service.beta.kubernetes.io/azure-load-balancer-ipv4 IPv4-cím Adja meg a terheléselosztóhoz rendelendő IPv4-címet.
service.beta.kubernetes.io/azure-load-balancer-ipv6 IPv6-cím Adja meg a terheléselosztóhoz rendelendő IPv6-címet.

Engedélyezett IP-tartományok testreszabása (előzetes verzió)

A azure-allowed-service-tags és a azure-allowed-ip-ranges széljegyzetek használatával kombinálhatja a CIDR-blokkokat és Azure szolgáltatáscímkéket a terheléselosztón. Adjon hozzá service.beta.kubernetes.io/azure-allowed-ip-ranges az IP-előtagok vesszővel tagolt listájával, és adjon hozzá service.beta.kubernetes.io/azure-allowed-service-tags egy vagy több Azure szolgáltatáscímkével. Az AKS felhőszolgáltatója mindkét értéket egyetlen NSG-szabályba egyesíti, így a forgalom központilag lesz szűrve az NSG-n, így egyetlen, NSG-központú vezérlősíkot biztosít az IP-címekhez és a szolgáltatáscímkékhez.

Továbbra is használhatja a loadBalancerSourceRanges tulajdonságot olyan esetekben, amikor a CIDR-alapú korlátozásokat az NSG-ben és a gazdagépen is érvényesíteni szeretné. Ezt a tulajdonságot nem használhatja a azure-allowed-service-tags széljegyzetekkel. Ha mindkettő meg van adva, az AKS hibát jelez a terheléselosztó szolgáltatás specifikációjának alkalmazásakor.

A terheléselosztó állapotmintájának testreszabása

A terheléselosztó állapotadat-mintavételi viselkedésének testreszabásához a következő széljegyzetek támogatottak:

Jegyzetelés Érték Description
service.beta.kubernetes.io/azure-load-balancer-health-probe-interval Állapotadat-mintavétel időköze
service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe Az állapotadat-mintavétel nem megfelelő válaszainak minimális száma
service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path Az állapotadat-mintavétel elérési útjának kérése
service.beta.kubernetes.io/port_{port}_no_lb_rule true/false A(z) {port} a szolgáltatás portszáma. Ha be van trueállítva, a rendszer nem hoz létre terheléselosztót vagy állapotadat-mintavételi szabályokat ehhez a porthoz. Az állapot-ellenőrzési szolgáltatást nem szabad nyilvános interneten keresztül elérhetővé tenni.
service.beta.kubernetes.io/port_{port}_no_probe_rule true/false A(z) {port} a szolgáltatás portszáma. Ha be van trueállítva, a rendszer nem hoz létre állapotadat-mintavételi szabályokat ehhez a porthoz.
service.beta.kubernetes.io/port_{port}_health-probe_protocol Állapotadat-mintavételi protokoll A(z) {port} a szolgáltatás portszáma. Explicit protokoll a(z) {port} szolgáltatási port állapot-ellenőrzéséhez, amely felülírja a port.appProtocol beállítását, ha meg van adva.
service.beta.kubernetes.io/port_{port}_health-probe_port portszám vagy portnév a szolgáltatásjegyzékben A(z) {port} a szolgáltatás portszáma. A(z) {port} szolgáltatásport explicit portjának állapotfelmérési célra történő beállítása, felülírva az alapértelmezett értéket.
service.beta.kubernetes.io/port_{port}_health-probe_interval Állapotadat-mintavétel időköze A(z) {port} a szolgáltatás portszáma.
service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe Az állapotadat-mintavétel nem megfelelő válaszainak minimális száma A(z) {port} a szolgáltatás portszáma.
service.beta.kubernetes.io/port_{port}_health-probe_request-path Az állapotadat-mintavétel elérési útjának kérése A(z) {port} a szolgáltatás portszáma.

Megjegyzés:

Az AKS mostantól támogatja a megosztott állapotellenőrzési próbákat a externalTrafficPolicy: Cluster szolgáltatások számára. További információ: Megosztott állapottesztek használata externalTrafficPolicy: Cluster szolgáltatásokhoz (előzetes) az Azure Kubernetes Service (AKS) rendszerben.

Az állapotminta alapértelmezett viselkedése

Az állapotadat-mintavétel alapértelmezett protokollja jelenleg különböző átviteli protokollokkal, alkalmazásprotokollokkal, széljegyzetekkel és külső forgalmi szabályzatokkal rendelkező szolgáltatások között változik.

  • A helyi szolgáltatások esetében a HTTP és a /healthz lesz használva. Az állapotadat-mintavétel a NodeHealthPort szolgáltatást fogja lekérdezni a tényleges háttérszolgáltatás helyett.
  • A fürt TCP-szolgáltatásai esetében a TCP lesz használva.
  • Fürt UDP-szolgáltatásokhoz nincs egészségügyi ellenőrzés.

Megjegyzés:

A PLS-integrációt és a PLS proxyprotokollt engedélyező helyi szolgáltatások esetében az alapértelmezett HTTP- és /healthz-állapotadat-mintavétel nem működik. Így az állapotvizsgálat ugyanúgy testre szabható, mint a fürtszolgáltatások, hogy támogassa ezt a forgatókönyvet.

Állapotadat-mintavételi kérelem elérési útjának megjegyzése

A Kubernetes 1.20-es verziójától kezdve bevezettük a szolgáltatásjegyzetet service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path az állapotadat-mintavétel viselkedésének meghatározásához.

  • Az < fürtök értéke 1.23 esetén csak akkor használja a spec.ports.appProtocol-et mintavételi protokollként, ha a service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path is be van állítva.
  • Az > 1.24-es fürtök esetében a mintavételi protokollként használják spec.ports.appProtocol-t, és alapértelmezett kérelemútvonalként használják /-t (service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path más kérelemútvonalra való váltásra használható).

Vegye figyelembe, hogy a kérés útvonala figyelmen kívül lesz hagyva, ha TCP-t használ, vagy ha üres a spec.ports.appProtocol. Az alábbi táblázat az állapotadat-mintavétel alapértelmezett viselkedését foglalja össze:

Loadbalancer SKU externalTrafficPolicy spec.ports.Protocol spec.ports.AppProtocol service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path LB szonda protokoll Terheléselosztási mintavételi kérelem elérési útja
szabvány helyi any any any http /healthz
szabvány fürt udp any any null null
szabvány fürt tcp (ignored) tcp null
szabvány fürt tcp tcp (ignored) tcp null
szabvány fürt tcp http/https TCP(<=1.23) vagy http/https(>=1.24) null(<=1,23) vagy /(>=1,24)
szabvány fürt tcp http/https /custom-path http/https /custom-path
szabvány fürt tcp nem támogatott protokoll /custom-path tcp null
alapvető helyi any any any http /healthz
alapvető fürt tcp (ignored) tcp null
alapvető fürt tcp tcp (ignored) tcp null
alapvető fürt tcp http TCP(<=1.23) vagy http/https(>=1.24) null(<=1,23) vagy /(>=1,24)
alapvető fürt tcp http /custom-path http /custom-path
alapvető fürt tcp nem támogatott protokoll /custom-path tcp null
Állapotadat-mintavétel időköze és a mintavételek széljegyzeteinek száma

A Kubernetes 1.21-es verziójától kezdve két szolgáltatásannotáció service.beta.kubernetes.io/azure-load-balancer-health-probe-interval és load-balancer-health-probe-num-of-probe került bevezetésre, amelyek testre szabják az állapotellenőrző szonda konfigurációját. Ha service.beta.kubernetes.io/azure-load-balancer-health-probe-interval nincs beállítva, a rendszer az alapértelmezett 5 értéket alkalmazza. Ha load-balancer-health-probe-num-of-probe nincs beállítva, a rendszer a 2 alapértelmezett értéket alkalmazza.

Egyéni Load Balancer állapotadat-mintavétel a porthoz

A szolgáltatás különböző portjai különböző állapotadat-mintavételi konfigurációkat igényelhetnek. Ennek oka lehet a szolgáltatástervezés (például egy több portot vezérlő egyetlen állapotvégpont), vagy a Kubernetes olyan funkciói, mint a MixedProtocolLBService.

Az alábbi táblázat összefoglalja azokat a portspecifikus széljegyzeteket, amelyek a szolgáltatás egy adott portjának globális állapotadat-mintavételi széljegyzeteinek felülbírálásához használhatók:

Portspecifikus széljegyzet Globális szonda annotáció Magatartás
service.beta.kubernetes.io/port_{port}_no_lb_rule N/A (globálisan nincs egyenértékű) Ha be van trueállítva, a rendszer nem hoz létre terheléselosztót vagy mintavételi szabályokat.
service.beta.kubernetes.io/port_{port}_no_probe_rule N/A (globálisan nincs egyenértékű) Ha be van trueállítva, a rendszer nem hoz létre mintavételi szabályokat.
service.beta.kubernetes.io/port_{port}_health-probe_protocol N/A (globálisan nincs egyenértékű) Beállítja a szolgáltatásport állapotadat-mintavételi protokollját (például: Http, Https, Tcp).
service.beta.kubernetes.io/port_{port}_health-probe_port N/A (globálisan nincs egyenértékű) Beállítja a szolgáltatásport állapotadat-mintavételi portját (például: 15021).
service.beta.kubernetes.io/port_{port}_health-probe_request-path service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path Http vagy Https esetén adja meg az állapotadat-mintavételi kérelem elérési útját (alapértelmezés szerint /).
service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe Az egymást követő mintavételi hibák száma, mielőtt a port nem megfelelőnek minősül.
service.beta.kubernetes.io/port_{port}_health-probe_interval service.beta.kubernetes.io/azure-load-balancer-health-probe-interval A mintavételi kísérletek közötti idő.

Csomópontkészlet kizárása Load Balancer háttérkészletből

Bizonyos esetekben előfordulhat, hogy meg szeretné akadályozni, hogy egy csomópontkészlet a terheléselosztó háttérkészletének része legyen. Ehhez alkalmazza a címkét node.kubernetes.io/exclude-from-external-load-balancers=true a csomópontkészletre.

Megjegyzés:

Bár a címke az egyes csomópontokon található, a hosszú távú megőrzése érdekében a csomópontkészlet szintjén kell alkalmazni.

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --labels node.kubernetes.io/exclude-from-external-load-balancers=true

Következő lépések

A Kubernetes-szolgáltatásokkal kapcsolatos további információkért tekintse meg a Kubernetes-szolgáltatások dokumentációját.

A belső terheléselosztó bejövő forgalomhoz való használatáról további információt az AKS belső terheléselosztó dokumentációjában talál.