Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie eine Lastenausgleichsressource in einem Azure Kubernetes Service (AKS)-Cluster erstellen, ist die ihr zugewiesene öffentliche IP-Adresse nur für die Lebensdauer dieser Ressource gültig. Wenn Sie den Kubernetes-Dienst löschen, werden auch der zugehörige Lastenausgleich und die zugehörige IP-Adresse gelöscht. Wenn Sie eine bestimmte IP-Adresse für einen Kubernetes-Dienst zuweisen oder beibehalten möchten, können Sie eine statische öffentliche IP-Adresse erstellen und verwenden.
In diesem Artikel wird erläutert, wie Sie eine statische öffentliche IP-Adresse erstellen und Ihrem Kubernetes-Dienst zuweisen.
Bevor Sie beginnen
- Azure CLI-Version 2.0.59 oder höher muss installiert und konfiguriert sein. Führen Sie
az --versionaus, um die Version zu ermitteln. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI. - In diesem Artikel wird die Verwendung einer IP-Adresse der SKU Standard mit einem Load Balancer der SKU Standard behandelt. Weitere Informationen finden Sie unter IP-Adresstypen und Zuordnungsmethoden in Azure.
Erstellen eines AKS-Clusters
Erstellen Sie mithilfe des Befehls
az group createeine Azure-Ressourcengruppe.az group create --name myNetworkResourceGroup --location eastusErstellen Sie einen AKS-Cluster mithilfe des
az aks createBefehls.az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Erstellen einer statischen IP-Adresse
Rufen Sie den Namen der Knotenressourcengruppe mithilfe des Befehls
az aks showab und fragen Sie die EigenschaftnodeResourceGroupab.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvErstellen Sie mithilfe des
az network public-ip createBefehls eine statische öffentliche IP-Adresse in der Knotenressourcengruppe.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticWichtig
AKS unterstützt keine Basic-Load Balancer mehr. Wenn Ihr Cluster ein Basic-Load Balancer verwendet, aktualisieren Sie auf Load Balancer Standard, bevor Sie eine statische öffentliche IP-Adresse konfigurieren.
Rufen Sie die statische öffentliche IP-Adresse mithilfe des
az network public-ip showBefehls ab. Geben Sie den Namen der Knotenressourcengruppe und die von Ihnen erstellte öffentliche IP-Adresse an, und fragen Sie dasipAddressab.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Erstellen eines Kubernetes-Diensts mit der statischen IP-Adresse
Erstellen Sie eine Datei namens
load-balancer-service.yamlund kopieren Sie sie in den Inhalt der folgenden YAML-Datei. Geben Sie den öffentlichen IP-Ressourcennamen (myAKSPublicIP) an, den Sie im Abschnitt "Statische IP-Adresse erstellen " und den Namen der Knotenressourcengruppe erstellt haben.Die Identität der AKS-Steuerelementebene verfügt standardmäßig über Mitwirkendeberechtigungen für die Knotenressourcengruppe, sodass für die öffentliche IP, die Sie in diesem Artikel erstellen, keine weitere Rollenzuweisung erforderlich ist. Wenn Sie eine eingehende oder ausgehende öffentliche IP in einer anderen Ressourcengruppe verwenden, erteilen Sie der Steuerungsebene die erforderlichen Berechtigungen für diese Ressourcengruppe. Weitere Informationen finden Sie unter Verwaltete Identitäten in AKS.
Wichtig
Die Eigenschaft
loadBalancerIPin einem Kubernetes-Service-Manifest ist in Anlehnung an Upstream-Kubernetes veraltet. Vorhandene Dienste funktionieren weiterhin ohne Änderung, verwenden aber stattdessen Dienstanmerkungen.Annotation Purpose service.beta.kubernetes.io/azure-pip-nameGeben Sie den Namen der öffentlichen IP-Ressource an. service.beta.kubernetes.io/azure-load-balancer-ipv4Geben Sie eine IPv4-Adresse an. service.beta.kubernetes.io/azure-load-balancer-ipv6Geben Sie eine IPv6-Adresse an. 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-balancerHinweis
Das Hinzufügen der
service.beta.kubernetes.io/azure-pip-nameAnmerkung gewährleistet die effizienteste LoadBalancer-Erstellung und wird dringend empfohlen, um eine potenzielle Drosselung zu vermeiden.Legen Sie mithilfe der Dienstanmerkung eine öffentlich zugängliche DNS-Bezeichnung auf den
service.beta.kubernetes.io/azure-dns-label-nameDienst fest. Damit wird ein vollqualifizierter Domänenname (Fully Qualified Domain Name, FQDN) für Ihren Dienst veröffentlicht, der die öffentlichen DNS-Server und die Domäne der obersten Ebene von Azure verwendet. Der Anmerkungswert muss innerhalb des Azure-Standorts eindeutig sein, daher wird die Verwendung einer ausreichend qualifizierten Bezeichnung empfohlen. Azure fügt dem von Ihnen angegebenen Namen automatisch ein Standardsuffix für den von Ihnen ausgewählten Standort hinzu, z. B.<location>.cloudapp.azure.com, wodurch der FQDN erstellt wird.Hinweis
Informationen zum Veröffentlichen des Diensts in Ihrer eigenen Domäne finden Sie unter Azure DNS und dem Projekt external-dns.
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-balancerStellen Sie vor dem Erstellen des Diensts sicher, dass Ihr Cluster über eine Workload mit Pods verfügt, die die
app: azure-load-balancerBezeichnung verwenden. Das Service-Manifest wählt Pods mit diesem Label aus, erstellt aber kein Deployment.Erstellen Sie den Dienst mithilfe des
kubectl applyBefehls.kubectl apply -f load-balancer-service.yamlStellen Sie sicher, dass der Dienst mindestens einen laufenden, bereiten Pod auswählt.
kubectl get pods -l app=azure-load-balancerVerwenden Sie den Befehl
kubectl describe, um die DNS-Bezeichnung für Ihren Load Balancer anzuzeigen.kubectl describe service azure-load-balancerDas DNS-Label wird unter dem
Annotationsaufgeführt, wie in der folgenden gekürzten Beispielausgabe gezeigt:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Problembehandlung
In diesem Abschnitt wird vorausgesetzt, dass Sie eine statische IP-Adresse erstellt, die Schritte unter Einen Kubernetes-Dienst mit der statischen IP-Adresse erstellen ausgeführt und über einen ausgeführten AKS-Cluster verfügen. Verwenden Sie az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvzum Abrufen des Knotenressourcengruppennamens .
Wenn die öffentliche IP-Ressource mit dem Namen in der Annotation service.beta.kubernetes.io/azure-pip-name nicht in der durch service.beta.kubernetes.io/azure-load-balancer-resource-group angegebenen Ressourcengruppe vorhanden ist oder die Identität der AKS-Kontrollebene keinen Zugriff auf diese Ressourcengruppe hat, schlägt die Erstellung des Load-Balancer-Diensts fehl. Überprüfen Sie zur Problembehandlung die Dienstanmerkungen und Erstellungsereignisse mithilfe des kubectl describe Befehls. Geben Sie den im YAML-Manifest angegebenen Namen des Diensts ein, wie im folgenden Beispiel dargestellt:
kubectl describe service azure-load-balancer
In der Ausgabe werden Informationen zur Kubernetes-Dienstressource angezeigt. Die folgende Beispielausgabe zeigt ein Warning im Events: „user supplied IP address was not found.“ Stellen Sie in diesem Szenario sicher, dass die azure-pip-name-Annotation mit dem Namen der Ressource für die statische öffentliche IP-Adresse übereinstimmt und dass die azure-load-balancer-resource-group-Annotation mit der Ressourcengruppe übereinstimmt, die sie enthält.
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
Nächste Schritte
Um den Netzwerkdatenverkehr für Ihre Anwendungen besser steuern zu können, verwenden Sie das Anwendungsrouting-Add-On für AKS. Weitere Informationen zum App-Routing-Add-On finden Sie unter Verwalteter NGINX-Ingress mit dem Application Routing-Add-On.