Azure CNI-netwerken configureren in Azure Kubernetes Service (AKS)

AKS-clusters maken standaard gebruik van kubenet en maken een virtueel netwerk en subnet. Met kubenet krijgen knooppunten een IP-adres uit een subnet van een virtueel netwerk. Nat (Network Address Translation) wordt vervolgens geconfigureerd op de knooppunten en pods ontvangen een IP-adres dat 'verborgen' is achter het IP-adres van het knooppunt. Deze aanpak vermindert het aantal IP-adressen dat u in uw netwerkruimte moet reserveren voor gebruik door pods.

Met Azure Container Networking Interface (CNI) krijgt elke pod een IP-adres uit het subnet en kan deze rechtstreeks worden geopend. Deze IP-adressen moeten uniek zijn in uw netwerkruimte en moeten vooraf worden gepland. Elk knooppunt heeft een configuratieparameter voor het maximum aantal pods dat wordt ondersteund. Het equivalente aantal IP-adressen per knooppunt wordt vervolgens vooraf gereserveerd voor dat knooppunt. Deze aanpak vereist meer planning en leidt vaak tot uitputting van IP-adressen of de noodzaak om clusters in een groter subnet opnieuw te bouwen naarmate de vraag naar uw toepassing toeneemt.

In dit artikel wordt beschreven hoe u Azure CNI-netwerken gebruikt om een subnet van een virtueel netwerk te maken en te gebruiken voor een AKS-cluster. Zie Netwerkconcepten voor Kubernetes en AKS voor meer informatie over netwerkopties en overwegingen.

Vereisten

  • Het virtuele netwerk voor het AKS-cluster moet uitgaande internetverbinding toestaan.
  • AKS-clusters maken mogelijk geen gebruik 169.254.0.0/16van , 172.30.0.0/16, 172.31.0.0/16of 192.0.2.0/24 voor het adresbereik van de Kubernetes-service, het adresbereik van pods of het adresbereik van het virtuele clusternetwerk.
  • De clusteridentiteit die door het AKS-cluster wordt gebruikt, moet ten minste machtigingen voor inzender voor het netwerk hebben voor het subnet binnen uw virtuele netwerk. Als u een aangepaste rol wilt definiëren in plaats van de ingebouwde rol Inzender voor netwerken te gebruiken, zijn de volgende machtigingen vereist:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • Het subnet dat is toegewezen aan de AKS-knooppuntgroep kan geen gedelegeerd subnet zijn.
  • AKS past geen netwerkbeveiligingsgroepen (NSG's) toe op het subnet en wijzigt geen van de NSG's die aan dat subnet zijn gekoppeld. Als u uw eigen subnet opgeeft en NSG's toevoegt die aan dat subnet zijn gekoppeld, moet u ervoor zorgen dat de beveiligingsregels in de NSG's verkeer toestaan binnen het CIDR-bereik van het knooppunt. Zie Netwerkbeveiligingsgroepen voor meer informatie.

IP-adressering voor uw cluster plannen

Clusters die zijn geconfigureerd met Azure CNI-netwerken vereisen extra planning. De grootte van uw virtuele netwerk en het bijbehorende subnet moet voldoen aan het aantal pods dat u wilt uitvoeren en het aantal knooppunten voor het cluster.

IP-adressen voor de pods en de knooppunten van het cluster worden toegewezen vanuit het opgegeven subnet in het virtuele netwerk. Elk knooppunt is geconfigureerd met een primair IP-adres. Standaard worden 30 extra IP-adressen vooraf geconfigureerd door Azure CNI die zijn toegewezen aan pods die zijn gepland op het knooppunt. Wanneer u het cluster uitschaalt, is elk knooppunt op dezelfde manier geconfigureerd met IP-adressen uit het subnet. U kunt ook het maximum aantal pods per knooppunt bekijken.

Belangrijk

Het vereiste aantal IP-adressen moet overwegingen bevatten voor upgrade- en schaalbewerkingen. Als u het IP-adresbereik zo instelt dat alleen een vast aantal knooppunten wordt ondersteund, kunt u uw cluster niet upgraden of schalen.

  • Wanneer u een upgrade van uw AKS-cluster uitvoert, wordt er een nieuw knooppunt geïmplementeerd in het cluster. Services en workloads worden uitgevoerd op het nieuwe knooppunt en een ouder knooppunt wordt verwijderd uit het cluster. Voor dit rolling upgradeproces is minimaal één extra blok ip-adressen beschikbaar. Het aantal knooppunten is dan n + 1.

    • Deze overweging is met name belangrijk wanneer u Windows Server-knooppuntgroepen gebruikt. Windows Server-knooppunten in AKS passen Windows Updates niet automatisch toe, in plaats daarvan voert u een upgrade uit op de knooppuntgroep. Met deze upgrade worden nieuwe knooppunten geïmplementeerd met de meest recente windows server 2019-basisknooppuntinstallatiekopieën en beveiligingspatches. Zie Een knooppuntgroep upgraden in AKS voor meer informatie over het upgraden van een Windows Server-knooppuntgroep.
  • Wanneer u een AKS-cluster schaalt , wordt er een nieuw knooppunt geïmplementeerd in het cluster. Services en workloads worden uitgevoerd op het nieuwe knooppunt. Uw IP-adresbereik moet rekening houden met overwegingen voor het omhoog schalen van het aantal knooppunten en pods dat uw cluster kan ondersteunen. Er moet ook één extra knooppunt voor upgradebewerkingen worden opgenomen. Het aantal knooppunten is dan n + number-of-additional-scaled-nodes-you-anticipate + 1.

Als u verwacht dat uw knooppunten het maximum aantal pods uitvoeren en regelmatig pods vernietigen en implementeren, moet u ook rekening houden met enkele extra IP-adressen per knooppunt. Deze extra IP-adressen houden er rekening mee dat het enkele seconden kan duren voordat een service is verwijderd en dat het IP-adres is vrijgegeven voor een nieuwe service die is geïmplementeerd en het adres heeft verkregen.

Het IP-adresplan voor een AKS-cluster bestaat uit een virtueel netwerk, ten minste één subnet voor knooppunten en pods en een Kubernetes-serviceadresbereik.

Adresbereik/Azure-resource Limieten en grootte aanpassen
Virtueel netwerk Het virtuele Azure-netwerk kan zo groot zijn als /8, maar is beperkt tot 65.536 geconfigureerde IP-adressen. Houd rekening met al uw netwerkbehoeften, inclusief communicatie met services in andere virtuele netwerken, voordat u uw adresruimte configureert. Als u bijvoorbeeld een te grote adresruimte configureert, kunt u problemen ondervinden met overlappende andere adresruimten in uw netwerk.
Subnet Moet groot genoeg zijn voor de knooppunten, pods en alle Kubernetes- en Azure-resources die in uw cluster kunnen worden ingericht. Als u bijvoorbeeld een interne Azure Load Balancer implementeert, worden de front-end-IP-adressen toegewezen vanuit het clustersubnet, geen openbare IP-adressen. De subnetgrootte moet ook rekening houden met upgradebewerkingen of toekomstige schaalbehoeften.

De minimale subnetgrootte berekenen, inclusief een extra knooppunt voor upgradebewerkingen: (number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)

Voorbeeld voor een cluster van 50 knooppunten: (51) + (51 * 30 (default)) = 1,581 (/21 of groter)

Voorbeeld voor een cluster met 50 knooppunten dat ook inrichting bevat om 10 extra knooppunten op te schalen: (61) + (61 * 30 (default)) = 1,891 (/21 of groter)

Als u geen maximum aantal pods per knooppunt opgeeft wanneer u uw cluster maakt, wordt het maximum aantal pods per knooppunt ingesteld op 30. Het minimale aantal vereiste IP-adressen is gebaseerd op die waarde. Als u uw minimale IP-adresvereisten voor een andere maximumwaarde berekent, raadpleegt u hoe u het maximum aantal pods per knooppunt configureert om deze waarde in te stellen wanneer u uw cluster implementeert.

Adresbereik van Kubernetes Service Dit bereik mag niet worden gebruikt door een netwerkelement op of verbonden met dit virtuele netwerk. Serviceadres CIDR moet kleiner zijn dan /12. U kunt dit bereik opnieuw gebruiken in verschillende AKS-clusters.
IP-adres van DNS-service van Kubernetes IP-adres binnen het adresbereik van de Kubernetes-service dat wordt gebruikt door clusterservicedetectie. Gebruik niet het eerste IP-adres in uw adresbereik. Het eerste adres in uw subnetbereik wordt gebruikt voor het adres kubernetes.default.svc.cluster.local .
Docker-brugadres Het netwerkadres van Docker Bridge vormt het standaardadres van het docker0 bridge-netwerk dat in alle Docker-installaties aanwezig is. Hoewel docker0 Bridge niet wordt gebruikt door AKS-clusters of de pods zelf, moet u dit adres zo instellen dat scenario's zoals docker-build binnen het AKS-cluster worden ondersteund. U moet een CIDR selecteren voor het netwerkadres van de Docker-brug, omdat docker anders automatisch een subnet kiest, wat een conflict kan veroorzaken met andere CIDR's. U moet een adresruimte kiezen die niet botst met de rest van de CIDR's in uw netwerken, inclusief de CIDR-service van het cluster en cidr voor pods. De standaardwaarde is 172.17.0.1/16. U kunt dit bereik opnieuw gebruiken in verschillende AKS-clusters.

Maximum aantal pods per knooppunt

Het maximum aantal pods per knooppunt in een AKS-cluster is 250. Het standaard maximum aantal pods per knooppunt varieert tussen kubenet - en Azure CNI-netwerken en de methode voor clusterimplementatie.

Implementatiemethode Kubenet-standaardinstelling Standaardinstelling voor Azure CNI Configureerbaar tijdens de implementatie
Azure CLI 110 30 Ja (maximaal 250)
Resource Manager-sjabloon 110 30 Ja (maximaal 250)
Portal 110 110 (configureerbaar op het tabblad Knooppuntgroepen) Ja (maximaal 250)

Maximum configureren - nieuwe clusters

U kunt het maximum aantal pods per knooppunt configureren tijdens de implementatie van het cluster of wanneer u nieuwe knooppuntgroepen toevoegt. U kunt het maximum aantal pods per knooppunt instellen op 250.

Als u geen maxPods opgeeft bij het maken van nieuwe knooppuntgroepen, ontvangt u een standaardwaarde van 30 voor Azure CNI.

Een minimumwaarde voor het maximum aantal pods per knooppunt wordt afgedwongen om ruimte te garanderen voor systeempods die essentieel zijn voor de clusterstatus. De minimumwaarde die kan worden ingesteld voor het maximum aantal pods per knooppunt is 10 indien en alleen als de configuratie van elke knooppuntgroep ruimte heeft voor minimaal 30 pods. Als u bijvoorbeeld het maximum aantal pods per knooppunt instelt op minimaal 10, moet elke afzonderlijke knooppuntgroep minimaal drie knooppunten hebben. Deze vereiste geldt ook voor elke nieuwe knooppuntgroep die wordt gemaakt, dus als 10 is gedefinieerd als maximale pods per knooppunt, moet elke volgende toegevoegde knooppuntgroep ten minste 3 knooppunten hebben.

Netwerken Minimum Maximum
Azure CNI 10 250
Kubenet 10 250

Notitie

De minimumwaarde in de bovenstaande tabel wordt strikt afgedwongen door de AKS-service. U kunt geen waarde voor maxPods instellen die lager is dan het minimum dat wordt weergegeven, omdat dit kan voorkomen dat het cluster wordt gestart.

  • Azure CLI: geef het --max-pods argument op wanneer u een cluster implementeert met de az aks create opdracht . De maximumwaarde is 250.
  • Resource Manager sjabloon: geef de maxPods eigenschap op in het object ManagedClusterAgentPoolProfile wanneer u een cluster implementeert met een Resource Manager-sjabloon. De maximumwaarde is 250.
  • Azure Portal: wijzig het Max pods per node veld in de instellingen van de knooppuntgroep wanneer u een cluster maakt of een nieuwe knooppuntgroep toevoegt.

Maximum configureren - bestaande clusters

De instelling maxPod per knooppunt kan worden gedefinieerd wanneer u een nieuwe knooppuntgroep maakt. Als u de instelling voor maxPod per knooppunt in een bestaand cluster wilt verhogen, voegt u een nieuwe knooppuntgroep toe met het nieuwe gewenste aantal maxPods. Nadat u uw pods naar de nieuwe pool hebt gemigreerd, verwijdert u de oudere pool. Als u een oudere pool in een cluster wilt verwijderen, moet u ervoor zorgen dat u modi voor knooppuntgroepen instelt zoals gedefinieerd in het document systeemknooppuntgroepen.

Implementatieparameters

Wanneer u een AKS-cluster maakt, kunnen de volgende parameters worden geconfigureerd voor Azure CNI-netwerken:

Virtueel netwerk: het virtuele netwerk waarin u het Kubernetes-cluster wilt implementeren. Als u een nieuw virtueel netwerk voor uw cluster wilt maken, selecteert u Nieuw en volgt u de stappen in de sectie Virtueel netwerk maken . Als u een bestaand virtueel netwerk wilt selecteren, moet u ervoor zorgen dat het zich in dezelfde locatie en hetzelfde Azure-abonnement bevindt als uw Kubernetes-cluster. Zie Azure-abonnements- en servicelimieten, quota en beperkingen voor meer informatie over de limieten en quota voor een virtueel Azure-netwerk.

Subnet: het subnet binnen het virtuele netwerk waar u het cluster wilt implementeren. Als u een nieuw subnet wilt maken in het virtuele netwerk voor uw cluster, selecteert u Nieuwe maken en volgt u de stappen in de sectie Subnet maken . Voor hybride connectiviteit mag het adresbereik niet overlappen met andere virtuele netwerken in uw omgeving.

Azure Network-invoegtoepassing: wanneer de Azure-netwerkinvoegtoepassing wordt gebruikt, kan de interne LoadBalancer-service met 'externalTrafficPolicy=Local' niet worden geopend vanaf VM's met een IP in clusterCIDR die geen deel uitmaakt van het AKS-cluster.

Adresbereik kubernetes-service: deze parameter is de set virtuele IP-adressen die Kubernetes toewijst aan interne services in uw cluster. U kunt elk privéadresbereik gebruiken dat voldoet aan de volgende vereisten:

  • Mag zich niet binnen het IP-adresbereik van het virtuele netwerk van uw cluster bevinden
  • Mag niet overlappen met andere virtuele netwerken waarmee het virtuele clusternetwerk peers
  • Mag niet overlappen met on-premises IP-adressen
  • Mag zich niet binnen de bereiken 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16of 192.0.2.0/24

Hoewel het technisch mogelijk is om een serviceadresbereik op te geven binnen hetzelfde virtuele netwerk als uw cluster, wordt dit niet aanbevolen. Onvoorspelbaar gedrag kan optreden als overlappende IP-bereiken worden gebruikt. Zie de sectie Veelgestelde vragen van dit artikel voor meer informatie. Zie Services in de Kubernetes-documentatie voor meer informatie over Kubernetes-services.

IP-adres van kubernetes DNS-service: het IP-adres voor de DNS-service van het cluster. Dit adres moet binnen het adresbereik van Kubernetes Service liggen. Gebruik niet het eerste IP-adres in uw adresbereik. Het eerste adres in uw subnetbereik wordt gebruikt voor het adres kubernetes.default.svc.cluster.local .

Docker Bridge-adres: Het Docker Bridge-netwerkadres vertegenwoordigt het standaardnetwerkadres docker0 bridge dat aanwezig is in alle Docker-installaties. Hoewel docker0 Bridge niet wordt gebruikt door AKS-clusters of de pods zelf, moet u dit adres zo instellen dat scenario's zoals docker-build binnen het AKS-cluster worden ondersteund. Het is vereist om een CIDR te selecteren voor het netwerkadres van de Docker-brug, omdat Anders Docker automatisch een subnet kiest dat een conflict met andere CIDR's kan veroorzaken. U moet een adresruimte kiezen die niet botst met de rest van de CIDR's in uw netwerken, inclusief de CIDR-service van het cluster en cidr voor pods.

Netwerken configureren - CLI

Wanneer u een AKS-cluster maakt met de Azure CLI, kunt u ook Azure CNI-netwerken configureren. Gebruik de volgende opdrachten om een nieuw AKS-cluster te maken met Azure CNI-netwerken ingeschakeld.

Haal eerst de subnetresource-id op voor het bestaande subnet waaraan het AKS-cluster wordt toegevoegd:

$ az network vnet subnet list \
    --resource-group myVnet \
    --vnet-name myVnet \
    --query "[0].id" --output tsv

/subscriptions/<guid>/resourceGroups/myVnet/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/default

Gebruik de az aks create opdracht met het --network-plugin azure argument om een cluster met geavanceerde netwerken te maken. Werk de --vnet-subnet-id waarde bij met de subnet-id die in de vorige stap is verzameld:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --generate-ssh-keys

Netwerken configureren - portal

In de volgende schermopname van de Azure Portal ziet u een voorbeeld van het configureren van deze instellingen tijdens het maken van een AKS-cluster:

Schermopname van de Azure Portal met een voorbeeld van het configureren van deze instellingen tijdens het maken van een AKS-cluster.

Ip-subnetgebruik bewaken

Azure CNI biedt de mogelijkheid om het gebruik van IP-subnetten te bewaken. Volg de onderstaande stappen om bewaking van ip-subnetgebruik in te schakelen:

Het YAML-bestand ophalen

  1. Download of grep het bestand met de naam container-azm-ms-agentconfig.yaml van GitHub.
  2. Zoek azure_subnet_ip_usage in integraties. Stel enabled in op true.
  3. Sla het bestand op.

De AKS-referenties ophalen

Stel de variabelen in voor abonnement, resourcegroep en cluster. Bekijk het volgende als voorbeelden:


    $s="subscriptionId"

    $rg="resourceGroup"

    $c="ClusterName"

    az account set -s $s

    az aks get-credentials -n $c -g $rg

De configuratie toepassen

  1. Open terminal in de map waarin het gedownloade bestand container-azm-ms-agentconfig.yaml is opgeslagen.
  2. Pas eerst de configuratie toe met behulp van de opdracht : kubectl apply -f container-azm-ms-agentconfig.yaml
  3. Hiermee wordt de pod opnieuw opgestart en na 5-10 minuten zijn de metrische gegevens zichtbaar.
  4. Als u de metrische gegevens in het cluster wilt weergeven, gaat u naar Werkmappen op de clusterpagina in de Azure Portal en zoekt u de werkmap met de naam 'Subnet IP-gebruik'. De weergave ziet er ongeveer als volgt uit:

Er wordt een diagram van de werkmapblade van de Azure Portal weergegeven en metrische gegevens voor het IP-gebruik van het subnet van een AKS-cluster worden weergegeven.

Veelgestelde vragen

  • Kan ik VM's implementeren in mijn clustersubnet?

    Ja.

  • Welk bron-IP-adres zien externe systemen voor verkeer dat afkomstig is van een pod met Azure CNI?

    Systemen in hetzelfde virtuele netwerk als het AKS-cluster zien het IP-adres van de pod als het bronadres voor verkeer van de pod. Systemen buiten het virtuele netwerk van het AKS-cluster zien het IP-adres van het knooppunt als het bronadres voor verkeer van de pod.

  • Kan ik netwerkbeleid per pod configureren?

    Ja, Kubernetes-netwerkbeleid is beschikbaar in AKS. Zie Verkeer tussen pods beveiligen met behulp van netwerkbeleid in AKS om aan de slag te gaan.

  • Kan het maximum aantal pods op een knooppunt worden geconfigureerd?

    Ja, wanneer u een cluster implementeert met de Azure CLI of een Resource Manager-sjabloon. Zie Maximum aantal pods per knooppunt.

    U kunt het maximum aantal pods per knooppunt in een bestaand cluster niet wijzigen.

  • Hoe kan ik aanvullende eigenschappen configureren voor het subnet dat ik heb gemaakt tijdens het maken van een AKS-cluster? Bijvoorbeeld service-eindpunten.

    De volledige lijst met eigenschappen voor het virtuele netwerk en de subnetten die u maakt tijdens het maken van een AKS-cluster, kan worden geconfigureerd op de standaardpagina voor de configuratie van het virtuele netwerk in de Azure Portal.

  • Kan ik een ander subnet in mijn virtuele clusternetwerk gebruiken voor het adresbereik van de Kubernetes-service?

    Dit wordt niet aanbevolen, maar deze configuratie is mogelijk. Het serviceadresbereik is een set virtuele IP's (VIP's) die Kubernetes toewijst aan interne services in uw cluster. Azure Networking heeft geen inzicht in het service-IP-bereik van het Kubernetes-cluster. Vanwege het gebrek aan zichtbaarheid in het serviceadresbereik van het cluster, is het mogelijk om later een nieuw subnet te maken in het virtuele clusternetwerk dat overlapt met het serviceadresbereik. Als een dergelijke overlapping optreedt, kan Kubernetes een IP-adres toewijzen aan een service dat al wordt gebruikt door een andere resource in het subnet, waardoor onvoorspelbaar gedrag of fouten optreden. Door ervoor te zorgen dat u een adresbereik buiten het virtuele netwerk van het cluster gebruikt, kunt u dit overlappingsrisico voorkomen.

Volgende stappen

Zie Azure CNI-netwerken configureren voor dynamische toewijzing van IP-adressen en verbeterde subnetondersteuning voor het configureren van Azure CNI-netwerken voor dynamische toewijzing van IP-adressen en verbeterde subnetondersteuning in AKS.

Meer informatie over netwerken in AKS vindt u in de volgende artikelen: