Skapa ett Azure Kubernetes Service-kluster med API Server VNet-integrering (förhandsversion)

Ett AkS-kluster (Azure Kubernetes Service) 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.

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 nod till API-servertrafik behålls i privata nätverk och ingen tunnel krävs för API-server till nodanslutning. 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.

Region tillgänglighet

API Server VNet-integrering är tillgänglig i alla globala Azure-regioner.

Förutsättningar

  • Azure CLI med aks-preview-tillägget 0.5.97 eller senare.
  • Om du använder ARM eller REST API måste AKS API-versionen vara 2022-04-02-preview eller senare.

Installera Azure CLI-tillägget aks-preview

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och anmäl dig. Förhandsversioner tillhandahålls "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner omfattas delvis av kundsupport på bästa sätt. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

  • Installera aks-preview-tillägget med kommandot az extension add .

    az extension add --name aks-preview
    
  • Uppdatera till den senaste versionen av tillägget som släpptes med kommandot az extension update .

    az extension update --name aks-preview
    

Registrera funktionsflaggan EnableAPIServerVnetIntegrationPreview

  1. Registrera funktionsflaggan EnableAPIServerVnetIntegrationPreviewaz feature register med kommandot .

    az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    

    Det tar några minuter för statusen att visa Registrerad.

  2. Kontrollera registreringsstatusen med hjälp av az feature show kommandot:

    az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    
  3. När statusen visar Registrerad uppdaterar du registreringen av resursprovidern Microsoft.ContainerService med hjälp av az provider register kommandot .

    az provider register --namespace Microsoft.ContainerService
    

Skapa ett AKS-kluster med API Server VNet-integrering med hanterat VNet

Du kan konfigurera dina AKS-kluster med API Server VNet-integrering i hanterat VNet eller bring-your-own VNet-läge. Du kan skapa som offentliga kluster (med API-serveråtkomst tillgänglig via en offentlig IP-adress) eller privata kluster (där API-servern endast är tillgänglig via en privat VNet-anslutning). Du kan också växla mellan ett offentligt och privat tillstånd utan att distribuera klustret igen.

Skapa en resursgrupp

  • Skapa en resursgrupp med kommandot az group create .

    az group create -l westus2 -n <resource-group>
    

Distribuera ett offentligt kluster

  • Distribuera ett offentligt AKS-kluster med API Server VNet-integrering för hanterade virtuella nätverk med kommandot az aks create med --enable-api-server-vnet-integration flaggan .

    az aks create -n <cluster-name> \
        -g <resource-group> \
        -l <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration
    

Distribuera ett privat kluster

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

    az aks create -n <cluster-name> \
        -g <resource-group> \
        -l <location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration
    

Skapa ett privat AKS-kluster med API Server VNet-integrering med bring-your-own VNet

När du använder bring-your-own VNet måste du skapa och delegera ett API-serverundernät till Microsoft.ContainerService/managedClusters, vilket ger AKS-tjänsten behörighet att mata in API-serverpoddarna och den interna lastbalanseraren i 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 9 IP-adresser i undernätets adressutrymme. Slut på IP-adresser kan förhindra API-serverskalning och orsaka ett API-serverstopp.

Skapa en resursgrupp

az group create -l <location> -n <resource-group>

Skapa ett virtuellt nätverk

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

    az network vnet create -n <vnet-name> \
    -g <resource-group> \
    -l <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 -g <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 -g <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 -g <resource-group> -n <managed-identity-name> -l <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 ett offentligt AKS-kluster med API Server VNet-integrering med az aks create kommandot med --enable-api-server-vnet-integration flaggan .

    az aks create -n <cluster-name> \
    -g <resource-group> \
    -l <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>
    

Distribuera ett privat kluster

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

    az aks create -n <cluster-name> \
    -g <resource-group> \
    -l <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>
    

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

Du kan konvertera befintliga offentliga/privata AKS-kluster till API Server VNet-integreringskluster genom att ange ett API-serverundernät som uppfyller kraven som angavs tidigare. Dessa krav omfattar: i samma virtuella nätverk som klusternoderna, behörigheter som beviljats för AKS-klusteridentiteten, som inte används av andra resurser som privat slutpunkt och storleken på minst /28. Att konvertera klustret är en enkelriktad migrering. Kluster kan inte ha API Server VNet-integrering inaktiverad när den har aktiverats.

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 API-serverns IP-adress har konfigurerats i brandväggar eller regler för nätverkssäkerhetsgrupp kan dessa regler behöva uppdateras.

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

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

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 är för närvarande i 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 -n <cluster-name> \
    -g <resource-group> \
    --enable-private-cluster
    

Inaktivera privat klusterläge

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

    az aks update -n <cluster-name> \
    -g <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 -g <resource-group> -n <cluster-name>
    

Nästa steg

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