Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skapar en lastbalanserarresurs i ett AKS-kluster (Azure Kubernetes Service) är den offentliga IP-adressen som tilldelats den endast giltig för resursens livslängd. Om du tar bort Kubernetes-tjänsten tas även den associerade lastbalanseraren och IP-adressen bort. Om du vill tilldela en specifik IP-adress eller behålla en IP-adress för omdistribuerade Kubernetes-tjänster kan du skapa och använda en statisk offentlig IP-adress.
Den här artikeln visar hur du skapar en statisk offentlig IP-adress och tilldelar den till Kubernetes-tjänsten.
Innan du börjar
- Du behöver Azure CLI version 2.0.59 eller senare installerad och konfigurerad. Kör
az --versionför att hitta versionen. Information om hur du installerar eller uppgraderar finns i Installera Azure CLI. - Den här artikeln beskriver hur du använder en Standard SKU IP med en Standard SKU-lastbalanserare. Mer information finns i IP-adresstyper och allokeringsmetoder i Azure.
Skapa ett AKS-kluster
Skapa en Azure-resursgrupp med kommandot
az group create.az group create --name myNetworkResourceGroup --location eastusSkapa ett AKS-kluster med hjälp
az aks createav kommandot .az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Skapa en statisk IP-adress
Hämta namnet på nodresursgruppen med hjälp av kommandot
az aks showoch fråga efter egenskapennodeResourceGroup.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvSkapa en statisk offentlig IP-adress i nodresursgruppen med hjälp
az network public-ip createav kommandot .az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticViktigt!
AKS stöder inte längre Basic Load Balancer. Om klustret använder en Grundläggande Load Balancer uppgraderar du till Standard Load Balancer innan du konfigurerar en statisk offentlig IP-adress.
Hämta den statiska offentliga IP-adressen genom att använda kommandot
az network public-ip show. Ange namnet på nodresursgruppen och den offentliga IP-adress som du skapade och fråga efteripAddress.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Skapa en Kubernetes-tjänst med den statiska IP-adressen
Skapa en fil med namnet
load-balancer-service.yamloch kopiera innehållet i följande YAML-fil. Ange det offentliga IP-resursnamnet (myAKSPublicIP) som du skapade i avsnittet Skapa en statisk IP-adress och nodresursgruppens namn.AKS-kontrollplanets identitet har som standard deltagarbehörighet för nodresursgruppen, så den offentliga IP-adress som du skapar i den här artikeln kräver ingen annan rolltilldelning. Om du använder en inkommande eller utgående offentlig IP-adress i en annan resursgrupp ger du kontrollplanets identitet de behörigheter som krävs för resursgruppen. Mer information finns i Hanterade identiteter i AKS.
Viktigt!
Egenskapen
loadBalancerIPi ett tjänstmanifest i Kubernetes är föråldrad i linje med Kubernetes upstream. Befintliga tjänster fortsätter att fungera utan ändringar, men använder tjänstanteckningar i stället.Anteckning Purpose service.beta.kubernetes.io/azure-pip-nameAnge namnet på den offentliga IP-resursen. service.beta.kubernetes.io/azure-load-balancer-ipv4Ange en IPv4-adress. service.beta.kubernetes.io/azure-load-balancer-ipv6Ange en IPv6-adress. 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-balancerKommentar
Genom att lägga till annoteringen
service.beta.kubernetes.io/azure-pip-namesäkerställs skapandet av den mest effektiva LoadBalancer och det rekommenderas starkt för att undvika potentiella begränsningar.Ange en offentlig DNS-etikett till tjänsten med hjälp av tjänstanteckningen
service.beta.kubernetes.io/azure-dns-label-name. Detta publicerar ett fullständigt kvalificerat domännamn (FQDN) för din tjänst med hjälp av Azures offentliga DNS-servrar och toppnivådomän. Anteckningsvärdet måste vara unikt på Azure-platsen, så vi rekommenderar att du använder en tillräckligt kvalificerad etikett. Azure lägger automatiskt till ett standardsuffix på den plats som du har valt, till exempel<location>.cloudapp.azure.com, till det namn du anger, vilket skapar det fullständiga domännamnet.Kommentar
Om du vill publicera tjänsten på din egen domän kan du läsa Azure DNS och projektet 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-balancerInnan du skapar tjänsten kontrollerar du att klustret har en arbetsbelastning med poddar som använder
app: azure-load-balanceretiketten. Tjänstmanifestet väljer poddar med den här etiketten men skapar ingen distribution.Skapa tjänsten med kommandot
kubectl apply.kubectl apply -f load-balancer-service.yamlKontrollera att tjänsten väljer minst en podd som körs och är redo.
kubectl get pods -l app=azure-load-balancerOm du vill se DNS-etiketten för lastbalanseraren använder du
kubectl describekommandot .kubectl describe service azure-load-balancerDNS-etiketten visas under
Annotations, enligt följande komprimerade exempelutdata:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Felsöka
Det här avsnittet förutsätter att du har slutfört skapa en statisk IP-adress, försökt stegen i Skapa en Kubernetes-tjänst med den statiska IP-adressen och har ett AKS-kluster som körs. Om du vill hämta namnet på nodens resursgrupp använder du az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv.
Om den offentliga IP-resursen med namnet i anteckningen service.beta.kubernetes.io/azure-pip-name inte finns i resursgruppen som anges av , eller om AKS-kontrollplanets identitet inte kan komma åt den resursgruppen, misslyckas skapande av service.beta.kubernetes.io/azure-load-balancer-resource-grouplastbalanserarens tjänst. Om du vill felsöka kan du granska tjänstannoteringarna och skapelsehändelserna med kommandot kubectl describe. Ange namnet på den tjänst som anges i YAML-manifestet enligt följande exempel:
kubectl describe service azure-load-balancer
Utdata visar information om Kubernetes-tjänstresursen. Följande exempelutdata visar en Warning i Events: "user supplied IP address was not found." I det här scenariot kontrollerar du att anteckningen azure-pip-name matchar namnet på den statiska offentliga IP-resursen och att anteckningen azure-load-balancer-resource-group matchar den resursgrupp som innehåller den.
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ästa steg
Om du vill ha mer kontroll över nätverkstrafiken till dina program använder du tillägget för programroutning för AKS. Mer information om tillägget för approutning finns i Hanterad NGINX-ingress med tillägget för programroutning.