Delen via


Een Kubernetes-cluster implementeren in een aangepast virtueel netwerk in Azure Stack Hub

U kunt een Kubernetes-cluster implementeren met behulp van de AKS-engine (Azure Kubernetes Service) in een aangepast virtueel netwerk. In dit artikel wordt beschreven hoe u de informatie vindt die u nodig hebt in uw virtuele netwerk. Het artikel bevat stappen voor het berekenen van de IP-adressen die door uw cluster worden gebruikt, het instellen van de vales in het API-model en het instellen van de routetabel en netwerkbeveiligingsgroep.

Het Kubernetes-cluster in Azure Stack Hub met behulp van de AKS-engine maakt gebruik van de kubenet-netwerkinvoegtoepassing. De AKS-engine in Azure Stack Hub ondersteunt ook de Azure CNI-netwerkinvoegtoepassing.

Overwegingen bij het maken van een aangepast virtueel netwerk

  • Het aangepaste VNET moet zich in hetzelfde abonnement bevinden als alle andere onderdelen van het Kubernetes-cluster.
  • De pool van besturingsvlakknooppunten en de pool agentknooppunten moeten zich in hetzelfde virtuele netwerk bevinden. U kunt uw knooppunten implementeren in verschillende subnetten binnen hetzelfde virtuele netwerk.
  • Het Kubernetes-clustersubnet moet een IP-bereik gebruiken binnen het virtuele bereik van het aangepaste IP-netwerkbereik. Zie Het IP-adresblok ophalen.
  • Houd er rekening mee dat de aanbevolen grootte van de knooppuntsubnetten afhankelijk is van het type netwerkinvoegtoepassing dat wordt gebruikt. Als algemene richtlijn vereist Azure CNI een groter aantal IP-adressen voor het subnet dat de agentknooppuntgroepen ondersteunt dan kubenet. Zie de volgende kubenet- en Azure CNI- voorbeelden.
  • De 169.254.0.0/16-adresruimte kan niet worden gebruikt voor aangepaste VNET's voor Kubernetes-clusters.

Aangepast virtueel netwerk maken

U moet een aangepast virtueel netwerk hebben in uw Azure Stack Hub-exemplaar. Zie quickstart: Een virtueel netwerk maken met behulp van Azure Portal voor meer informatie.

Maak een nieuw subnet in uw virtuele netwerk. U moet de resource-id van het subnet en het IP-adresbereik ophalen dat u in uw API-model gebruikt wanneer u uw cluster implementeert:

  1. Open de Azure Stack Hub-gebruikersportal in uw Azure Stack Hub-exemplaar.

  2. Selecteer Alle resources.

  3. Voer de naam van uw virtuele netwerk in het zoekvak in.

  4. Selecteer Subnetten+ Subnetten> om een subnet toe te voegen.

  5. Voeg een naam en een adresbereik toe met cidr-notatie. Selecteer OK.

  6. Selecteer Eigenschappen op de blade Virtuele netwerken . Kopieer de resource-id en voeg vervolgens toe /subnets/<nameofyoursubnect>. U gebruikt deze waarde als uw waarde voor de vnetSubnetId sleutel in het API-model voor uw cluster. De resource-id voor het subnet gebruikt de volgende indeling: /subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME.

    Resource-id van virtueel netwerk

  7. Selecteer Subnetten op de blade Virtuele netwerken. Selecteer bijvoorbeeld control-plane-snde naam van het subnet. Koppel het subnet niet aan een netwerkbeveiligingsgroep (NSG).

    CIDR-blok voor virtueel netwerk

  8. Noteer op de subnetblade het adresbereik (CIDR-blok) van elk subnet.

Overwegingen voor het selecteren van een adresruimte

Wanneer u een aangepast virtueel netwerk maakt, geeft u de IP-adresruimte van uw netwerk en een IP-adresbereik voor elk subnet op. Houd rekening met de volgende factoren wanneer u de adresruimten en bereiken kiest die u wilt gebruiken in uw Kubernetes-cluster:

  • Overlappende adresruimten kunnen leiden tot conflicten met IP-adressen of communicatiefouten. Als u het risico op overlappende IP-adressen wilt verminderen, kiest u een unieke adresruimte voor uw nieuwe virtuele netwerk.
  • Adresruimten in de 10/8, 172.16/12en 192.168/16 bereiken worden vaak gebruikt voor privénetwerken en kunnen worden gebruikt door uw bestaande datacenterinfrastructuur. Als uw Kubernetes-toepassingen resources in uw datacenter gebruiken, vermindert u het risico op conflicten door een adresruimte te kiezen voor uw aangepaste virtuele netwerk dat verschilt van de adresruimte van uw datacenter.
  • U wordt aangeraden een toegewezen subnet te gebruiken voor uw Kubernetes-cluster.
  • Als u meerdere bestaande virtuele netwerken gebruikt, kunt u overwegen om verschillende adresruimten in elk netwerk te gebruiken als u peering van virtuele netwerken wilt gebruiken. Overlappende adresruimten kunnen de mogelijkheid om peering in te schakelen belemmeren.

De IP-adresblokken ophalen

De AKS-engine ondersteunt implementatie in een bestaand virtueel netwerk. Wanneer het cluster wordt geïmplementeerd in een bestaand virtueel netwerk, worden blokken opeenvolgende adressen gebruikt voor agentknooppunten, besturingsvlakknooppunten, clusterservices en containers (pods). Elk adresblok kan worden omgezet in een subnet in het virtuele netwerk. Alle adresblokken in de clusterimplementatie moeten deel uitmaken van de algemene adresruimte van het virtuele netwerk. Het kiezen van adresblokken buiten de adresruimte van het virtuele netwerk kan leiden tot verbindingsproblemen.

Er zijn minimaal drie adresblokken vereist bij het instellen van een Kubernetes-cluster:

  • Adresblok van knooppunten: het adresblok dat wordt gebruikt voor het toewijzen van adressen aan de clusterknooppunten. Deze waarde kan één adresblok zijn voor alle clusterknooppunten of kunnen afzonderlijke blokken (subnetten) zijn voor besturingsvlak- en agentgroepen. Houd rekening met het aantal knooppunten in uw cluster wanneer u het adresbereik voor dit blok selecteert. Voor Azure CNI krijgen knooppunten en containers hun adressen uit hetzelfde adresblok, dus houd rekening met het aantal containers dat u in uw cluster wilt implementeren wanneer u het adresbereik kiest bij het gebruik van Azure CNI.
  • Adresblok van services: het adresblok van waaruit services die zijn geïmplementeerd in het Kubernetes-cluster, krijgen hun clusteradres vandaan. Houd rekening met het maximum aantal services dat u in uw cluster wilt uitvoeren wanneer u het adresbereik voor dit blok selecteert.
  • Clusteradresblok: het adresblok van waaruit pods hun clusteradres verkrijgen. Houd rekening met het maximum aantal pods dat u in uw cluster wilt uitvoeren wanneer u het adresbereik voor dit blok selecteert. Zoals eerder vermeld, zijn voor Azure CNI de adresblokken van het cluster en de knooppunten hetzelfde.

Naast de adresblokken moet u voor besturingsvlakknooppunten nog twee waarden instellen. U moet weten hoeveel IP-adressen u wilt reserveren voor uw cluster en het eerste opeenvolgende statische IP-adres in de IP-ruimte van het subnet. Voor de AKS-engine is een bereik van maximaal 16 ongebruikte IP-adressen vereist wanneer u meerdere besturingsvlakknooppunten gebruikt. Het cluster gebruikt één IP-adres voor elk besturingsvlak tot vijf besturingsvlakknooppunten. De AKS-engine vereist ook de volgende 10 IP-adressen na het laatste besturingsvlak-knooppunt voor de reservering van IP-adressen voor buffer. Ten slotte wordt een ander IP-adres door de load balancer gebruikt na de controlevlak knooppunten en de bufferreservering, voor een totaal van 16. Bij het plaatsen van uw blok IP-adressen vereist het subnet de volgende toewijzingen van de bestaande IP-adressen:

  • De eerste vier IP-adressen en het laatste IP-adres zijn gereserveerd en kunnen niet worden gebruikt in een Azure-subnet.
  • Er moet een buffer van 16 IP-adressen open blijven.
  • De waarde van het eerste IP-adres van uw cluster moet aan het einde van de adresruimte staan om IP-conflicten te voorkomen. Wijs indien mogelijk de firstConsecutiveStaticIP eigenschap toe aan een IP-adres aan het einde van de beschikbare IP-adresruimte in het subnet.

Als u bijvoorbeeld voor een cluster met drie besturingsvlakknooppunten een subnet met 256 adressen gebruikt, bijvoorbeeld 10.100.0.0/24, moet u uw eerste opeenvolgende statische IP-adres vóór 239 instellen. In de volgende tabel ziet u de adressen en overwegingen:

