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
Registrera funktionsflaggan
EnableAPIServerVnetIntegrationPreview
az feature register
med kommandot .az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
Det tar några minuter för statusen att visa Registrerad.
Kontrollera registreringsstatusen med hjälp av
az feature show
kommandot:az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
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 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 tillstånd utan att distribuera klustret igen.
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 med kommandot
az aks create
med--enable-api-server-vnet-integration
flaggan .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
- Skapa en resursgrupp med kommandot
az group create
.
az group create --location <location> --name <resource-group>
Skapa ett virtuellt nätverk
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
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
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
Skapa en hanterad identitet med kommandot
az identity create
.az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
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>
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 --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
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 --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 avaz aks get-credentials
kommandot .az aks get-credentials --resource-group <resource-group> --name <cluster-name>
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:
Mål | Källa | Protokoll | Port | 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 alla kommunikationer mellan Azure Load Balancer och API Server Subnet CIDR. |
Nästa steg
Rekommenderade metoder finns i Metodtips för nätverksanslutning och säkerhet i AKS.
Azure Kubernetes Service