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 gekeken naar de informatie die u nodig hebt in uw virtuele netwerk. U vindt 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.
- Zie Kubenet-netwerken gebruiken met uw eigen IP-adresbereiken in Azure Kubernetes Service (AKS) voor een bespreking van de kubenet-netwerkinvoegtoepassing in Azure.
- Zie Azure CNI-netwerken configureren in Azure Kubernetes Service (AKS) voor een bespreking van de Azure CNI-netwerkinvoegtoepassing in Azure.
Beperkingen 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 groep besturingsvlakknooppunten en de agentknooppuntengroep 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 de ruimte van het IP-bereik van het aangepaste virtuele netwerk. 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 kubenet - en Azure CNI-voorbeelden hieronder.
- De
169.254.0.0/16
adresruimte mag niet worden gebruikt voor aangepaste VNET's voor Kubernetes-clusters.
Aangepast virtueel netwerk maken
U moet een aangepast virtueel netwerk in uw Azure Stack Hub-exemplaar hebben. Zie Quickstart: Een virtueel netwerk maken met behulp van de Azure Portal voor meer informatie.
Maak een nieuw subnet in uw virtuele netwerk. U moet de resource-id en het IP-adresbereik van het subnet ophalen. U gebruikt de resource-id en het bereik in uw API-model wanneer u uw cluster implementeert.
Open de Azure Stack Hub-gebruikersportal in uw Azure Stack Hub-exemplaar.
Selecteer Alle resources.
Voer de naam van uw virtuele netwerk in het zoekvak in.
Selecteer Subnetten>+ subnetten om een subnet toe te voegen.
Voeg een naam en een adresbereik toe met behulp van de CIDR-notatie. Selecteer OK.
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 devnetSubnetId
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
Selecteer Subnetten op de blade Virtuele netwerken . Selecteer de subnetnaam, bijvoorbeeld
control-plane-sn
.Koppel het subnet niet aan een netwerkbeveiligingsgroep (NSG).
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 op voor elk subnet. Houd rekening met de volgende factoren wanneer u de adresruimten en bereiken kiest die u in uw Kubernetes-cluster wilt gebruiken:
- Overlappende adresruimten kunnen leiden tot conflicten tussen 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
bereiken ,172.16/12
en192.168/16
worden vaak gebruikt voor privénetwerken en kunnen worden gebruikt door uw bestaande datacenterinfrastructuur. Als uw Kubernetes-toepassingen gebruikmaken van resources in uw datacenter, vermindert u het risico op conflicten door een adresruimte te kiezen voor uw aangepaste virtuele netwerk die 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 op elk netwerk te gebruiken als u peering voor virtuele netwerken wilt gebruiken. Overlappende adresruimten kunnen uw mogelijkheid om peering in te schakelen, nadelig beïnvloeden.
De IP-adresblokken ophalen
AKS-engine ondersteunt implementatie in een bestaand virtueel netwerk. Wanneer uw cluster wordt geïmplementeerd in een bestaand virtueel netwerk, worden blokken met opeenvolgende adressen gebruikt voor agentknooppunten, besturingsvlakknooppunten, clusterservices en containers (pods). Elk adresblok kan worden omgezet in een subnet binnen 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 voor knooppunten: dit is het adresblok dat wordt gebruikt voor het toewijzen van adressen aan de clusterknooppunten. Dit kan één adresblok zijn voor alle clusterknooppunten of afzonderlijke blokken (subnetten) voor besturingsvlak- en agentpools. Houd rekening met het aantal knooppunten in uw cluster bij het selecteren van het adresbereik voor dit blok. Voor Azure CNI-knooppunten en -containers worden hun adressen opgehaald uit hetzelfde adresblok, dus houd rekening met het aantal containers dat u wilt implementeren in uw cluster bij het kiezen van het adresbereik bij het gebruik van Azure CNI.
- Services-adresblok: dit is het adresblok van waaruit services die zijn geïmplementeerd in het Kubernetes-cluster, hun clusteradres ophalen. Houd rekening met het maximum aantal services dat u in uw cluster wilt uitvoeren bij het selecteren van het adresbereik voor dit blok.
- Clusteradresblok: dit is het adresblok waaruit pods hun clusteradres krijgen. Houd rekening met het maximum aantal pods dat u wilt uitvoeren in uw cluster bij het selecteren van het adresbereik voor dit blok. 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 moet 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 met maximaal vijf besturingsvlakknooppunten. De AKS-engine vereist ook het volgende 10 IP-adres na het laatste besturingsvlakknooppunt voor het reserveren van het IP-adres in de hoofdruimte. Ten slotte wordt een ander IP-adres gebruikt door de load balancer na de besturingsvlakknooppunten en de reservering van de hoofdruimte, voor een totaal van 16. Wanneer u het blok met IP-adressen plaatst, 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.
- Een buffer van 16 IP-adressen moet open blijven.
- De waarde van het eerste IP-adres van uw cluster moet zich tegen het einde van de adresruimte bevinden om IP-conflicten te voorkomen. Wijs de
firstConsecutiveStaticIP
eigenschap indien mogelijk toe aan een IP-adres aan het einde van de beschikbare IP-adresruimte in het subnet.
Bijvoorbeeld voor een cluster met drie besturingsvlakknooppunten. Als u een subnet met 256 adressen gebruikt, bijvoorbeeld 10.100.0.0/24, moet u uw eerste opeenvolgende statische IP-adres instellen vóór 239. 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 ruimte 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 firstConsecutiveStaticIP
is 172.100.0.224
de eigenschap .
Voor grotere subnetten, bijvoorbeeld /16 met meer dan 60 duizend adressen, is het mogelijk niet praktisch om uw statische IP-toewijzingen in te stellen op het einde van de netwerkruimte. Stel het bereik van het statische IP-adres van het cluster af van de eerste 24 adressen in uw IP-ruimte, zodat het cluster flexibel kan zijn bij het claimen van adressen.
Voorbeeld van Kubenet-adresblokken
In het volgende voorbeeld ziet u hoe deze verschillende overwegingen de adresruimte in het virtuele netwerk voor een cluster invullen met behulp van de kubenet-netwerkinvoegtoepassing met toegewezen subnetten voor het besturingsvlakknooppunt en agentknooppuntgroepen met drie knooppunten per groep.
VNET-adresruimte: 10.100.0.0/16.
Adresblok (subnet) | CIDR | IP-bereik | IP-aantal (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 10.100.0.239
de firstConsecutiveStaticIP
eigenschap .
Voorbeeld van Azure CNI-adresblokken
In het volgende voorbeeld ziet u hoe deze verschillende overwegingen de adresruimte in het virtuele netwerk voor een cluster invullen 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 binnen CIDR10.0.0.0/8 bevindt, gebruikt u kubenet als de netwerkinvoegtoepassing.
Adresblok (subnet) | CIDR | IP-bereik | IP-aantal (beschikbaar) |
---|---|---|---|
Blok besturingsvlakknooppunten | 172.24.0.0/24 | 172.24.0.0 - 172.24.0.255 | 255 - 4 gereserveerd = 251 |
Agentknooppunten & 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 172.24.0.239
de firstConsecutiveStaticIP
eigenschap .
Het API-model bijwerken
Werk het API-model bij dat wordt gebruikt om het cluster vanuit de AKS-engine te implementeren in uw aangepaste virtuele netwerk.
Stel in masterProfile de volgende waarden in:
Veld | Voorbeeld | 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 het Azure Resource Manager het subnet op. Deze waarde wordt toegewezen aan het bovenstaande adresblok van de besturingsvlakknooppunten. |
firstConsecutiveStaticIP | 10.100.0.239 | Wijs aan de firstConsecutiveStaticIP configuratie-eigenschap een IP-adres toe dat zich aan het einde van de beschikbare IP-adresruimte in het gewenste subnet bevindt.
firstConsecutiveStaticIP alleen van toepassing op de knooppuntgroep van het besturingsvlak. |
Stel in agentPoolProfiles de volgende waarden in:
Veld | Voorbeeld | 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 het Azure Resource Manager het subnet op. Deze waarde wordt toegewezen aan het bovenstaande adresblok voor agentknooppunten. |
Zoek in orchestratorProfilekubernetesConfig en stel de volgende waarde in:
Veld | Voorbeeld | Beschrijving |
---|---|---|
clusterSubnet | 10.100.128.0/17 |
Het IP-subnet dat wordt gebruikt voor het toewijzen van IP-adressen voor podnetwerkinterfaces. Deze waarde wordt toegewezen aan het bovenstaande 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 van /24 subnet. Als u /24 gebruikt, wordt dit subnet toegewezen aan slechts één knooppunt. Aan andere knooppunten wordt 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 toegewezen aan het bovenstaande clusterservicesblok. |
dnsServiceIP | 10.100.16.10 |
Het IP-adres dat moet worden toegewezen aan de DNS-service van het cluster. Het adres moet afkomstig zijn van het subnet serviceCidr. Deze waarde moet worden ingesteld bij het opgeven van de serviceCidr. De standaardwaarde is het .10-adres van het subnet serviceCidr. |
Als u bijvoorbeeld kubenet gebruikt:
Met een netwerkadresruimte van 10.100.0.0/16
waar het subnet voor control-plane-sn
is 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
waar het subnet voor control-plane-sn
is 172.24.0.0/24
en k8s-sn
is 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 hebt toegevoegd aan uw API-model, kunt u het cluster implementeren vanaf uw clientcomputer met behulp van de opdracht in de deploy
AKS-engine. Zie Een Kubernetes-cluster implementeren voor instructies.
De routetabel instellen
Als u kubenet gebruikt, bijvoorbeeld networkPlugin
: kubenet
in het configuratieobject van het kubernetesConfig
API-model. Nadat u uw cluster hebt geïmplementeerd, keert 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 van de routetabelresource op op de blade Netwerk in de resourcegroep van uw cluster.
Open de Azure Stack Hub-gebruikersportal in uw Azure Stack Hub-exemplaar.
Selecteer Alle resources.
Voer de naam van uw virtuele netwerk in het zoekvak in.
Selecteer Subnetten en selecteer vervolgens de naam van het subnet dat uw cluster bevat.
Selecteer Routetabel en selecteer vervolgens de routetabel voor uw cluster.
Zorg ervoor dat dit wordt gedaan voor elk subnet dat is opgegeven in het API-model, inclusief het
masterProfile
subnet.
Notitie
Aangepast virtueel netwerk voor Kubernetes Windows-cluster heeft een bekend probleem.
Volgende stappen
- Meer informatie over de AKS-engine in Azure Stack Hub
- Meer informatie over overzicht van Azure Monitor voor containers