Skapa ett privat AkS-kluster (Azure Kubernetes Service)

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ätverkstrafiken mellan API-servern och nodpoolerna stannar i det privata nätverket.

Kontrollplanet eller API-servern finns i en AKS-hanterad Azure-resursgrupp (Azure Kubernetes Service). 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 Azures offentliga 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.

Syftet med den här artikeln är att hjälpa 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).

Region tillgänglighet

Privata kluster är tillgängligt i offentliga regioner, Azure Government och Microsoft Azure som drivs av 21Vianet-regioner där AKS stöds.

Förutsättningar

  • Azure CLI version 2.28.0 och senare. Kör az --version för att hitta versionen och kör az 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.
  • Azure Private Link-tjänsten stöds endast på Standard Azure Load Balancer. Azure Load Balancer Basic stöds inte.
  • 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.

Kommentar

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.

Begränsningar

  • IP-auktoriserade intervall kan inte tillämpas på den privata API-serverslutpunkten, de gäller endast 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 det virtuella containerregistrets virtuella nätverk och det privata klustrets virtuella nätverk.
  • Det finns inget stöd för att konvertera befintliga AKS-kluster till privata kluster.
  • Om du tar bort eller ändrar den privata slutpunkten i kundens undernät slutar klustret att fungera.

Skapa ett privat AKS-kluster

Skapa en resursgrupp

Skapa en resursgrupp med kommandot az group create . Du kan också använda en befintlig resursgrupp för ditt AKS-kluster.

az group create -l eastus -n myResourceGroup

Standard för grundläggande nätverk

Skapa ett privat kluster med standardnätverk med hjälp av az aks create kommandot med --enable-private-cluster flaggan .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster  

Avancerat nätverk

Skapa ett privat kluster med avancerat nätverk med hjälp av az aks create kommandot med följande flaggor:

az aks create \
    --resource-group <private-cluster-resource-group> \
    --name <private-cluster-name> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 

Använda anpassade domäner

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 FQDN

Inaktivera ett offentligt FQDN på ett nytt AKS-kluster

Inaktivera ett offentligt FQDN när du skapar ett privat AKS-kluster med hjälp av --disable-public-fqdn flaggan.

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn

Inaktivera ett offentligt FQDN i ett befintligt kluster

Inaktivera ett offentligt FQDN på ett befintligt AKS-kluster med kommandot az aks update med --disable-public-fqdn flaggan .

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --disable-public-fqdn

Konfigurera en privat DNS-zon

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 namngivningsformatet private.<region>.azmk8s.io eller <subzone>.private.<region>.azmk8s.io.
    • Om den privata DNS-zonen finns i en annan prenumeration än AKS-klustret måste du registrera Azure-providern Microsoft.ContainerServices i båda prenumerationerna.
    • "fqdn-subdomain" kan endast användas med "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID" för att ge underdomänfunktioner till privatelink.<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.
    • Om du anger en <subzone> gräns på 32 tecken för <subzone> namnet.

Kommentar

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID kan konfigureras med hjälp av en ARM-mall utöver Azure CLI. privateDNSZone accepterar det privata DNZ-zonresurs-ID som visas i följande exempel:

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

Viktigt!

Det går inte att ändra CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID när klustret har skapats och det kan inte tas bort. Annars har klustret problem med att utföra uppgraderingsåtgärder.

Skapa ett privat AKS-kluster med en privat DNS-zon

Skapa ett privat AKS-kluster med en privat DNS-zon med kommandot az aks create med följande flaggor:

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone [system|none]

Skapa ett privat AKS-kluster med en anpassad privat DNS-zon eller privat DNS-underzon

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 -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone or custom private dns subzone resourceID>

Skapa ett privat AKS-kluster med en anpassad privat DNS-zon och anpassad underdomän

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 -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain>

Uppdatera ett privat kluster från en privat DNS-zon till offentlig

Kommentar

Den här funktionen kräver tilläggsversionen aks-preview>= 0.5.97

Uppdatera ett privat kluster från byo eller system till none med kommandot az aks update med följande flaggor:

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --private-dns-zone none

Kommentar

Du kan bara uppdatera från byo eller system till none. Ingen annan kombination av uppdateringsvärden stöds.

Alternativ för att ansluta till det privata klustret

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:

Kommentar

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.

Virtuell nätverkspeering

