Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt een interne load balancer maken en gebruiken om de toegang tot uw toepassingen in Azure Kubernetes Service (AKS) te beperken. Een interne load balancer heeft geen openbaar IP-adres en maakt een Kubernetes-service alleen toegankelijk voor toepassingen die het privé-IP-adres kunnen bereiken. Deze toepassingen kunnen zich binnen hetzelfde virtuele netwerk of in een ander virtueel netwerk bevinden via peering van virtuele netwerken. In dit artikel leest u hoe u een interne load balancer maakt en gebruikt met AKS.
Important
Op 30 september 2025 wordt Basic Load Balancer buiten gebruik gesteld. Zie de officiële aankondiging voor meer informatie. Er is geen geïntegreerde optie om de Azure AKS-API-bewerking te gebruiken om de Load Balancer-SKU te migreren. De SKU-beslissing van Load Balancer moet worden uitgevoerd tijdens het maken van het cluster. Als u momenteel Basic Load Balancer gebruikt, moet u daarom de benodigde stappen uitvoeren om uw workloads te migreren naar een nieuw aangemaakt cluster met de nieuwe standaard Load Balancer-SKU vóór de datum van buitengebruikstelling.
Voordat u begint
- In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt. Als u een AKS-cluster nodig hebt, kunt u er een maken met behulp van Azure CLI, Azure PowerShell of Azure Portal.
- U hebt Azure CLI versie 2.0.59 of hoger nodig. Voer
az --versionuit om de versie te vinden. Als u Azure CLI wilt installeren of upgraden, raadpleegt u Azure CLI installeren. - Als u een bestaand subnet of resourcegroep wilt gebruiken, moet de AKS-clusteridentiteit zijn gemachtigd om netwerkresources te beheren. Zie Azure CNI-netwerken configureren in AKS voor meer informatie. Als u uw load balancer configureert voor het gebruik van een IP-adres in een ander subnet, moet u ervoor zorgen dat de AKS-clusteridentiteit ook toegang heeft
Readtot dat subnet.- Zie AKS-toegang tot andere Azure-resources delegeren voor meer informatie over machtigingen.
Een interne load balancer maken
Maak een servicemanifest met de naam
internal-lb.yamlvan het servicetypeLoadBalanceren deazure-load-balancer-internalannotatie.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appImplementeer de interne load balancer met behulp van de
kubectl applyopdracht. Met deze opdracht maakt u een Azure Load Balancer in de knooppuntresourcegroep die is verbonden met hetzelfde virtuele netwerk als uw AKS-cluster.kubectl apply -f internal-lb.yamlBekijk de servicedetails met behulp van de
kubectl get serviceopdracht.kubectl get service internal-appHet IP-adres van de interne load balancer wordt weergegeven in de
EXTERNAL-IPkolom, zoals wordt weergegeven in de volgende voorbeelduitvoer. In deze context verwijst Extern naar de externe interface van de load balancer. Het betekent niet dat het een openbaar, extern IP-adres ontvangt. Dit IP-adres wordt dynamisch toegewezen vanuit hetzelfde subnet als het AKS-cluster.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.248.59 10.240.0.7 80:30555/TCP 2m
Een IP-adres opgeven
Wanneer u een IP-adres opgeeft voor de load balancer, moet het opgegeven IP-adres zich in hetzelfde virtuele netwerk bevinden als het AKS-cluster, maar kan het nog niet worden toegewezen aan een andere resource in het virtuele netwerk. U moet bijvoorbeeld geen IP-adres gebruiken in het bereik dat is aangewezen voor het Kubernetes-subnet in het AKS-cluster. Als u een IP-adres gebruikt dat al is toegewezen aan een andere resource in hetzelfde virtuele netwerk, kan dit problemen veroorzaken met de load balancer.
U kunt de az network vnet subnet list Azure CLI-opdracht of de Get-AzVirtualNetworkSubnetConfig PowerShell-cmdlet gebruiken om de subnetten in uw virtuele netwerk op te halen.
Zie Een knooppuntgroep met een uniek subnet toevoegen voor meer informatie over subnetten.
Als u een specifiek IP-adres met de load balancer wilt gebruiken, hebt u twee opties: serviceaantekeningen instellen of de eigenschap LoadBalancerIP toevoegen aan het YAML-manifest van de load balancer.
Important
Het toevoegen van de eigenschap LoadBalancerIP aan het YAML-manifest van de load balancer wordt afgeschaft na upstream Kubernetes. Hoewel het huidige gebruik hetzelfde blijft en bestaande services naar verwachting zonder aanpassingen werken, raden we u ten zeerste aan serviceaantekeningen in te stellen. Zie Azure LoadBalancer ondersteunde aantekeningen voor meer informatie over serviceaantekeningen.
- Serviceaantekeningen instellen
- De eigenschap LoadBalancerIP toevoegen aan het YAML-manifest van de load balancer
Serviceannotaties instellen met
service.beta.kubernetes.io/azure-load-balancer-ipv4voor een IPv4-adres enservice.beta.kubernetes.io/azure-load-balancer-ipv6voor een IPv6-adres.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25 service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Bekijk de servicedetails met behulp van de
kubectl get serviceopdracht.kubectl get service internal-appHet IP-adres in de
EXTERNAL-IPkolom moet overeenkomen met het opgegeven IP-adres, zoals wordt weergegeven in de volgende voorbeelduitvoer:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
Zie Een ander subnet opgeven voor meer informatie over het configureren van uw load balancer in een ander subnet.
Azure Private Link-service verbinden met interne load balancer
Voordat u begint
- U hebt Kubernetes versie 1.22.x of hoger nodig.
- U hebt een bestaande resourcegroep met een virtueel netwerk en subnet nodig. In deze resourcegroep maakt u het privé-eindpunt. Zie Een virtueel netwerk en subnet maken als u deze resources niet hebt.
Een Private Link-serviceverbinding maken
Maak een servicemanifest genaamd
internal-lb-pls.yamlmet het service typeLoadBalanceren de annotatiesazure-load-balancer-internalenazure-pls-create. Raadpleeg het ontwerpdocument voor azure Private Link Service Integration voor meer opties.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-pls-create: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appImplementeer de interne load balancer met behulp van de
kubectl applyopdracht. Met deze opdracht maakt u een Azure Load Balancer in de knooppuntresourcegroep die is verbonden met hetzelfde virtuele netwerk als uw AKS-cluster. Er wordt ook een Private Link-serviceobject gemaakt dat verbinding maakt met de front-end-IP-configuratie van de load balancer die is gekoppeld aan de Kubernetes-service.kubectl apply -f internal-lb-pls.yamlBekijk de servicedetails met behulp van de
kubectl get serviceopdracht.kubectl get service internal-appHet IP-adres van de interne load balancer wordt weergegeven in de
EXTERNAL-IPkolom, zoals wordt weergegeven in de volgende voorbeelduitvoer. In deze context verwijst Extern naar de externe interface van de load balancer. Het betekent niet dat het een openbaar, extern IP-adres ontvangt.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64mBekijk de details van het Private Link-serviceobject met behulp van de
az network private-link-service listopdracht.# Create a variable for the node resource group AKS_MC_RG=$(az aks show -g myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv) # View the details of the Private Link Service object az network private-link-service list -g $AKS_MC_RG --query "[].{Name:name,Alias:alias}" -o tableUw output zou eruit moeten zien zoals de volgende voorbeeldoutput.
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
Een privé-eindpunt maken voor de Private Link-service
Met een privé-eindpunt kunt u privé verbinding maken met uw Kubernetes-serviceobject via de Private Link-service die u hebt gemaakt.
Maak het privé-eindpunt met behulp van de
az network private-endpoint createopdracht.# Create a variable for the private link service AKS_PLS_ID=$(az network private-link-service list -g $AKS_MC_RG --query "[].id" -o tsv) # Create the private endpoint $ az network private-endpoint create \ -g myOtherResourceGroup \ --name myAKSServicePE \ --vnet-name myOtherVNET \ --subnet pe-subnet \ --private-connection-resource-id $AKS_PLS_ID \ --connection-name connectToMyK8sService
PLS-aanpassingen via aantekeningen
U kunt de volgende aantekeningen gebruiken om de PLS-resource aan te passen:
| Annotation | Value | Description | Required | Default |
|---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
Booleaanse waarde die aangeeft of er een PLS moet worden gemaakt. | Required | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
Tekenreeks die de naam opgeeft van de PLS-resource die moet worden gemaakt. | Optional | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
Tekenreeks die de naam opgeeft van de resourcegroep waarin de PLS-resource wordt gemaakt | Optional | MC_ resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
Tekenreeks die het subnet aangeeft waarop de PLS is geïmplementeerd. Dit subnet moet zich in hetzelfde virtuele netwerk bevinden als de back-endpool. PLS NAT IP-adressen worden toegewezen binnen dit subnet. | Optional | Als service.beta.kubernetes.io/azure-load-balancer-internal-subnet dit ILB-subnet wordt gebruikt. Anders wordt het standaardsubnet van het configuratiebestand gebruikt. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
Totaal aantal privé-NAT-IP's dat moet worden toegewezen. | Optional | 1 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
Een door ruimte gescheiden lijst met statische IP-adressen van IPv4 die moeten worden toegewezen. (IPv6 wordt momenteel niet ondersteund.) Het totale aantal IP-adressen mag niet groter zijn dan het ip-aantal dat is opgegeven in service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count. Als er minder IP-adressen zijn opgegeven, worden de rest dynamisch toegewezen. Het eerste IP-adres in de lijst is ingesteld als Primary. |
Optional | Alle IP-adressen worden dynamisch toegewezen. |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" of "false" |
Booleaanse waarde die aangeeft of het TCP PROXY-protocol moet worden ingeschakeld op de PLS om verbindingsgegevens door te geven, inclusief de koppelings-id en het bron-IP-adres. De back-endservice MOET het PROXY-protocol ondersteunen of de verbindingen mislukken. | Optional | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" of "*" |
Een door spaties gescheiden lijst met Azure-abonnements-id's waarvoor de private link-service zichtbaar is. Gebruik "*" dit om de PLS beschikbaar te maken voor alle subs (minst beperkend). |
Optional | Lege lijst [] die alleen op rollen gebaseerd toegangsbeheer aangeeft: deze private link-service is alleen beschikbaar voor personen met op rollen gebaseerd toegangsbeheermachtigingen in uw directory. (Meest beperkend) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
Een door spaties gescheiden lijst met Azure-abonnements-id's. Hierdoor kunnen PE-verbindingsaanvragen van de vermelde abonnementen naar de PLS automatisch worden goedgekeurd. Dit werkt alleen wanneer zichtbaarheid is ingesteld op "*". |
Optional | [] |
Privénetwerken gebruiken
Wanneer u uw AKS-cluster maakt, kunt u geavanceerde netwerkinstellingen opgeven. Met deze instellingen kunt u het cluster implementeren in een bestaand virtueel Azure-netwerk en -subnetten. U kunt uw AKS-cluster bijvoorbeeld implementeren in een particulier netwerk dat is verbonden met uw on-premises omgeving en services uitvoeren die alleen intern toegankelijk zijn.
Zie Uw eigen subnetten voor virtuele netwerken configureren met Kubenet of met Azure CNI voor meer informatie.
U hoeft geen wijzigingen aan te brengen in de vorige stappen om een interne load balancer te implementeren die gebruikmaakt van een particulier netwerk in een AKS-cluster. De load balancer wordt gemaakt in dezelfde resourcegroep als uw AKS-cluster, maar is in plaats daarvan verbonden met uw particuliere virtuele netwerk en subnet, zoals wordt weergegeven in het volgende voorbeeld:
$ kubectl get service internal-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
internal-app LoadBalancer 10.1.15.188 10.0.0.35 80:31669/TCP 1m
Note
De clusteridentiteit die door het AKS-cluster wordt gebruikt, moet ten minste de rol Netwerkbijdrager hebben op de resource van het virtuele netwerk. U kunt de clusteridentiteit weergeven met behulp van de az aks show opdracht, zoals az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity". U kunt de rol Inzender voor netwerken toewijzen met behulp van de az role assignment create opdracht, zoals az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor".
Als u in plaats daarvan een aangepaste rol wilt definiëren, hebt u de volgende machtigingen nodig:
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/read
Zie Een subnet van een virtueel netwerk toevoegen, wijzigen of verwijderen voor meer informatie.
Een ander subnet opgeven
Voeg de
azure-load-balancer-internal-subnetaantekening toe aan uw service om een subnet voor uw load balancer op te geven. Het opgegeven subnet moet zich in hetzelfde virtuele netwerk bevinden als uw AKS-cluster. Wanneer het is geïmplementeerd, maakt het load balancer-adresEXTERNAL-IPdeel uit van het opgegeven subnet.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
De load balancer verwijderen
De load balancer wordt verwijderd wanneer alle diensten worden verwijderd.
Net als bij elke Kubernetes-resource kunt u rechtstreeks een service verwijderen, zoals kubectl delete service internal-app, waarmee ook de onderliggende Azure-load balancer wordt verwijderd.
Volgende stappen
Zie de Documentatie voor Kubernetes-services voor meer informatie over Kubernetes-services.