Använda API Server VNet-integrering i Azure Kubernetes Service (AKS)

Gäller för: ✔️ AKS Automatic ✔️ AKS Standard

Ett Azure Kubernetes Service (AKS) kluster som konfigurerats med API Server VNet-integrering projicerar API-serverslutpunkten direkt till ett delegerat undernät i det virtuella nätverk där AKS distribueras. Api Server VNet-integrering möjliggör nätverkskommunikation mellan API-servern och klusternoderna utan att en privat länk eller tunnel krävs. API-servern är tillgänglig bakom en intern lastbalanserares VIP i det delegerade undernätet, som noderna är konfigurerade att använda. Genom att använda API Server VNet-integrering kan du se till att nätverkstrafiken mellan DIN API-server och dina nodpooler endast finns kvar i det privata nätverket.

För de flesta produktionsarbetsbelastningar är AKS Automatic den rekommenderade STANDARD-AKS-upplevelsen. AKS Automatic är produktionsklart som standard och innehåller API Server VNet-integrering som en förkonfigurerad klustersäkerhetsfunktion. I AKS Standard är API Server VNet-integrering valfritt och du aktiverar det när klustret skapas eller genom att uppdatera ett befintligt kluster.

Mer information om AKS Automatic finns i Vad är Azure Kubernetes Service (AKS) Automatisk?

API Server VNet-integrering i AKS Automatic och AKS Standard

API Server VNet-integrering är tillgänglig i båda AKS-klusterlägena, men konfigurationen skiljer sig åt:

  • AKS Automatisk: API Server VNet-integrering är förkonfigurerad.
  • AKS Standard: API Server VNet-integrering är valfritt och måste aktiveras explicit.

I de flesta produktionsscenarier börjar du med AKS Automatic för att använda produktionsklara standardvärden och minska driftkostnaderna.

API-serveranslutning

Kontrollplanet eller API-servern finns i en AKS-hanterad Azure-prenumeration. Klustret eller nodpoolen finns i din Azure-prenumeration. Servern och de virtuella datorer som utgör klusternoderna kan kommunicera med varandra via API-serverns VIP- och podd-IP-adresser som projiceras i det delegerade undernätet.

API Server VNet-integrering stöds för offentliga eller privata kluster. Du kan lägga till eller ta bort offentlig åtkomst efter klusteretablering. Till skillnad från icke-VNet-integrerade kluster kommunicerar agentnoderna alltid direkt med den privata IP-adressen för IP-adressen för API-serverns interna lastbalanserare (ILB) utan att använda DNS. All trafik från nod till API-server sker på privata nätverk och ingen tunnel behövs för anslutning från API-server till nod. Out-of-cluster-klienter som behöver kommunicera med API-servern kan göra det normalt om offentlig nätverksåtkomst är aktiverad. Om åtkomsten till det offentliga nätverket är inaktiverad bör du följa samma privata DNS-konfigurationsmetod som privata standardkluster.

Förutsättningar

  • Du måste ha Azure CLI version 2.73.0 eller senare installerad. Du kan kontrollera din version med hjälp av az --version kommandot .
  • Om du tar med ditt eget virtuella nätverk granskar du kraven för det virtuella nätverket.

Begränsningar

Följande begränsningar gäller för API Server VNet-integrering, oavsett om det är förkonfigurerat på AKS Automatic eller uttryckligen aktiverat på AKS Standard:

  • API Server VNet-integrering har inte stöd för kryptering av virtuellt nätverk. Kluster som distribueras på v3 eller tidigare AKS-nod-SKU:er (som inte stöder VNet-kryptering) tillåts, men trafiken krypteras inte. Kluster som distribueras på v4 eller senare AKS-nod-SKU:er (som stöder VNet-kryptering) blockeras eftersom krypterade virtuella nätverk inte är kompatibla med API Server VNet-integrering. Mer information finns i AKS-stödda VM-SKU:er.
  • Om du vill använda nätverk med dubbla staplar behöver klustret Kubernetes version 1.26.3 eller senare, nätverks-plugin-program azure och nätverks-plugin-läge overlay. Mer information finns i Azure CNI-kluster med dubbla stacknätverk.

Availability

  • API Server VNet-integrering är tillgänglig i alla de offentliga GA-molnregionerna utom QatarCentral.

