Delen via


Een Azure Kubernetes Service-cluster maken met API Server VNet-integratie

Een AKS-cluster (Azure Kubernetes Service) dat is geconfigureerd met API Server VNet Integration projecteert het API-servereindpunt rechtstreeks in een gedelegeerd subnet in het VNet waar AKS wordt geïmplementeerd. VNet-integratie van API Server maakt netwerkcommunicatie mogelijk tussen de API-server en de clusterknooppunten zonder een privékoppeling of tunnel. De API-server is beschikbaar achter een interne load balancer VIP in het gedelegeerde subnet, dat de knooppunten zijn geconfigureerd voor gebruik. Door VNet-integratie van API Server te gebruiken, kunt u ervoor zorgen dat netwerkverkeer tussen uw API-server en uw knooppuntgroepen alleen in het privénetwerk blijft.

API-serverconnectiviteit

Het controlevlak of de API-server bevindt zich in een door AKS beheerde Azure-abonnement. Uw cluster of knooppuntgroep bevindt zich in uw Azure-abonnement. De server en de virtuele machines waaruit de clusterknooppunten bestaan, kunnen met elkaar communiceren via de VIP- en pod-IP-adressen van de API-server die in het gedelegeerde subnet worden geprojecteerd.

VNet-integratie van API Server wordt ondersteund voor openbare of privéclusters. U kunt openbare toegang toevoegen of verwijderen na de provisioning van het cluster. In tegenstelling tot niet-VNet-geïntegreerde clusters communiceren de agentknooppunten altijd rechtstreeks met het privé-IP-adres van de interne load balancer (ILB) van de API-server zonder gebruik te maken van DNS. Al het verkeer van knooppunten naar API-server wordt bewaard op privénetwerken en er is geen tunnel vereist voor api-server-naar-knooppuntconnectiviteit. Out-of-cluster-clients die moeten communiceren met de API-server kunnen dit normaal doen als openbare netwerktoegang is ingeschakeld. Als openbare netwerktoegang is uitgeschakeld, moet u dezelfde privé-DNS-instellingsmethode volgen als standaard privéclusters.

Vereiste voorwaarden

  • U moet Azure CLI versie 2.73.0 of hoger hebben geïnstalleerd. U kunt uw versie controleren met behulp van de az --version opdracht.

Beperkingen

  • VNet-integratie van API Server biedt geen ondersteuning voor Virtual Network Encryption. Clusters die zijn geïmplementeerd op v3- of eerdere AKS-knooppunt-SKU's (die VNet-versleuteling niet ondersteunen), zijn toegestaan, maar verkeer wordt niet versleuteld. Clusters die zijn geïmplementeerd op v4- of hoger AKS-knooppunt-SKU's (die VNet-versleuteling ondersteunen) worden geblokkeerd omdat versleutelde VNet's niet compatibel zijn met VNet-integratie van API Server. Zie AKS ondersteunde VM-SKU's voor meer informatie.

Availability

  • VNet-integratie van API Server is beschikbaar in alle openbare GA-cloudregio's, met uitzondering van eastus2 en qatarcentral. We werken voortdurend aan het inschakelen van deze functie in deze regio's en werken deze pagina bij wanneer deze regio's beschikbaar komen.

Een AKS-cluster maken met API Server VNet-integratie met behulp van een beheerd VNet

U kunt uw AKS-clusters configureren met API Server VNet-integratie in een beheerd VNet of een breng-je-eigen VNet-modus. U kunt ze maken als openbare clusters (met API-servertoegang die beschikbaar is via een openbaar IP-adres) of privéclusters (waarbij de API-server alleen toegankelijk is via privé-VNet-connectiviteit). U kunt ook schakelen tussen een openbare en persoonlijke status zonder het cluster opnieuw te implementeren.

Een brongroep maken

  • Maak een resourcegroep met behulp van de az group create opdracht.

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

