Een privé-AKS-cluster (Azure Kubernetes Service) maken
Dit artikel helpt u bij het implementeren van een op private link gebaseerd AKS-cluster. Zie Een Azure Kubernetes Service-cluster maken met API Server VNet-integratie (preview) als u geïnteresseerd bent in het maken van een AKS-cluster zonder vereiste private link of tunnel.
Overzicht
In een privécluster heeft het besturingsvlak of de API-server interne IP-adressen die zijn gedefinieerd in het RFC1918 - Adrestoewijzing voor privéinternetdocument . Met behulp van een privécluster kunt u ervoor zorgen dat netwerkverkeer tussen uw API-server en uw knooppuntgroepen alleen in het privénetwerk blijft.
Het besturingsvlak of de API-server bevindt zich in een door AKS beheerde Azure-resourcegroep en uw cluster of knooppuntgroep bevindt zich in uw resourcegroep. De server en de cluster- of knooppuntgroep kunnen met elkaar communiceren via de Azure Private Link-service in het virtuele netwerk van de API-server en een privé-eindpunt dat wordt weergegeven op het subnet van uw AKS-cluster.
Wanneer u een privé-AKS-cluster inricht, maakt AKS standaard een privé-FQDN met een privé-DNS-zone en een extra openbare FQDN met een bijbehorende A
record in openbare DNS van Azure. De agentknooppunten blijven de A
record in de privé-DNS-zone gebruiken om het privé-IP-adres van het privé-eindpunt om te zetten voor communicatie met de API-server.
Regionale beschikbaarheid
Privéclusters zijn beschikbaar in openbare regio's, Azure Government en Microsoft Azure beheerd door 21Vianet-regio's waar AKS wordt ondersteund.
Vereisten
- Azure CLI versie 2.28.0 of hoger. Voer
az --version
deze uit om de versie te vinden en voer deze uitaz upgrade
om de versie te upgraden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. - De
aks-preview
extensie 0.5.29 of hoger. - Als u Azure Resource Manager (ARM) of de Azure REST API gebruikt, moet de AKS-API-versie 2021-05-01 of hoger zijn.
- Als u een aangepaste DNS-server wilt gebruiken, voegt u het openbare IP-adres van Azure 168.63.129.16 toe als de upstream-DNS-server in de aangepaste DNS-server en moet u dit openbare IP-adres toevoegen als de eerste DNS-server. Zie Wat is IP-adres 168.63.129.16 voor meer informatie over het Azure-IP-adres?
- De DNS-zone van het cluster moet zijn wat u doorstuurt naar 168.63.129.16. Meer informatie over zonenamen vindt u in de dns-zoneconfiguratie van Azure-services.
- Bestaande AKS-clusters die zijn ingeschakeld met API Server VNet-integratie, kunnen de privéclustermodus hebben ingeschakeld. Zie de modus Privécluster in- of uitschakelen voor een bestaand cluster met API Server VNet-integratie voor meer informatie.
Notitie
De Azure Linux-knooppuntgroep is nu algemeen beschikbaar (GA). Zie de inleiding tot de Azure Linux-containerhost voor AKS voor meer informatie over de voordelen en implementatiestappen.
Beperkingen
- Ip-geautoriseerde bereiken kunnen niet worden toegepast op het privé-API-servereindpunt, ze zijn alleen van toepassing op de openbare API-server.
- Azure Private Link-servicebeperkingen zijn van toepassing op privéclusters.
- Er is geen ondersteuning voor door Microsoft gehoste Azure DevOps-agents met privéclusters. Overweeg om zelf-hostende agents te gebruiken.
- Als u Wilt dat Azure Container Registry kan werken met een privé-AKS-cluster, stelt u een privékoppeling in voor het containerregister in het virtuele clusternetwerk of stelt u peering in tussen het virtuele netwerk van het containerregister en het virtuele netwerk van het privécluster.
- Als u het privé-eindpunt in het subnet van de klant verwijdert of wijzigt, werkt het cluster niet meer.
- De Azure Private Link-service wordt alleen ondersteund in Standard Azure Load Balancer. Basic Azure Load Balancer wordt niet ondersteund.
Een privé-AKS-cluster maken
Maak een resourcegroep met behulp van de
az group create
opdracht. U kunt ook een bestaande resourcegroep gebruiken voor uw AKS-cluster.az group create \ --name <private-cluster-resource-group> \ --location <location>
Maak een privécluster met standaard basisnetwerken met behulp van de
az aks create
opdracht met de--enable-private-cluster
vlag.az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --generate-ssh-keys
Verbinding maken met het privécluster
Als u een Kubernetes-cluster wilt beheren, gebruikt u de Kubernetes-opdrachtregelclient kubectl. kubectl
is al geïnstalleerd als u Azure Cloud Shell gebruikt. Als u lokaal wilt installeren kubectl
, gebruikt u de az aks install-cli
opdracht.
Configureer
kubectl
deze om verbinding te maken met uw Kubernetes-cluster met behulp van deaz aks get-credentials
opdracht. Bij deze opdracht worden referenties gedownload en wordt Kubernetes CLI geconfigureerd voor het gebruik van deze referenties.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
Controleer de verbinding met uw cluster met behulp van de
kubectl get
opdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl get nodes
Aangepaste domeinen gebruiken
Zie Aangepaste domeinen gebruiken als u aangepaste domeinen wilt configureren die alleen intern kunnen worden omgezet.
Een openbare FQDN uitschakelen
Een openbare FQDN op een nieuw cluster uitschakelen
Schakel een openbare FQDN uit bij het maken van een privé-AKS-cluster met behulp van de
az aks create
opdracht met de--disable-public-fqdn
vlag.az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone <private-dns-zone-mode> \ --disable-public-fqdn \ --generate-ssh-keys
Een openbare FQDN op een bestaand cluster uitschakelen
Schakel een openbare FQDN uit op een bestaand AKS-cluster met behulp van de
az aks update
opdracht met de--disable-public-fqdn
vlag.az aks update \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --disable-public-fqdn
Een privé-DNS-zone configureren
U kunt privé-DNS-zones configureren met behulp van de volgende parameters:
system
: Dit is de standaardwaarde. Als het--private-dns-zone
argument wordt weggelaten, maakt AKS een privé-DNS-zone in de knooppuntresourcegroep.none
: De standaardwaarde is openbare DNS. AKS maakt geen privé-DNS-zone.CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
: Hiervoor moet u een privé-DNS-zone maken in de volgende indeling voor de globale Azure-cloud:privatelink.<region>.azmk8s.io
of<subzone>.privatelink.<region>.azmk8s.io
. U hebt de resource-id van de privé-DNS-zone nodig voor toekomstig gebruik. U hebt ook een door de gebruiker toegewezen identiteit of service-principal nodig met de rollen Privé-DNS Zone-inzender en Netwerkbijdrager. Bij de implementatie met VNet-integratie van API-server ondersteunt een privé-DNS-zone de naamgevingsindeling vanprivate.<region>.azmk8s.io
of<subzone>.private.<region>.azmk8s.io
. U kunt deze resource niet wijzigen of verwijderen nadat u het cluster hebt gemaakt, omdat dit prestatieproblemen en clusterupgrades kan veroorzaken.- Als de privé-DNS-zone zich in een ander abonnement bevindt dan het AKS-cluster, moet u de
Microsoft.ContainerServices
Azure-provider registreren in beide abonnementen. - U kunt dit
CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
alleen gebruikenfqdn-subdomain
om subdomeinen te bieden.privatelink.<region>.azmk8s.io
- Als uw AKS-cluster is geconfigureerd met een Active Directory-service-principal, biedt AKS geen ondersteuning voor het gebruik van een door het systeem toegewezen beheerde identiteit met een aangepaste privé-DNS-zone. Het cluster moet door de gebruiker toegewezen beheerde identiteitverificatie gebruiken.
- Als u een
<subzone>
waarde opgeeft, is er een limiet van 32 tekens voor de<subzone>
naam.
- Als de privé-DNS-zone zich in een ander abonnement bevindt dan het AKS-cluster, moet u de
Notitie
U kunt configureren CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
met behulp van een ARM-sjabloon of de Azure CLI. privateDNSZone
accepteert de privé-DNZ-zone resourceID
, zoals wordt weergegeven in het volgende voorbeeld:
properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}
Een privé-AKS-cluster maken met een privé-DNS-zone
Maak een privé-AKS-cluster met een privé-DNS-zone met behulp van de
az aks create
opdracht met de volgende vlaggen:az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone [system|none] \ --generate-ssh-keys
Een privé-AKS-cluster maken met een aangepaste privé-DNS-zone of privé-DNS-subzone
Maak een privé-AKS-cluster met een aangepaste privé-DNS-zone of subzone met behulp van de
az aks create
opdracht met de volgende vlaggen:# The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io" az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone <custom private dns zone or custom private dns subzone resourceID> \ --generate-ssh-keys
Een privé-AKS-cluster maken met een aangepaste privé-DNS-zone en een aangepast subdomein
Maak een privé-AKS-cluster met een aangepaste privé-DNS-zone en -subdomein met behulp van de
az aks create
opdracht met de volgende vlaggen:# The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io" az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone <custom private dns zone resourceID> \ --fqdn-subdomain <subdomain> \ --generate-ssh-keys
Een privécluster bijwerken van een privé-DNS-zone naar openbaar
U kunt alleen bijwerken van byo
of system
naar none
. Er wordt geen andere combinatie van updatewaarden ondersteund. Zorg ervoor dat u verbinding maakt met het privécluster voordat u bijwerkt.
Waarschuwing
Wanneer u een privécluster van byo
of system
naar none
bijwerkt, worden de agentknooppunten gewijzigd in het gebruik van een openbare FQDN. In een AKS-cluster dat gebruikmaakt van Azure Virtual Machine Scale Sets, wordt een upgrade van de knooppuntinstallatiekopieën uitgevoerd om uw knooppunten bij te werken met de openbare FQDN.
Werk een privécluster bij van
byo
ofsystem
naarnone
het gebruik van deaz aks update
opdracht met de volgende vlaggen:az aks update \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --private-dns-zone none
Opties voor het maken van verbinding met het privécluster
Het EINDPUNT van de API-server heeft geen openbaar IP-adres. Als u de API-server wilt beheren, moet u een VIRTUELE machine gebruiken die toegang heeft tot het Azure Virtual Network (VNet) van het AKS-cluster. Er zijn verschillende opties voor het tot stand brengen van netwerkconnectiviteit met het privécluster:
- Maak een VIRTUELE machine in hetzelfde VNet als het AKS-cluster met behulp van de
az vm create
opdracht met de--vnet-name
vlag. - Gebruik een VIRTUELE machine in een afzonderlijk netwerk en stel peering voor virtuele netwerken in.
- Gebruik een Express Route- of VPN-verbinding .
- Gebruik de AKS-functie
command invoke
. - Gebruik een privé-eindpuntverbinding .
- Gebruik een Cloud Shell-exemplaar dat is geïmplementeerd in een subnet dat is verbonden met de API-server voor het cluster.
Het maken van een VIRTUELE machine in hetzelfde VNet als het AKS-cluster is de eenvoudigste optie. ExpressRoute en VPN's voegen kosten toe en vereisen extra netwerkcomplexiteit. Voor peering van virtuele netwerken moet u de CIDR-bereiken van uw netwerk plannen om ervoor te zorgen dat er geen overlappende bereiken zijn.
Peering op virtueel netwerk
Als u peering van virtuele netwerken wilt gebruiken, moet u een koppeling instellen tussen het virtuele netwerk en de privé-DNS-zone.
- Navigeer in Azure Portal naar uw knooppuntresourcegroep en selecteer uw privé-DNS-zoneresource.
- Selecteer in het servicemenu onder DNS-beheer de optie Add Virtual Network Links>.
- Configureer op de pagina Koppeling voor virtueel netwerk toevoegen de volgende instellingen:
- Koppelingsnaam: Voer een naam in voor de koppeling voor het virtuele netwerk.
- Virtueel netwerk: selecteer het virtuele netwerk dat de virtuele machine bevat.
- Selecteer Maken om de koppeling voor het virtuele netwerk te maken.
- Navigeer naar de resourcegroep die het virtuele netwerk van uw cluster bevat en selecteer uw virtuele netwerkresource.
- Selecteer In het servicemenu onder Instellingen de optie Peerings>Toevoegen.
- Configureer op de pagina Peering toevoegen de volgende instellingen:
- Naam van peeringkoppeling: voer een naam in voor de peeringkoppeling.
- Virtueel netwerk: selecteer het virtuele netwerk van de virtuele machine.
- Selecteer Toevoegen om de peeringkoppeling te maken.
Zie Peering voor virtuele netwerken voor meer informatie.
Hub en spoke met aangepaste DNS
Hub- en spoke-architecturen worden vaak gebruikt voor het implementeren van netwerken in Azure. In veel van deze implementaties worden DNS-instellingen in de spoke-VNets geconfigureerd om te verwijzen naar een centrale DNS-doorstuurserver die on-premises en op Azure gebaseerde DNS-omzetting toestaat.
Bij het implementeren van een AKS-cluster in een dergelijke netwerkomgeving zijn er enkele speciale overwegingen:
- Wanneer een privécluster is ingericht, worden standaard een privé-eindpunt (1) en een privé-DNS-zone (2) gemaakt in de door het cluster beheerde resourcegroep. Het cluster maakt gebruik van een
A
record in de privézone om het IP-adres van het privé-eindpunt voor communicatie met de API-server op te lossen. - De privé-DNS-zone is alleen gekoppeld aan het VNet waaraan de clusterknooppunten zijn gekoppeld (3). Dit betekent dat het privé-eindpunt alleen kan worden omgezet door hosts in dat gekoppelde VNet. In scenario's waarin geen aangepaste DNS is geconfigureerd op het VNet (standaard), werkt dit zonder probleem als hostspunt op 168.63.129.16 voor DNS die records in de privé-DNS-zone kunnen omzetten vanwege de koppeling.
- In scenario's waarin het VNet met uw cluster aangepaste DNS-instellingen (4) heeft, mislukt de clusterimplementatie, tenzij de privé-DNS-zone is gekoppeld aan het VNet dat de aangepaste DNS-resolvers (5) bevat. Deze koppeling kan handmatig worden gemaakt nadat de privézone is gemaakt tijdens het inrichten van het cluster of via automatisering bij het detecteren van het maken van de zone met behulp van op gebeurtenissen gebaseerde implementatiemechanismen (bijvoorbeeld Azure Event Grid en Azure Functions). Om clusterfouten tijdens de eerste implementatie te voorkomen, kan het cluster worden geïmplementeerd met de resource-id van de privé-DNS-zone. Dit werkt alleen met het resourcetype
Microsoft.ContainerService/managedCluster
en de API-versie2022-07-01
. Het gebruik van een oudere versie met een ARM-sjabloon of Bicep-resourcedefinitie wordt niet ondersteund.
Notitie
Voorwaardelijk doorsturen biedt geen ondersteuning voor subdomeinen.
Notitie
Als u bring your own route table gebruikt met kubenet en bring your own DNS with private clusters, mislukt het maken van het cluster. Nadat het maken van het cluster is mislukt, moet u de RouteTable
in de knooppuntresourcegroep koppelen aan het subnet.
Een privé-eindpuntverbinding gebruiken
Een privé-eindpunt kan worden ingesteld zodat een VNet niet hoeft te worden gekoppeld om te communiceren met het privécluster. Maak een nieuw privé-eindpunt in het virtuele netwerk met de verbruikende resources en maak vervolgens een koppeling tussen uw virtuele netwerk en een nieuwe privé-DNS-zone in hetzelfde netwerk.
Belangrijk
Als het virtuele netwerk is geconfigureerd met aangepaste DNS-servers, moet privé-DNS op de juiste wijze worden ingesteld voor de omgeving. Zie de documentatie voor naamomzetting van virtuele netwerken voor meer informatie.
Een privé-eindpuntresource maken
Maak een privé-eindpuntresource in uw VNet:
- Selecteer een resource maken op de startpagina van Azure Portal.
- Zoek naar privé-eindpunt en selecteer Privé-eindpunt maken>.
- Selecteer Maken.
- Configureer op het tabblad Basisbeginselen de volgende instellingen:
- Projectdetails
- Abonnement: Selecteer het abonnement waarin uw privécluster zich bevindt.
- Resourcegroep: Selecteer de resourcegroep die uw virtuele netwerk bevat.
- Exemplaardetails
- Naam: Voer een naam in voor uw privé-eindpunt, zoals myPrivateEndpoint.
- Regio: Selecteer dezelfde regio als uw virtuele netwerk.
- Projectdetails
- Selecteer Volgende: Resource en configureer de volgende instellingen:
- Verbindingsmethode: Selecteer Verbinding maken met een Azure-resource in mijn directory.
- Abonnement: Selecteer het abonnement waarin uw privécluster zich bevindt.
- Resourcetype: Selecteer Microsoft.ContainerService/managedClusters.
- Resource: Selecteer uw privécluster.
- Doelsubresource: Beheer selecteren.
- Selecteer Volgende: Virtueel netwerk en configureer de volgende instellingen:
- Netwerken
- Virtueel netwerk: selecteer uw virtuele netwerk.
- Subnet: Selecteer uw subnet.
- Netwerken
- Selecteer Volgende: DNS>Next: Tags en (optioneel) stel indien nodig sleutelwaarden in.
- Selecteer Volgende: Beoordelen en maken>.
Zodra de resource is gemaakt, registreert u het privé-IP-adres van het privé-eindpunt voor toekomstig gebruik.
Een privé-DNS-zone maken
Wanneer u het privé-eindpunt hebt gemaakt, maakt u een nieuwe privé-DNS-zone met dezelfde naam als de privé-DNS-zone die door het privécluster is gemaakt. Vergeet niet om deze DNS-zone te maken in het VNet met de verbruikende resources.
- Navigeer in Azure Portal naar uw knooppuntresourcegroep en selecteer uw privé-DNS-zoneresource.
- Selecteer recordsets in het servicemenu onder DNS-beheer en noteer het volgende:
- De naam van de privé-DNS-zone, die het patroon
*.privatelink.<region>.azmk8s.io
volgt. - De naam van de
A
record (met uitzondering van de privé-DNS-naam). - De time-to-live (TTL).
- De naam van de privé-DNS-zone, die het patroon
- Selecteer een resource maken op de startpagina van Azure Portal.
- Zoek Privé-DNS zone en selecteer De zone Maken> Privé-DNS.
- Configureer op het tabblad Basisbeginselen de volgende instellingen:
- Projectdetails:
- Selecteer Abonnement.
- Selecteer de resourcegroep waarin u het privé-eindpunt hebt gemaakt.
- Exemplaardetails
- Naam: Voer de naam in van de DNS-zone die is opgehaald uit de vorige stappen.
- Regio is standaard ingesteld op de locatie van uw resourcegroep.
- Projectdetails:
- Selecteer Beoordelen en maken>Maken.
A
Een record maken
Zodra de privé-DNS-zone is gemaakt, maakt u een A
record die het privé-eindpunt koppelt aan het privécluster:
- Ga naar de privé-DNS-zone die u in de vorige stappen hebt gemaakt.
- Selecteer recordsets>toevoegen in het servicemenu onder DNS-beheer.
- Configureer op de pagina Recordset toevoegen de volgende instellingen:
- Naam: Voer de naam in die is opgehaald uit de record in de
A
DNS-zone van het privécluster. - Type: Selecteer A - Adresrecord.
- TTL: Voer het nummer uit de
A
record in de DNS-zone van het privécluster in. - TTL-eenheid: Wijzig de vervolgkeuzelijst zodat deze overeenkomt met de waarde in de record uit de
A
DNS-zone van het privécluster. - IP-adres: voer het IP-adres in van het privé-eindpunt dat u hebt gemaakt.
- Naam: Voer de naam in die is opgehaald uit de record in de
- Selecteer Toevoegen om de
A
record te maken.
Belangrijk
Gebruik bij het maken van de A
record alleen de naam en niet de FQDN (Fully Qualified Domain Name).
De privé-DNS-zone koppelen aan het virtuele netwerk
Zodra de A
record is gemaakt, koppelt u de privé-DNS-zone aan het virtuele netwerk dat toegang heeft tot het privécluster:
- Ga naar de privé-DNS-zone die u in de vorige stappen hebt gemaakt.
- Selecteer in het servicemenu onder DNS-beheer de optie Add Virtual Network Links>.
- Configureer op de pagina Koppeling voor virtueel netwerk toevoegen de volgende instellingen:
- Koppelingsnaam: Voer een naam in voor uw virtuele netwerkkoppeling.
- Abonnement: Selecteer het abonnement waarin uw privécluster zich bevindt.
- Virtueel netwerk: selecteer het virtuele netwerk van uw privécluster.
- Selecteer Maken om de koppeling te maken.
Het kan enkele minuten duren voordat de bewerking is voltooid. Zodra de koppeling voor het virtuele netwerk is gemaakt, kunt u deze openen via het tabblad Koppelingen van virtuele netwerken dat u in stap 2 hebt gebruikt.
Waarschuwing
- Als het privécluster is gestopt en opnieuw wordt gestart, wordt de oorspronkelijke private link-service van het privécluster verwijderd en opnieuw gemaakt, waardoor de verbinding tussen uw privé-eindpunt en het privécluster wordt verbroken. U kunt dit probleem oplossen door alle door de gebruiker gemaakte privé-eindpunten te verwijderen en opnieuw te maken die zijn gekoppeld aan het privécluster. Als de opnieuw gemaakte privé-eindpunten nieuwe IP-adressen hebben, moet u ook DNS-records bijwerken.
- Als u de DNS-records in de privé-DNS-zone bijwerkt, moet u ervoor zorgen dat de host waaruit u verbinding probeert te maken, gebruikmaakt van de bijgewerkte DNS-records. U kunt dit controleren met behulp van de
nslookup
opdracht. Als u merkt dat de updates niet worden weergegeven in de uitvoer, moet u mogelijk de DNS-cache op uw computer leegmaken en het opnieuw proberen.
Volgende stappen
Zie Best practices voor netwerkconnectiviteit en -beveiliging in AKS voor de bijbehorende aanbevolen procedures.
Azure Kubernetes Service