Skapa ett kluster med API Server VNet-integrering

I AKS Automatic är API Server VNet-integrering förkonfigurerad. Ingen explicit --enable-apiserver-vnet-integration flagga krävs.

Skapa ett AKS-automatiskt kluster genom att följa snabbstarten:

AKS Standard: hanterat virtuellt nätverk

Du kan konfigurera AKS Standard-kluster med API Server VNet-integrering i hanterat VNet-läge som offentliga eller privata kluster.

Kommentar

API Server VNet-integrering är inte tillgängligt i qatarcentral.

Skapa en resursgrupp

Skapa en resursgrupp med kommandot az group create .

az group create --location <location> --name <resource-group>

Distribuera ett offentligt kluster

Distribuera ett offentligt AKS Standard-kluster med API-server-VNet-integrering för ett hanterat VNet med kommandot az aks create och flaggan --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

Distribuera ett privat kluster

Distribuera ett privat AKS Standard-kluster med API Server VNet-integrering för hanterat VNet med kommandot az aks create med flaggorna --enable-apiserver-vnet-integration och --enable-private-cluster .

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

AKS Standard: ta med eget VNet

När du använder bring-your-own VNet måste du skapa och delegera ett API-serverundernät till Microsoft.ContainerService/managedClusters. Den här delegeringen ger AKS-tjänsten behörighet att placera API-serverpoddarna och den interna lastbalanseraren i det undernätet. Du kan inte använda undernätet för andra arbetsbelastningar, men du kan använda det för flera AKS-kluster som finns i samma virtuella nätverk. Den minsta api-serverundernätsstorlek som stöds är /28.

Klusteridentiteten behöver behörigheter till både API-serverundernätet och nodundernätet. Brist på behörigheter i API-serverundernätet kan orsaka ett etableringsfel.

Varning

Ett AKS-kluster reserverar minst nio IP-adresser i undernätets adressutrymme. Slut på IP-adresser kan förhindra API-serverskalning och orsaka ett API-serverstopp.

Kommentar

API Server VNet-integrering är inte tillgängligt i qatarcentral.

Skapa en resursgrupp

Skapa en resursgrupp med kommandot az group create .

az group create --location <location> --name <resource-group>

Skapa ett virtuellt nätverk

  1. Skapa ett virtuellt nätverk med kommandot az network vnet create .

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Skapa ett API-serverundernät med kommandot az network vnet subnet create .

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Skapa ett klusterundernät med kommandot az network vnet subnet create .

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Skapa en hanterad identitet och ge den behörighet i det virtuella nätverket

  1. Skapa en hanterad identitet med kommandot az identity create .

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Tilldela rollen Nätverksdeltagare till API-serverundernätet med hjälp av az role assignment create kommandot .

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Tilldela rollen Nätverksdeltagare till klustrets undernät med hjälp av az role assignment create kommandot .

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Distribuera ett offentligt kluster

Distribuera en publik AKS-kluster med API-server VNet-integrering med kommandot az aks create och flaggan --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Distribuera ett privat kluster

Distribuera ett privat AKS-kluster med API Server VNet-integrering med az aks create kommandot med flaggorna --enable-apiserver-vnet-integration och --enable-private-cluster .

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Konvertera ett befintligt AKS Standard-kluster till API Server VNet-integrering

Varning

API Server VNet-integrering är en enkelriktad kapacitetskänslig funktion. När du aktiverar API Server VNet-integrering i ett befintligt AKS Standard-kluster gäller följande begränsningar:

  • Manuell omstart krävs: När du har aktiverat API Server VNet-integrering med , az aks update --enable-apiserver-vnet-integrationpå grund av kontrollplanets resursövergång, måste du omedelbart starta om klustret för att ändringen ska börja gälla. Den här omstarten är inte automatiserad. Om omstarten fördröjs ökar risken för att kapaciteten blir otillgänglig, vilket kan hindra API-servern från att starta. Omstarten av klustret säkerställer också att alla noder på ett tillförlitligt sätt återansluter till den nya API-serverslutpunkten.
  • Kapaciteten verifieras, men är inte reserverad: AKS validerar regional kapacitet när du aktiverar funktionen i ett befintligt kluster, men den här verifieringen reserverar inte kapacitet. Om du fördröjer omstarten och kapaciteten blir otillgänglig under tiden kan klustret misslyckas med att starta efter ett stopp eller en omstart. Kluster som aktiverade den här funktionen före allmän tillgänglighet (GA), eller som ännu inte har startats om sedan aktiveringen, genomgår inte kapacitetsvalidering.
  • Funktionen kan inte inaktiveras: När funktionen är aktiverad är den permanent. Du kan inte inaktivera API Server VNet-integrering.