Een openbaar cluster implementeren

  • Implementeer een openbaar AKS-cluster met API Server VNet-integratie voor beheerd VNet met behulp van de az aks create opdracht met de --enable-api-server-vnet-integration vlag.

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

Een privécluster implementeren

  • Implementeer een privé-AKS-cluster met API Server VNet-integratie voor beheerd VNet met behulp van de az aks create opdracht met de --enable-api-server-vnet-integration en --enable-private-cluster vlaggen.

    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
    

Een privé-AKS-cluster maken met API Server VNet-integratie met behulp van bring-your-own VNet

Wanneer u uw eigen VNet gebruikt, moet u een subnet voor de API-server creëren en delegeren aan Microsoft.ContainerService/managedClusters, waarmee de AKS-service toestemming krijgt om de API-serverpods en interne load balancer in dat subnet te injecteren. U kunt het subnet niet gebruiken voor andere workloads, maar u kunt het gebruiken voor meerdere AKS-clusters die zich in hetzelfde virtuele netwerk bevinden. De minimaal ondersteunde subnetgrootte van de API-server is een /28.

De clusteridentiteit heeft machtigingen nodig voor zowel het subnet van de API-server als het knooppuntsubnet. Gebrek aan machtigingen in het subnet van de API-server kan leiden tot een inrichtingsfout.

Waarschuwing

Een AKS-cluster reserveert ten minste 9 IP-adressen in de adresruimte van het subnet. Als er onvoldoende IP-adressen zijn, kan de schaalbaarheid van de API-server worden belemmerd en kan dit leiden tot een uitval van de API-server.

Een brongroep maken

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

Een virtueel netwerk maken

  1. Maak een virtueel netwerk met behulp van de az network vnet create opdracht.

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Maak een subnet van de API-server met behulp van het az network vnet subnet create commando.

    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. Maak een clustersubnet met behulp van de az network vnet subnet create opdracht.

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

Een beheerde identiteit maken en deze machtigingen geven voor het virtuele netwerk

  1. Maak een beheerde identiteit met behulp van de az identity create opdracht.

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Wijs de rol Inzender voor het netwerk toe aan het subnet van de API-server met behulp van de az role assignment create opdracht.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Wijs de rol Inzender voor het netwerk toe aan het clustersubnet met behulp van de az role assignment create opdracht.

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

Een openbaar cluster implementeren

  • Implementeer een openbaar AKS-cluster met API Server VNet-integratie met behulp van de az aks create opdracht met de --enable-api-server-vnet-integration vlag.

    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
    

Een privécluster implementeren

  • Implementeer een privé-AKS-cluster met API Server VNet-integratie met behulp van de az aks create opdracht met de --enable-api-server-vnet-integration en --enable-private-cluster vlaggen.

    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
    

Een bestaand AKS-cluster converteren naar VNet-integratie van API Server

Waarschuwing

VNet-integratie van API Server is een eenzijdige, capaciteitsgevoelige functie.

  • Handmatig opnieuw opstarten vereist.
    Nadat u de VNet-integratie van API Server hebt ingeschakeld met behulp van az aks update --enable-apiserver-vnet-integration, moet u vanwege de overgang van de besturingsvlakresource het cluster onmiddellijk opnieuw starten om de wijziging van kracht te laten worden. Deze herstart is niet geautomatiseerd. Het uitstellen van het opnieuw opstarten vergroot het risico dat de capaciteit niet beschikbaar is, wat kan voorkomen dat de API-server wordt gestart. Het opnieuw opstarten van het cluster zorgt er ook voor dat alle knooppunten betrouwbaar opnieuw verbinding maken met het nieuwe API-servereindpunt.

  • Capaciteit wordt gevalideerd, maar niet gereserveerd.
    AKS valideert regionale capaciteit wanneer u de functie inschakelt op een bestaand cluster, maar met deze validatie wordt geen capaciteit gereserveerd. Als het opnieuw opstarten is vertraagd en de capaciteit ondertussen niet meer beschikbaar is, kan het cluster niet meer worden gestart na een stop of opnieuw opstarten. Clusters die deze functie vóór algemene beschikbaarheid (GA) hebben ingeschakeld of die nog niet zijn opgestart sinds het inschakelen, ondergaan geen capaciteitsvalidatie.

  • De functie kan niet worden uitgeschakeld.
    Zodra de functie is ingeschakeld, is deze permanent. U kunt VNet-integratie van API Server niet uitschakelen.

