Dela via


Skapa ett Azure Kubernetes Service-kluster med API Server VNet-integrering

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 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 installerat. Du kan kontrollera din version med hjälp av az --version kommandot .

Begränsningar

  • API Server VNet-integrering stöder inte krypterade virtuella nätverk.

Availability

  • API Server VNet-integrering är tillgänglig i alla ga offentliga molnregioner förutom eastus2 och qatarcentral. Vi arbetar kontinuerligt med att aktivera den här funktionen i dessa regioner och uppdaterar den här sidan när dessa regioner blir tillgängliga.

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 dem 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 privat VNet-anslutning). Du kan också växla mellan ett offentligt och privat läge utan att återdistribuera klustret.

Skapa en resursgrupp

  • Skapa en resursgrupp med kommandot az group create .

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

Distribuera ett offentligt kluster

  • Distribuera ett offentligt AKS-kluster med API Server VNet-integrering för hanterade virtuella nätverk genom att använda kommandot az aks create och flaggan --enable-api-server-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-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 --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

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 --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-api-server-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-api-server-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-kluster till API Server VNet-integrering

Varning

API Server VNet-integrering är en enkelriktad kapacitetskänslig funktion.

  • Manuell omstart krävs.
    När du har aktiverat API Server VNet-integrering med az aks update --enable-apiserver-vnet-integrationmå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.

  • Kapaciteten verifieras, men är inte reserverad.
    AKS verifierar regional kapacitet när du aktiverar funktionen i ett befintligt kluster, men den här verifieringen reserverar inte kapacitet. Om omstarten är fördröjd 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 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 --name <cluster-name> \
    --resource-group <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 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
    

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 Azure Private Link. Följande steg visar hur du skapar en Private Link-tjänst (PLS) i klustrets virtuella nätverk och ansluter till den från ett annat virtuellt nätverk eller en prenumeration med hjälp av en privat slutpunkt.

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-api-server-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-integrering.

NSG-säkerhetsregler

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 (belastningsutjämnare) 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 Subnet CIDR.

Nästa steg