Den här uppgraderingen utför en versionsuppgradering av nod-avbildning på alla nodpooler och startar om alla arbetsbelastningar medan de genomgår en löpande avbildningsuppgradering.

Varning

Konvertering av ett kluster till API Server VNet-integrering resulterar i en ändring av API Server IP-adressen, även om värdnamnet förblir detsamma. Om du konfigurerar IP-adressen för API-servern i brandväggar eller regler för nätverkssäkerhetsgrupp kan du behöva uppdatera dessa regler.

  1. Uppdatera klustret till API Server VNet-integrering med hjälp av az aks update kommandot med --enable-apiserver-vnet-integration flaggan .

    az aks update --name <cluster-name> \
        --resource-group <resource-group> \
        --enable-apiserver-vnet-integration \
        --apiserver-subnet-id <apiserver-subnet-resource-id>
    
  2. Starta om klustret med hjälp av kommandona [az aks stop][az-aks-stop] och [az aks start][az-aks-start].

    az aks stop --name <cluster-name> --resource-group <resource-group>
    az aks start --name <cluster-name> --resource-group <resource-group>
    

Aktivera eller inaktivera privat klusterläge i ett befintligt kluster med API Server VNet-integrering

AKS-kluster som konfigurerats med API Server VNet-integrering kan ha offentlig nätverksåtkomst/privat klusterläge aktiverat eller inaktiverat utan att distribuera klustret igen. API-serverns värdnamn ändras inte, men offentliga DNS-poster ändras eller tas bort om det behövs.

Kommentar

--disable-private-cluster finns för tillfället som förhandsversion. Mer information finns i Referens- och supportnivåer.

Aktivera privat klusterläge

Aktivera privat klusterläge med kommandot az aks update med --enable-private-cluster flaggan .

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>

Inaktivera privat klusterläge

Inaktivera privat klusterläge med kommandot az aks update med --disable-private-cluster flaggan .

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster

Ansluta till klustret med kubectl

Konfigurera kubectl för att ansluta till klustret med hjälp av az aks get-credentials kommandot .

az aks get-credentials --resource-group <resource-group> --name <cluster-name>

Du kan exponera API-serverslutpunkten för ett privat kluster med API Server VNet-integrering med hjälp av Azure Private Link. Följande steg visar hur du skapar en Private Link-tjänst (PLS) i klustrets virtuella nätverk och ansluter till det från ett annat virtuellt nätverk eller en prenumeration med hjälp av en privat slutpunkt.

Kommentar

API Server VNet-integrering är inte tillgängligt i qatarcentral.

Skapa ett privat kluster för API Server VNet-integrering

Skapa ett privat AKS-kluster med API Server VNet-integrering med az aks create kommandot med flaggorna --enable-apiserver-vnet-integration och --enable-private-cluster .

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration

Mer information om hur du konfigurerar Private Link med API Server VNet-integrering finns i Private Link med API Server VNet Integration.

Säkerhetsregler för nätverkssäkerhetsgrupp (NSG)

All trafik i det virtuella nätverket tillåts som standard. Men om du har lagt till NSG-regler för att begränsa trafiken mellan olika undernät kontrollerar du att NSG-säkerhetsreglerna tillåter följande typer av kommunikation:

Resmål Källa Protokoll Hamn Använd
APIServer-undernät CIDR Klusterundernät TCP 443 och 4443 Krävs för att aktivera kommunikation mellan noder och API-servern.
APIServer-undernät CIDR Azure Load Balancer TCP 9988 Krävs för att aktivera kommunikation mellan Azure Load Balancer och API-servern. Du kan också aktivera all kommunikation mellan Azure Load Balancer och API Server-undernätets CIDR.