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.
Wanneer u een load balancer-resource maakt in een AKS-cluster (Azure Kubernetes Service), is het openbare IP-adres dat eraan is toegewezen, alleen geldig voor de levensduur van die resource. Als u de Kubernetes-service verwijdert, worden ook de bijbehorende Load Balancer en het IP-adres verwijderd. Als u een specifiek IP-adres wilt toewijzen of een IP-adres wilt behouden voor opnieuw geïmplementeerde Kubernetes-services, kunt u een statisch openbaar IP-adres maken en gebruiken.
In dit artikel leest u hoe u een statisch openbaar IP-adres maakt en dit toewijst aan uw Kubernetes-service.
Voordat u begint
- U moet Azure CLI versie 2.0.59 of hoger hebben geïnstalleerd en geconfigureerd. Voer
az --versionuit om de versie te bekijken. Voor het installeren of upgraden, zie Azure CLI installeren. - In dit artikel wordt beschreven hoe u een standaard-SKU-IP gebruikt met een Standard SKU-load balancer. Zie IP-adrestypen en toewijzingsmethoden in Azure voor meer informatie.
Een AKS-cluster maken
Maak een Azure-resourcegroep met behulp van de
az group createopdracht.az group create --name myNetworkResourceGroup --location eastusMaak een AKS-cluster met behulp van de
az aks createopdracht.az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Een statisch IP-adres maken
Haal de naam van de knooppuntresourcegroep op met behulp van de
az aks showopdracht en voer een query uit voor denodeResourceGroupeigenschap.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvMaak een statisch openbaar IP-adres in de knooppuntresourcegroep met behulp van de
az network public-ip createopdracht.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticBelangrijk
AKS biedt geen ondersteuning meer voor Basic Load Balancer. Als uw cluster gebruikmaakt van een Basic-Load Balancer, voert u een upgrade uit naar Standard Load Balancer voordat u een statisch openbaar IP-adres configureert.
Haal het statische openbare IP-adres op met behulp van de
az network public-ip showopdracht. Geef de naam op van de knooppuntresourcegroep en het openbare IP-adres dat u hebt gemaakt en voer een query uit voor deipAddress.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Een Kubernetes-service maken met het statische IP-adres
Maak een bestand met de naam
load-balancer-service.yamlen kopieer dit in de inhoud van het volgende YAML-bestand. Geef de naam van de openbare IP-resource (myAKSPublicIP) op die u hebt gemaakt in de sectie Een statisch IP-adres maken en de naam van de knooppuntresourcegroep.De identiteit van het AKS-besturingsvlak heeft standaard inzendermachtigingen voor de knooppuntresourcegroep, dus voor het openbare IP-adres dat u in dit artikel maakt, is geen andere roltoewijzing vereist. Als u een binnenkomend of uitgaand openbaar IP-adres in een andere resourcegroep gebruikt, verleent u de identiteit van het besturingsvlak de vereiste machtigingen voor die resourcegroep. Zie Beheerde identiteiten in AKS voor meer informatie.
Belangrijk
De
loadBalancerIPeigenschap in een Kubernetes-servicemanifest is afgeschaft na upstream Kubernetes. Bestaande services blijven werken zonder wijzigingen, maar gebruiken in plaats daarvan serviceaantekeningen.Aantekening Purpose service.beta.kubernetes.io/azure-pip-nameGeef de naam van de openbare IP-resource op. service.beta.kubernetes.io/azure-load-balancer-ipv4Geef een IPv4-adres op. service.beta.kubernetes.io/azure-load-balancer-ipv6Geef een IPv6-adres op. apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name> service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP name: azure-load-balancer spec: type: LoadBalancer ports: - port: 80 selector: app: azure-load-balancerNotitie
Het toevoegen van de
service.beta.kubernetes.io/azure-pip-nameannotatie zorgt ervoor dat de meest efficiënte LoadBalancer wordt gemaakt en het wordt ten zeerste aanbevolen om mogelijke vertragingen te voorkomen.Stel een openbaar DNS-label in op de service met behulp van de
service.beta.kubernetes.io/azure-dns-label-nameserviceaantekening. Hiermee publiceert u een FQDN (Fully Qualified Domain Name) voor uw service met behulp van de openbare DNS-servers en het domein op het hoogste niveau van Azure. De aantekeningswaarde moet uniek zijn binnen de Azure-locatie, dus we raden u aan een voldoende gekwalificeerde label te gebruiken. Azure voegt automatisch een standaardachtervoegsel toe op de locatie die u hebt geselecteerd, zoals<location>.cloudapp.azure.com, aan de naam die u opgeeft, en maakt daarmee de FQDN.Notitie
Als u de service op uw eigen domein wilt publiceren, raadpleeg Azure DNS en het external-dns project.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name> service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label> name: azure-load-balancer spec: type: LoadBalancer ports: - port: 80 selector: app: azure-load-balancerVoordat u de service maakt, moet u ervoor zorgen dat uw cluster een workload heeft met pods die gebruikmaken van het
app: azure-load-balancerlabel. Het servicemanifest selecteert pods met dit label, maar maakt geen implementatie.Maak de service met behulp van de
kubectl applyopdracht.kubectl apply -f load-balancer-service.yamlControleer of de service ten minste één actieve pod selecteert.
kubectl get pods -l app=azure-load-balancerGebruik de
kubectl describeopdracht om het DNS-label voor uw load balancer te zien.kubectl describe service azure-load-balancerHet DNS-label wordt vermeld onder de
Annotations, zoals wordt weergegeven in de volgende verkorte voorbeelduitvoer:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Problemen oplossen
In deze sectie wordt ervan uitgegaan dat u het statische IP-adres maken hebt voltooid, hebt geprobeerd de stappen in Een Kubernetes-service te maken met het statische IP-adres en een actief AKS-cluster te hebben. Als u de naam van de knooppuntresourcegroep wilt ophalen, gebruikt u az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv.
Als de openbare IP-resource met de naam in de annotatie service.beta.kubernetes.io/azure-pip-name niet bestaat in de resourcegroep die is opgegeven door service.beta.kubernetes.io/azure-load-balancer-resource-group, of als de identiteit van het AKS-besturingsvlak geen toegang heeft tot die resourcegroep, mislukt het maken van de load balancer-service. Als u problemen wilt oplossen, bekijkt u de serviceaantekeningen en maakgebeurtenissen met behulp van de kubectl describe opdracht. Geef de naam op van de service die is opgegeven in het YAML-manifest, zoals wordt weergegeven in het volgende voorbeeld:
kubectl describe service azure-load-balancer
In de uitvoer ziet u informatie over de Kubernetes-serviceresource. In de volgende voorbeelduitvoer wordt een Warning weergegeven in de Events: "user supplied IP address was not found." In dit scenario moet u ervoor zorgen dat de annotatie azure-pip-name overeenkomt met de naam van de resource voor een statisch openbaar IP-adres en dat de annotatie azure-load-balancer-resource-group overeenkomt met de resourcegroep die deze bevat.
Name: azure-load-balancer
Namespace: default
Labels: <none>
Annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name>
service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP
Selector: app=azure-load-balancer
Type: LoadBalancer
IP: 10.0.18.125
IP: 40.121.183.52
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 32582/TCP
Endpoints: <pod-ip>:80
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreatingLoadBalancer 7s (x2 over 22s) service-controller Creating load balancer
Warning CreatingLoadBalancerFailed 6s (x2 over 12s) service-controller Error creating load balancer (will retry): Failed to create load balancer for service default/azure-load-balancer: user supplied IP Address 40.121.183.52 was not found
Volgende stappen
Gebruik de invoegtoepassing voor toepassingsroutering voor AKS voor meer controle over het netwerkverkeer naar uw toepassingen. Zie Beheerde NGINX-ingangen met de invoegtoepassing voor toepassingsroutering voor meer informatie over de invoegtoepassing voor app-routering.