Met deze upgrade wordt een versie-upgrade van de knooppuntafbeeldingen uitgevoerd voor alle knooppoolen, en worden alle workloads opnieuw gestart terwijl ze een rolling afbeeldingsupgrade ondergaan.

Waarschuwing

Het converteren van een cluster naar API Server VNet-integratie resulteert in een wijziging van het IP-adres van de API-server, hoewel de hostnaam hetzelfde blijft. Als het IP-adres van de API-server is geconfigureerd in firewalls of regels voor netwerkbeveiligingsgroepen, moeten deze regels mogelijk worden bijgewerkt.

  • Werk uw cluster bij naar API Server VNet-integratie met behulp van de az aks update opdracht met de --enable-apiserver-vnet-integration vlag.

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

Privéclustermodus in- of uitschakelen op een bestaand cluster met API Server VNet-integratie

AKS-clusters die zijn geconfigureerd met API Server VNet-integratie, kunnen de modus openbaar netwerktoegang/privécluster hebben ingeschakeld of uitgeschakeld zonder het cluster opnieuw te implementeren. De hostnaam van de API-server wordt niet gewijzigd, maar openbare DNS-vermeldingen worden zo nodig gewijzigd of verwijderd.

Opmerking

--disable-private-cluster is momenteel beschikbaar als preview-versie. Zie Referentie- en ondersteuningsniveaus voor meer informatie.

Privéclustermodus inschakelen

  • Schakel de privéclustermodus in met behulp van de az aks update opdracht met de --enable-private-cluster vlag.

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

Modus privécluster uitschakelen

  • Schakel de privéclustermodus uit met behulp van de az aks update opdracht met de --disable-private-cluster vlag.

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

Verbinding maken met cluster met behulp van kubectl

  • Configureer kubectl om verbinding te maken met uw cluster met behulp van het az aks get-credentials commando.

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

U kunt het API-servereindpunt van een privécluster beschikbaar maken met API Server VNet-integratie met behulp van Azure Private Link. In de volgende stappen ziet u hoe u een Private Link Service (PLS) maakt in het cluster-VNet en verbinding maakt vanuit een ander VNet of abonnement met behulp van een privé-eindpunt.

Een privécluster voor API Server-VNet-integratie maken

  • Maak een privé-AKS-cluster met API Server VNet-integratie met behulp van de az aks create opdracht met de --enable-api-server-vnet-integration en --enable-private-cluster vlaggen.

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

Zie Private Link met API Server VNet-integratie voor meer informatie over het instellen van Private Link met API Server VNet-integratie.

NSG-beveiligingsregels

Al het verkeer binnen het VNet is standaard toegestaan. Maar als u NSG-regels hebt toegevoegd om verkeer tussen verschillende subnetten te beperken, moet u ervoor zorgen dat de NSG-beveiligingsregels de volgende typen communicatie toestaan:

Bestemming Bron protocol Porto Gebruik
APIServer Subnetwerk CIDR Clustersubnet TCP 443 en 4443 Vereist om communicatie tussen knooppunten en de API-server mogelijk te maken.
APIServer Subnetwerk CIDR Azure-belastingsverdeling TCP 9988 Vereist om communicatie mogelijk te maken tussen Azure Load Balancer en de API-server. U kunt ook alle communicatie tussen de Azure Load Balancer en de CIDR van het API Server-subnet inschakelen.

Volgende stappen