Peering för virtuella nätverk är ett sätt att komma åt ditt privata kluster. 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.

  1. I en webbläsare går du till Azure-portalen.
  2. Gå till nodresursgruppen från Azure-portalen.
  3. Välj den privata DNS-zonen.
  4. I den vänstra rutan väljer du Virtuellt nätverk.
  5. Skapa en ny länk för att lägga till det virtuella nätverket för den virtuella datorn i den privata DNS-zonen. Det tar några minuter innan DNS-zonlänken blir tillgänglig.
  6. I Azure-portalen går du till resursgruppen som innehåller klustrets virtuella nätverk.
  7. I den högra rutan väljer du det virtuella nätverket. Namnet på det virtuella nätverket är i formatet aks-vnet-*.
  8. I den vänstra rutan väljer du Peerings.
  9. Välj Lägg till, lägg till det virtuella nätverket för den virtuella datorn och skapa sedan peering. Mer information finns i Peering för virtuella nätverk.

Hubb och eker med anpassad DNS

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:

Private cluster hub and spoke

  • 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-version 2022-07-01. Det går inte att använda en äldre version med en ARM-mall eller en Bicep-resursdefinition.

Kommentar

Villkorsstyrd vidarebefordran stöder inte underdomäner.

Kommentar

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.

Använda en privat slutpunktsanslutning

En privat slutpunkt kan konfigureras så att ett virtuellt nätverk inte behöver peer-kopplas för att kommunicera med det privata klustret. Om du vill använda en privat slutpunkt skapar du en ny privat slutpunkt i det virtuella nätverket och skapar sedan en länk mellan ditt virtuella nätverk och en ny privat DNS-zon.

Viktigt!

Om det virtuella nätverket har konfigurerats med anpassade DNS-servrar måste privat DNS konfigureras på lämpligt sätt för miljön. Mer information finns i dokumentationen om namnmatchning för virtuella nätverk.

Skapa en privat slutpunktsresurs

Skapa en privat slutpunktsresurs i ditt virtuella nätverk:

  1. I en webbläsare går du till Azure-portalen.
  2. Från Azure-portal menyn, välj skapa en resurs.
  3. Sök efter privat slutpunkt och välj Skapa > privat slutpunkt.
  4. Välj Skapa.
  5. Konfigurera följande alternativ på fliken Grundläggande :
    • Projektinformation:
      • Välj en Azure-prenumeration.
      • Välj den Azure-resursgrupp där det virtuella nätverket finns.
    • Instansinformation:
      • Ange ett namn för den privata slutpunkten, till exempel myPrivateEndpoint.
      • Välj en region för den privata slutpunkten.

Viktigt!

Kontrollera att den valda regionen är samma som det virtuella nätverk där du vill ansluta, annars visas inte det virtuella nätverket på fliken Konfiguration .

  1. Välj Nästa: Resurs och konfigurera följande alternativ:
    • Anslut ionsmetod: 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.
  2. Välj Nästa: Virtuellt nätverk och konfigurera följande alternativ:
    • Nätverk:
      • Virtuellt nätverk: Välj ditt virtuella nätverk.
      • Undernät: Välj ditt undernät.
  3. Välj Nästa: DNS>Nästa: Taggar och (valfritt) konfigurera nyckelvärden efter behov.
  4. 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.

Skapa en privat DNS-zon

När den privata slutpunkten har skapats skapar du en ny privat DNS-zon med samma namn som den privata DNS-zon som skapats av det privata klustret:

  1. Gå till nodresursgruppen i Azure-portalen.
  2. Välj den privata DNS-zonen och posten:
    • 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).
  3. I Azure-portalen väljer du Skapa en resurs.
  4. Sök efter Privat DNS zon och välj Skapa > Privat DNS zon.
  5. Konfigurera följande alternativ på fliken Grundläggande :
    • Projektinformation:
      • Välj din prenumeration.
      • Välj den resursgrupp där du skapade den privata slutpunkten.
    • Instansinformation:
      • Ange namnetDNS-zonen som hämtades från föregående steg.
      • Regionen är som standard platsen för resursgruppen.
  6. Välj Granska + skapa>Skapa.

Skapa en A post

När den privata DNS-zonen har skapats skapar du en A post som associerar den privata slutpunkten med det privata klustret:

  1. Gå till den privata DNS-zon som du skapade i föregående steg.
  2. På sidan Översikt väljer du Postuppsättning.
  3. På fliken Lägg till postuppsättning konfigurerar du följande alternativ:
    • 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.

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:

  1. Gå till den privata DNS-zon som du skapade i föregående steg.
  2. I den vänstra rutan väljer du Länkar till virtuellt nätverk.
  3. Välj Lägg till och konfigurera följande alternativ:
    • 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.
  4. Skapa länken genom att välja OK.

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.

Nästa steg

Rekommenderade metoder finns i Metodtips för nätverksanslutning och säkerhet i AKS.