Statikus nyilvános IP-cím és DNS-címke használata az Azure Kubernetes Service (AKS) terheléselosztóval
Amikor terheléselosztó-erőforrást hoz létre egy Azure Kubernetes Service- (AKS-) fürtben, a hozzá rendelt nyilvános IP-cím csak az adott erőforrás élettartamára érvényes. Ha törli a Kubernetes-szolgáltatást, a hozzá kapcsolódó Load Balancer és IP-cím is törlődik. Ha egy adott IP-címet szeretne hozzárendelni, vagy újra üzembe helyezett Kubernetes-szolgáltatások IP-címét szeretné visszaállítani, akkor létrehozhat és használhat statikus nyilvános IP-címet.
Ez a cikk bemutatja, hogyan hozhat létre statikus nyilvános IP-címet, és rendelheti hozzá a Kubernetes-szolgáltatáshoz.
Mielőtt elkezdené
- Telepítenie és konfigurálnia kell az Azure CLI 2.0.59-es vagy újabb verzióját. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése. - Ez a cikk egy standard termékváltozat IP-címének standard termékváltozatú terheléselosztóval való használatát ismerteti. További információ: IP-címtípusok és kiosztási módszerek az Azure-ban.
AKS-fürt létrehozása
Hozzon létre egy Azure-erőforráscsoportot a
az group create
paranccsal.az group create --name myNetworkResourceGroup --location eastus
Hozzon létre egy AKS-fürtöt a
az aks create
paranccsal.az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Statikus IP-cím létrehozása
Kérje le a csomópont erőforráscsoportjának nevét a
az aks show
tulajdonság parancsával és lekérdezésévelnodeResourceGroup
.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv
Hozzon létre egy statikus nyilvános IP-címet a csomópont erőforráscsoportjában a
az network public ip create
parancs használatával.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method static
Feljegyzés
Ha alapszintű termékváltozatú terheléselosztót használ az AKS-fürtben, használja az Alapszintű paramétert a
--sku
nyilvános IP-cím definiálásakor. Csak az alapszintű termékváltozat-ip-címek működnek az alapszintű termékváltozat terheléselosztójával, és csak a standard termékváltozatú IP-címek működnek a standard termékváltozatú terheléselosztókkal.Kérje le a statikus nyilvános IP-címet a
az network public-ip list
paranccsal. Adja meg a létrehozott csomópont-erőforráscsoport és nyilvános IP-cím nevét, és kérdezze le aipAddress
.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Szolgáltatás létrehozása statikus IP-címmel
Győződjön meg arról, hogy az AKS-fürt által használt fürtidentitás delegált engedélyekkel rendelkezik a nyilvános IP-cím erőforráscsoportjára a
az role assignment create
parancs használatával.CLIENT_ID=$(az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query identity.principalId -o tsv) RG_SCOPE=$(az group show --name <node resource group> --query id -o tsv) az role assignment create \ --assignee ${CLIENT_ID} \ --role "Network Contributor" \ --scope ${RG_SCOPE}
Fontos
Ha testre szabta a kimenő IP-címet, győződjön meg arról, hogy a fürt identitása rendelkezik engedélyekkel mind a kimenő nyilvános IP-címhez, mind a bejövő nyilvános IP-címhez.
Hozzon létre egy fájlt,
load-balancer-service.yaml
amely az alábbi YAML-fájl tartalmában szerepel, és adja meg az előző lépésben létrehozott saját nyilvános IP-címét és a csomópont erőforráscsoportjának nevét.Fontos
Ha hozzáadja a
loadBalancerIP
tulajdonságot a terheléselosztó YAML-jegyzékéhez, az elavult a kubernetes felső rétegbeli követése után. Bár a jelenlegi használat változatlan marad, és a meglévő szolgáltatások várhatóan módosítás nélkül fognak működni, javasoljuk inkább a szolgáltatásjegyzetek beállítását . A szolgáltatásjegyzetek beállításához használhatjaservice.beta.kubernetes.io/azure-pip-name
a nyilvános IP-címet, vagy használhatjaservice.beta.kubernetes.io/azure-load-balancer-ipv4
egy IPv4-címhez ésservice.beta.kubernetes.io/azure-load-balancer-ipv6
egy IPv6-címhez, ahogyan az a YAML-példában látható.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-balancer
Feljegyzés
A
service.beta.kubernetes.io/azure-pip-name
széljegyzet hozzáadása biztosítja a leghatékonyabb LoadBalancer-létrehozást, és erősen ajánlott a lehetséges szabályozás elkerülése érdekében.Állítson be egy nyilvános elérésű DNS-címkét a szolgáltatáshoz a
service.beta.kubernetes.io/azure-dns-label-name
szolgáltatás széljegyzetének használatával. Ez egy teljes tartománynevet (FQDN) tesz közzé a szolgáltatáshoz az Azure nyilvános DNS-kiszolgálói és legfelső szintű tartománya használatával. A széljegyzet értékének egyedinek kell lennie az Azure-helyen belül, ezért javasoljuk, hogy megfelelően minősített címkét használjon. Az Azure automatikusan hozzáfűzi az alapértelmezett utótagot a kiválasztott helyen, például<location>.cloudapp.azure.com
a megadott névhez, létrehozva a teljes tartománynevet.Feljegyzés
Ha a szolgáltatást a saját tartományában szeretné közzétenni, tekintse meg az Azure DNS-t és a külső dns-projektet .
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-balancer
Hozza létre a szolgáltatást és az üzembe helyezést a
kubectl apply
paranccsal.kubectl apply -f load-balancer-service.yaml
A terheléselosztó DNS-címkéjének megtekintéséhez használja a
kubectl describe service
parancsot.kubectl describe service azure-load-balancer
A DNS-címke a
Annotations
következő tömörített példakimenetben látható módon jelenik meg:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kuberenetes.io/azure-dns-label-name: <unique-service-label>
Hibaelhárítás
Ha a Kubernetes szolgáltatásjegyzék tulajdonságában loadBalancerIP
definiált statikus IP-cím nem létezik vagy nem lett létrehozva a csomópont erőforráscsoportjában, és nincsenek más delegálások konfigurálva, a terheléselosztó szolgáltatás létrehozása meghiúsul. A hibaelhárításhoz tekintse át a szolgáltatáslétrehozás eseményeit a kubectl describe
paranccsal. Adja meg a YAML-jegyzékben megadott szolgáltatás nevét az alábbi példában látható módon:
kubectl describe service azure-load-balancer
A kimenet a Kubernetes szolgáltatás erőforrásával kapcsolatos információkat jeleníti meg. Az alábbi példakimenet a Events
következő helyen jelenik megWarning
: "user supplied IP address was not found
." Ebben a forgatókönyvben győződjön meg arról, hogy létrehozta a statikus nyilvános IP-címet a csomópont erőforráscsoportjában, és hogy a Kubernetes szolgáltatásjegyzékben megadott IP-cím helyes.
Name: azure-load-balancer
Namespace: default
Labels: <none>
Annotations: <none>
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: <none>
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
Következő lépések
Az alkalmazások felé irányuló hálózati forgalom további szabályozásához használja az AKS alkalmazás-útválasztási bővítményét. További információ az alkalmazás-útválasztási bővítményről: Felügyelt NGINX-bejövő forgalom az alkalmazás-útválasztási bővítményrel.