Dela via


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).

Översikt

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.

Region tillgänglighet

Privata kluster är tillgängliga 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 eller 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.
  • 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.

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 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 ett privat AKS-kluster

  1. 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>
    
  2. 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
    

Ansluta till det privata klustret

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 .

  1. Konfigurera kubectl för att ansluta till kubernetes-klustret med hjälp av az 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>
    
  2. Kontrollera anslutningen till klustret med hjälp av kubectl get kommandot . Det här kommandot returnerar en lista över klusternoderna.

    kubectl get nodes
    

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 fullständigt domännamn i ett nytt kluster

  • 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 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 \
        --name <private-cluster-name> \
        --resource-group <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. 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 med CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID för att tillhandahålla 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. 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.

Kommentar

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

  • 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 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 \
        --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 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 \
        --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
    

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

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 eller system till none med kommandot az aks update med följande flaggor:

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

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:

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

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 Azure Portal navigerar du till din nodresursgrupp och väljer din privata DNS-zonresurs.
  2. I tjänstmenyn går du till DNS-hantering och väljer Lägg till virtuella nätverkslänkar>.
  3. 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.
  4. Välj Skapa för att skapa länken för det virtuella nätverket.
  5. Gå till den resursgrupp som innehåller klustrets virtuella nätverk och välj din virtuella nätverksresurs.
  6. I tjänstmenyn går du till Inställningar och väljer Peerings Add (Peerings>Add).
  7. 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.
  8. Välj Lägg till för att skapa peering-länken.

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.

Nav och eker för privat kluster

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-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. 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

Skapa en privat slutpunktsresurs i ditt virtuella nätverk:

  1. På startsidan Azure Portal väljer du Skapa en resurs.
  2. Sök efter privat slutpunkt och välj Skapa>privat slutpunkt.
  3. Välj Skapa.
  4. 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.
  5. 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.
  6. 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.
  7. Välj Nästa: DNS>Nästa: Taggar och (valfritt) konfigurera nyckelvärden efter behov.
  8. 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 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.

  1. I Azure Portal navigerar du till din nodresursgrupp och väljer din privata DNS-zonresurs.
  2. 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).
  3. På startsidan Azure Portal väljer du Skapa en resurs.
  4. Sök efter Privat DNS zon och välj Skapa> Privat DNS zon.
  5. 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.
  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å tjänstmenyn går du till DNS-hantering och väljer Postuppsättningar>Lägg till.
  3. 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.
  4. 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:

  1. Gå till den privata DNS-zon som du skapade i föregående steg.
  2. I tjänstmenyn går du till DNS-hantering och väljer Lägg till virtuella nätverkslänkar>.
  3. 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.
  4. 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.

Nästa steg

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