Bereik voor /24-subnet Aantal Notitie
172.100.0.0 - 172.100.0.3 4 Gereserveerd in het Azure-subnet.
172.100.0.224-172.100.0.238 14 Aantal IP-adressen voor een door de AKS-engine gedefinieerd cluster.

3 IP-adressen voor 3 besturingsvlakknooppunten
10 IP-adressen voor hoofdruimte
1 IP-adres voor de load balancer
172.100.0.238 - 172.100.0.254 16 16 IP-adresbuffer.
172.100.0.255 1 Gereserveerd in het Azure-subnet.

In dit voorbeeld is de eigenschap firstConsecutiveStaticIP172.100.0.224.

Voor grotere subnetten; bijvoorbeeld /16 met meer dan 60 duizend adressen, vindt u het mogelijk niet praktisch om uw statische IP-toewijzingen in te stellen aan het einde van de netwerkruimte. Stel het bereik van het statische IP-adres van uw cluster af van de eerste 24 adressen in uw IP-ruimte, zodat het cluster tolerant kan zijn bij het claimen van adressen.

Voorbeeld van Kubenet-adresblokken

In het volgende voorbeeld ziet u hoe deze verschillende overwegingen de adresruimte invullen in het virtuele netwerk voor een cluster met behulp van de kubenet-netwerkinvoegtoepassing met toegewezen subnetten voor het besturingsvlakknooppunt en agentknooppuntgroepen met drie knooppunten per pool.

VNET-adresruimte: 10.100.0.0/16.

Adresblok (subnet) CIDR IP-bereik AANTAL IP-adressen (beschikbaar)
Blok besturingsvlakknooppunten 10.100.0.0/24 10.100.0.0 - 10.100.0.255 255 - 4 gereserveerd = 251
Blok agentknooppunten 10.100.1.0/24 10.100.1.0 - 10.100.1.255 255 - 4 gereserveerd = 251
Servicesblok 10.100.16.0/20 10.100.16.0 - 10.100.31.255 4.096 - 5 gereserveerd = 4.091
Clusterblok 10.100.128.0/17 10.100.128.0 - 10.100.255.255 32.768 - 5 gereserveerd = 32.763

In dit voorbeeld is de eigenschap firstConsecutiveStaticIP10.100.0.239.

Voorbeeld van Azure CNI-adresblokken

In het volgende voorbeeld ziet u hoe deze verschillende overwegingen de adresruimte invullen in het virtuele netwerk voor een cluster met behulp van de Azure CNI-netwerkinvoegtoepassing met toegewezen subnetten voor het besturingsvlak en agentknooppuntgroepen met drie knooppunten per pool.

VNET-adresruimte: 172.24.0.0/16.

Notitie

Als het openbare IP-bereik zich in uw omgeving bevindt binnen CIDR10.0.0.0/8, gebruikt u kubenet als de netwerkinvoegtoepassing.

Adresblok (subnet) CIDR IP-bereik AANTAL IP-adressen (beschikbaar)
Blok besturingsvlakknooppunten 172.24.0.0/24 172.24.0.0 - 172.24.0.255 255 - 4 gereserveerd = 251
Agentknooppunten en clusterblok 172.24.128.0/17 172.24.128.0 - 172.24.255.255 32.768 - 5 gereserveerd = 32.763
Servicesblok 172.24.16.0/20 172.24.16.0 - 172.24.31.255 4.096 - 5 gereserveerd = 4.091

In dit voorbeeld is firstConsecutiveStaticIPde 172.24.0.239 eigenschap .

Het API-model bijwerken

Werk het API-model bij dat wordt gebruikt voor het implementeren van het cluster van de AKS-engine naar uw aangepaste virtuele netwerk.

Stel in masterProfilede volgende waarden in:

Veld Opmerking Beschrijving
vnetSubnetId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn Geef de pad-id van Azure Resource Manager op voor het subnet. Deze waarde wordt toegewezen aan het adresblok van de controlevlakknooppunten.
firstConsecutiveStaticIP 10.100.0.239 Wijs een IP-adres toe aan de firstConsecutiveStaticIP configuratie-eigenschap dat zich aan het einde van de beschikbare IP-adresruimte in het gewenste subnet bevindt. firstConsecutiveStaticIP is alleen van toepassing op de knooppuntgroep van het besturingsvlak.

Stel in agentPoolProfiles de volgende waarden in:

Veld Opmerking Beschrijving
vnetSubnetId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn Geef de pad-id van Azure Resource Manager op voor het subnet. Deze waarde wordt toegewezen aan het adresblok van de agentknooppunten.

Zoek in orchestratorProfile kubernetesConfig en stel de volgende waarde in:

Veld Opmerking Beschrijving
clusterSubnet 10.100.128.0/17 Het IP-subnet dat wordt gebruikt voor het toewijzen van IP-adressen voor podnetwerkinterfaces. Deze waarde komt overeen met het clusteradresblok. Het subnet moet zich in de VNET-adresruimte bevinden. Als Azure CNI is ingeschakeld, is de standaardwaarde 10.240.0.0/12. Zonder Azure CNI is de standaardwaarde 10.244.0.0/16. Gebruik /16 in plaats daarvan /24 subnet. Als u /24 gebruikt, wordt dit subnet alleen toegewezen aan één knooppunt. Het andere knooppunt krijgt geen POD-netwerk toegewezen, omdat u geen IP-ruimte meer hebt, zodat ze niet gereed zijn in het cluster.
serviceCidr 10.100.16.0/20 Het IP-subnet dat wordt gebruikt voor het toewijzen van IP-adressen voor services die in het cluster zijn geïmplementeerd. Deze waarde wordt gekoppeld aan het blok clusterservices.
dnsServiceIP 10.100.16.10 Het IP-adres dat moet worden toegewezen aan de DNS-clusterservice. Het adres moet afkomstig zijn van het serviceCidr-subnet. Deze waarde moet worden ingesteld bij het opgeven van de serviceCidr. De standaardwaarde is het .10-adres van het serviceCidr-subnet.

Als u bijvoorbeeld kubenet gebruikt:
Met een netwerkadresruimte van 10.100.0.0/16 waar het subnet zich control-plane-sn bevindt 10.100.0.0/24 en agents-sn is 10.100.1.0/24

"masterProfile": {
  ...
  "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
  "firstConsecutiveStaticIP": "10.100.0.239",
  ...
},
...
"agentPoolProfiles": [
  {
    ...
    "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn",
    ...
  },
    ...
"kubernetesConfig": [
  {
    ...
    "clusterSubnet": "10.100.128.0/17",
    "serviceCidr": "10.100.16.0/20",
    "dnsServiceIP" : "10.100.16.10",

    ...
  },

Als u bijvoorbeeld Azure CNI gebruikt met een netwerkadresruimte van 172.24.0.0/16 waarin het subnet voor control-plane-sn is 172.24.0.0/24 en k8s-sn wordt 172.24.128.0/17:

"masterProfile": {
  ...
  "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
  "firstConsecutiveStaticIP": "172.24.0.239",
  ...
},
...
"agentPoolProfiles": [
  {
    ...
    "vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/k8s-sn",
    ...
  },
    ...
"kubernetesConfig": [
  {
    ...
    "clusterSubnet": "172.24.128.0/17",
    "serviceCidr": "172.24.16.0/20",
    "dnsServiceIP" : "172.24.16.10",
    ...
  },

Uw cluster implementeren

Nadat u de waarden aan uw API-model hebt toegevoegd, kunt u het cluster vanaf uw clientcomputer implementeren met behulp van de opdracht deploy in de AKS-engine. Zie Een Kubernetes-cluster implementeren voor instructies.

De routetabel instellen

Als u kubenet gebruikt, bijvoorbeeld: networkPluginkubenet in het configuratieobject van het kubernetesConfig API-model. Nadat u het cluster hebt geïmplementeerd, gaat u terug naar uw virtuele netwerk in de Azure Stack-gebruikersportal. Stel zowel de routetabel als de netwerkbeveiligingsgroep (NSG) in op de subnetblade. Nadat u een cluster hebt geïmplementeerd in uw aangepaste virtuele netwerk, haalt u de ID op van de routetabelresource van de blade Netwerk in de resourcegroep van uw cluster.

  1. Open de Azure Stack Hub-gebruikersportal in uw Azure Stack Hub-exemplaar.

  2. Selecteer Alle resources.

  3. Voer de naam van uw virtuele netwerk in het zoekvak in.

  4. Selecteer Subnetten en selecteer vervolgens de naam van het subnet dat uw cluster bevat.

    routetabel en netwerkbeveiligingsgroep

  5. Selecteer Routetabel en selecteer vervolgens de routetabel voor uw cluster.

  6. Zorg ervoor dat dit gebeurt voor elk subnet dat is opgegeven in het API-model, inclusief het masterProfile subnet.

Notitie

Aangepaste virtuele netwerken voor Kubernetes Windows-clusters hebben een bekend probleem .

Volgende stappen