Skapa ett privat AkS-kluster (Azure Kubernetes Service)
Den här artikeln hjälper dig att distribuera ett privat länkbaserat AKS-kluster. Om du är intresserad av att skapa ett AKS-kluster utan nödvändig privat länk eller tunnel kan du läsa Skapa ett Azure Kubernetes Service-kluster med API Server VNet-integrering (förhandsversion).
I ett privat kluster har kontrollplanet eller API-servern interna IP-adresser som definieras i dokumentet RFC1918 – Adressallokering för privat Internet . Genom att använda ett privat kluster kan du se till att nätverkstrafik mellan DIN API-server och dina nodpooler endast finns kvar i det privata nätverket.
Kontrollplanet eller API-servern finns i en AKS-hanterad Azure-resursgrupp och klustret eller nodpoolen finns i resursgruppen. Servern och klustret eller nodpoolen kan kommunicera med varandra via Azure Private Link-tjänsten i det virtuella API-servernätverket och en privat slutpunkt som exponeras i undernätet för ditt AKS-kluster.
När du etablerar ett privat AKS-kluster skapar AKS som standard ett privat FQDN med en privat DNS-zon och ytterligare ett offentligt FQDN med motsvarande A
post i azure public DNS. Agentnoderna fortsätter att använda A
posten i den privata DNS-zonen för att matcha den privata IP-adressen för den privata slutpunkten för kommunikation till API-servern.
Privata kluster är tillgängliga i offentliga regioner, Azure Government och Microsoft Azure som drivs av 21Vianet-regioner där AKS stöds.
- Azure CLI version 2.28.0 eller senare. Kör
az --version
för att hitta versionen och köraz upgrade
för att uppgradera versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - Tillägget
aks-preview
0.5.29 eller senare. - Om du använder Azure Resource Manager (ARM) eller Azure REST API måste AKS API-versionen vara 2021-05-01 eller senare.
- Om du vill använda en anpassad DNS-server lägger du till azures offentliga IP-adress 168.63.129.16 som den överordnade DNS-servern i den anpassade DNS-servern och ser till att lägga till den här offentliga IP-adressen som den första DNS-servern. Mer information om Azure IP-adressen finns i Vad är IP-adress 168.63.129.16?
- Klustrets DNS-zon bör vara det du vidarebefordrar till 168.63.129.16. Mer information om zonnamn finns i DNS-zonkonfigurationen för Azure-tjänster.
- Befintliga AKS-kluster som är aktiverade med API Server VNet-integrering kan ha aktiverat privat klusterläge. Mer information finns i Aktivera eller inaktivera privat klusterläge i ett befintligt kluster med API Server VNet-integrering.
Anteckning
Azure Linux-nodpoolen är nu allmänt tillgänglig (GA). Mer information om fördelarna och distributionsstegen finns i Introduktion till Azure Linux Container Host for AKS.
- IP-auktoriserade intervall kan inte tillämpas på den privata API-serverslutpunkten, de gäller bara för den offentliga API-servern.
- Azure Private Link-tjänstens begränsningar gäller för privata kluster.
- Det finns inget stöd för Azure DevOps Microsoft-värdbaserade agenter med privata kluster. Överväg att använda lokalt installerade agenter.
- Om du behöver göra så att Azure Container Registry fungerar med ett privat AKS-kluster konfigurerar du en privat länk för containerregistret i det virtuella klustrets virtuella nätverk eller konfigurerar peering mellan containerregistrets virtuella nätverk och det privata klustrets virtuella nätverk.
- Om du tar bort eller ändrar den privata slutpunkten i kundens undernät slutar klustret att fungera.
- Azure Private Link-tjänsten stöds endast på Standard Azure Load Balancer. Azure Load Balancer Basic stöds inte.
Skapa en resursgrupp med kommandot
az group create
. Du kan också använda en befintlig resursgrupp för ditt AKS-kluster.az group create \ --name <private-cluster-resource-group> \ --location <location>
Skapa ett privat kluster med standardnätverk med hjälp av
az aks create
kommandot med--enable-private-cluster
flaggan .az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --generate-ssh-keys
Om du vill hantera ett Kubernetes-kluster använder du Kubernetes-kommandoradsklienten kubectl. kubectl
är redan installerat om du använder Azure Cloud Shell. Om du vill installera kubectl
lokalt använder du az aks install-cli
kommandot .
Konfigurera
kubectl
för att ansluta till kubernetes-klustret med hjälp avaz aks get-credentials
kommandot . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
Kontrollera anslutningen till klustret med hjälp av
kubectl get
kommandot . Det här kommandot returnerar en lista över klusternoderna.kubectl get nodes
Om du vill konfigurera anpassade domäner som bara kan lösas internt kan du läsa Använda anpassade domäner.
Inaktivera ett offentligt fullständigt domännamn när du skapar ett privat AKS-kluster med kommandot
az aks create
med--disable-public-fqdn
flaggan .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
Inaktivera ett offentligt FQDN på ett befintligt AKS-kluster med kommandot
az aks update
med--disable-public-fqdn
flaggan .az aks update \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --disable-public-fqdn
Du kan konfigurera privata DNS-zoner med hjälp av följande parametrar:
system
: Det här är standardvärdet. Om argumentet--private-dns-zone
utelämnas skapar AKS en privat DNS-zon i nodresursgruppen.none
: Standardvärdet är offentlig DNS. AKS skapar ingen privat DNS-zon.CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
: Detta kräver att du skapar en privat DNS-zon i följande format för det globala Azure-molnet:privatelink.<region>.azmk8s.io
eller<subzone>.privatelink.<region>.azmk8s.io
. Du behöver resurs-ID för den privata DNS-zonen för framtida användning. Du behöver också en användartilldelad identitet eller tjänstens huvudnamn med rollerna Privat DNS Zondeltagare och Nätverksdeltagare. När du distribuerar med api-serverns VNet-integrering har en privat DNS-zon stöd för namngivningsformatetprivate.<region>.azmk8s.io
eller<subzone>.private.<region>.azmk8s.io
. Du kan inte ändra eller ta bort den här resursen när du har skapat klustret eftersom det kan orsaka prestandaproblem och klusteruppgraderingsfel.- Om den privata DNS-zonen finns i en annan prenumeration än AKS-klustret måste du registrera
Microsoft.ContainerServices
Azure-providern i båda prenumerationerna. - Du kan bara använda
fqdn-subdomain
medCUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
för att tillhandahålla underdomänfunktioner tillprivatelink.<region>.azmk8s.io
. - Om DITT AKS-kluster har konfigurerats med ett Huvudnamn för Active Directory-tjänsten stöder AKS inte användning av en systemtilldelad hanterad identitet med anpassad privat DNS-zon. Klustret måste använda användartilldelad hanterad identitetsautentisering.
- Om du anger en
<subzone>
finns det en gräns på 32 tecken för<subzone>
namnet.
- Om den privata DNS-zonen finns i en annan prenumeration än AKS-klustret måste du registrera
Anteckning
Du kan konfigurera CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
med hjälp av en ARM-mall eller Azure CLI. privateDNSZone
accepterar den privata DNZ-zonen resourceID
enligt följande exempel:
properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}
Skapa ett privat AKS-kluster med en privat DNS-zon med kommandot
az aks create
med följande flaggor: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
Skapa ett privat AKS-kluster med en anpassad privat DNS-zon eller underzon med kommandot
az aks create
med följande flaggor:# 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
Skapa ett privat AKS-kluster med en anpassad privat DNS-zon och underdomän med kommandot
az aks create
med följande flaggor:# 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
Du kan bara uppdatera från byo
eller system
till none
. Ingen annan kombination av uppdateringsvärden stöds. Innan du uppdaterar kontrollerar du att du ansluter till det privata klustret.
Varning
När du uppdaterar ett privat kluster från byo
eller system
till none
ändras agentnoderna till att använda ett offentligt FQDN. I ett AKS-kluster som använder Skalningsuppsättningar för virtuella Azure-datorer utförs en nodavbildningsuppgradering för att uppdatera noderna med det offentliga fullständiga domännamnet.
Uppdatera ett privat kluster från
byo
ellersystem
tillnone
med kommandotaz aks update
med följande flaggor:az aks update \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --private-dns-zone none
API-serverslutpunkten har ingen offentlig IP-adress. För att hantera API-servern måste du använda en virtuell dator som har åtkomst till AKS-klustrets virtuella Azure-nätverk (VNet). Det finns flera alternativ för att upprätta nätverksanslutning till det privata klustret:
- Skapa en virtuell dator i samma virtuella nätverk som AKS-klustret med kommandot
az vm create
med--vnet-name
flaggan . - Använd en virtuell dator i ett separat nätverk och konfigurera peering för virtuella nätverk.
- Använd en Express Route- eller VPN-anslutning .
- Använd AKS-funktionen
command invoke
. - Använd en privat slutpunktsanslutning .
- Använd en Cloud Shell-instans som distribuerats till ett undernät som är anslutet till API-servern för klustret.
Det enklaste alternativet är att skapa en virtuell dator i samma virtuella nätverk som AKS-klustret. Express Route och VPN lägger till kostnader och kräver ytterligare nätverkskomplexitet. Peering för virtuella nätverk kräver att du planerar ditt nätverks CIDR-intervall för att säkerställa att det inte finns några överlappande intervall.
Om du vill använda peering för virtuella nätverk måste du konfigurera en länk mellan det virtuella nätverket och den privata DNS-zonen.
- I Azure Portal navigerar du till din nodresursgrupp och väljer din privata DNS-zonresurs.
- I tjänstmenyn går du till DNS-hantering och väljer Lägg till virtuella nätverkslänkar>.
- På sidan Lägg till virtuell nätverkslänk konfigurerar du följande inställningar:
- Länknamn: Ange ett namn för länken för det virtuella nätverket.
- Virtuellt nätverk: Välj det virtuella nätverk som innehåller den virtuella datorn.
- Välj Skapa för att skapa länken för det virtuella nätverket.
- Gå till den resursgrupp som innehåller klustrets virtuella nätverk och välj din virtuella nätverksresurs.
- I tjänstmenyn går du till Inställningar och väljer Peerings Add (Peerings>Add).
- På sidan Lägg till peering konfigurerar du följande inställningar:
- Peeringlänknamn: Ange ett namn för peeringlänken.
- Virtuellt nätverk: Välj det virtuella nätverket för den virtuella datorn.
- Välj Lägg till för att skapa peering-länken.
Mer information finns i Peering för virtuella nätverk.
Hubb- och ekerarkitekturer används ofta för att distribuera nätverk i Azure. I många av dessa distributioner konfigureras DNS-inställningarna i de virtuella ekernätverken för att referera till en central DNS-vidarebefordrare för att möjliggöra lokal och Azure-baserad DNS-matchning.
När du distribuerar ett AKS-kluster till en sådan nätverksmiljö finns det några särskilda överväganden:
- När ett privat kluster etableras skapas som standard en privat slutpunkt (1) och en privat DNS-zon (2) i den klusterhanterade resursgruppen. Klustret använder en
A
post i den privata zonen för att matcha IP-adressen för den privata slutpunkten för kommunikation till API-servern. - Den privata DNS-zonen är endast länkad till det virtuella nätverk som klusternoderna är anslutna till (3). Det innebär att den privata slutpunkten bara kan matchas av värdar i det länkade virtuella nätverket. I scenarier där ingen anpassad DNS har konfigurerats på det virtuella nätverket (standard) fungerar detta utan problem som värdpunkt på 168.63.129.16 för DNS som kan matcha poster i den privata DNS-zonen på grund av länken.
- I scenarier där det virtuella nätverk som innehåller klustret har anpassade DNS-inställningar (4) misslyckas klusterdistributionen om inte den privata DNS-zonen är länkad till det virtuella nätverk som innehåller anpassade DNS-matchare (5). Den här länken kan skapas manuellt när den privata zonen har skapats under klusteretablering eller via automatisering när zonen skapas med hjälp av händelsebaserade distributionsmekanismer (till exempel Azure Event Grid och Azure Functions). För att undvika klusterfel under den inledande distributionen kan klustret distribueras med resurs-ID:t för den privata DNS-zonen. Detta fungerar bara med resurstyp
Microsoft.ContainerService/managedCluster
och API-version2022-07-01
. Det går inte att använda en äldre version med en ARM-mall eller en Bicep-resursdefinition.
Anteckning
Villkorsstyrd vidarebefordran stöder inte underdomäner.
Anteckning
Om du använder ta med din egen routningstabell med kubenet och tar med din egen DNS med privata kluster misslyckas klustrets skapande. Du måste associera RouteTable
i nodresursgruppen till undernätet när det inte gick att skapa klustret för att skapa det.
En privat slutpunkt kan konfigureras så att ett virtuellt nätverk inte behöver peer-kopplas för att kommunicera med det privata klustret. Skapa en ny privat slutpunkt i det virtuella nätverket som innehåller de förbrukande resurserna och skapa sedan en länk mellan ditt virtuella nätverk och en ny privat DNS-zon i samma nätverk.
Viktigt
Om det virtuella nätverket har konfigurerats med anpassade DNS-servrar måste privat DNS konfigureras på rätt sätt för miljön. Mer information finns i dokumentationen om namnmatchning för virtuella nätverk.
Skapa en privat slutpunktsresurs i ditt virtuella nätverk:
- På startsidan Azure Portal väljer du Skapa en resurs.
- Sök efter privat slutpunkt och välj Skapa>privat slutpunkt.
- Välj Skapa.
- På fliken Grundläggande konfigurerar du följande inställningar:
- Projektinformation
- Prenumeration: Välj den prenumeration där det privata klustret finns.
- Resursgrupp: Välj den resursgrupp som innehåller ditt virtuella nätverk.
- Instansinformation
- Namn: Ange ett namn för din privata slutpunkt, till exempel myPrivateEndpoint.
- Region: Välj samma region som ditt virtuella nätverk.
- Projektinformation
- Välj Nästa: Resurs och konfigurera följande inställningar:
- Anslutningsmetod: Välj Anslut till en Azure-resurs i min katalog.
- Prenumeration: Välj den prenumeration där det privata klustret finns.
- Resurstyp: Välj Microsoft.ContainerService/managedClusters.
- Resurs: Välj ditt privata kluster.
- Underresurs för mål: Välj hantering.
- Välj Nästa: Virtuellt nätverk och konfigurera följande inställningar:
- Nätverk
- Virtuellt nätverk: Välj ditt virtuella nätverk.
- Undernät: Välj ditt undernät.
- Nätverk
- Välj Nästa: DNS>Nästa: Taggar och (valfritt) konfigurera nyckelvärden efter behov.
- Välj Nästa: Granska + skapa>Skapa.
När resursen har skapats registrerar du den privata IP-adressen för den privata slutpunkten för framtida användning.
När du har skapat den privata slutpunkten skapar du en ny privat DNS-zon med samma namn som den privata DNS-zon som skapats av det privata klustret. Kom ihåg att skapa den här DNS-zonen i det virtuella nätverket som innehåller de förbrukande resurserna.
- I Azure Portal navigerar du till din nodresursgrupp och väljer din privata DNS-zonresurs.
- I tjänstmenyn går du till DNS-hantering och väljer Postuppsättningar och noterar följande:
- Namnet på den privata DNS-zonen, som följer mönstret
*.privatelink.<region>.azmk8s.io
. - Namnet på
A
posten (exklusive det privata DNS-namnet). - Time-to-live (TTL).
- Namnet på den privata DNS-zonen, som följer mönstret
- På startsidan Azure Portal väljer du Skapa en resurs.
- Sök efter Privat DNS zon och välj Skapa> Privat DNS zon.
- På fliken Grundläggande konfigurerar du följande inställningar:
- Projektinformation:
- Välj din prenumeration.
- Välj den resursgrupp där du skapade den privata slutpunkten.
- Instansinformation
- Namn: Ange namnet på DNS-zonen som hämtades från föregående steg.
- Regionen är som standard platsen för resursgruppen.
- Projektinformation:
- Välj Granska + skapa>Skapa.
När den privata DNS-zonen har skapats skapar du en A
post som associerar den privata slutpunkten med det privata klustret:
- Gå till den privata DNS-zon som du skapade i föregående steg.
- På tjänstmenyn går du till DNS-hantering och väljer Postuppsättningar>Lägg till.
- På sidan Lägg till postuppsättning konfigurerar du följande inställningar:
- Namn: Ange namnet som hämtats från
A
posten i det privata klustrets DNS-zon. - Typ: Välj A – Adresspost.
- TTL: Ange numret från
A
posten i det privata klustrets DNS-zon. - TTL-enhet: Ändra listrutevärdet så att det matchar det i
A
posten från det privata klustrets DNS-zon. - IP-adress: Ange IP-adressen för den privata slutpunkt som du skapade.
- Namn: Ange namnet som hämtats från
- Välj Lägg till för att skapa posten
A
.
Viktigt
När du skapar posten A
använder du bara namnet och inte det fullständigt kvalificerade domännamnet (FQDN).
När posten A
har skapats länkar du den privata DNS-zonen till det virtuella nätverk som ska komma åt det privata klustret:
- Gå till den privata DNS-zon som du skapade i föregående steg.
- I tjänstmenyn går du till DNS-hantering och väljer Lägg till virtuella nätverkslänkar>.
- På sidan Lägg till virtuell nätverkslänk konfigurerar du följande inställningar:
- Länknamn: Ange ett namn på länken för det virtuella nätverket.
- Prenumeration: Välj den prenumeration där det privata klustret finns.
- Virtuellt nätverk: Välj det virtuella nätverket för ditt privata kluster.
- Välj Skapa för att skapa länken.
Det kan ta några minuter innan åtgärden har slutförts. När länken för det virtuella nätverket har skapats kan du komma åt den från fliken Länkar till virtuellt nätverk som du använde i steg 2.
Varning
- Om det privata klustret stoppas och startas om tas det privata klustrets ursprungliga privata länktjänst bort och återskapas, vilket bryter anslutningen mellan den privata slutpunkten och det privata klustret. Lös problemet genom att ta bort och återskapa alla användarskapade privata slutpunkter som är länkade till det privata klustret. Om de återskapade privata slutpunkterna har nya IP-adresser måste du också uppdatera DNS-poster.
- Om du uppdaterar DNS-posterna i den privata DNS-zonen kontrollerar du att värden som du försöker ansluta från använder de uppdaterade DNS-posterna. Du kan kontrollera detta med hjälp av
nslookup
kommandot . Om du märker att uppdateringarna inte återspeglas i utdata kan du behöva tömma DNS-cachen på datorn och försöka igen.
Rekommenderade metoder finns i Metodtips för nätverksanslutning och säkerhet i AKS.
Feedback om Azure Kubernetes Service
Azure Kubernetes Service är ett öppen källkod projekt. Välj en länk för att ge feedback: