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
Először határozza meg, hogy az AKS-fürt milyen típusú felügyelt identitást használ, rendszer által hozzárendelt vagy felhasználó által hozzárendelt. Ha nem biztos benne, hívja meg az az aks show parancsot és lekérdezést az identitás típustulajdonságához.
az aks show \ --name myAKSCluster \ --resource-group myResourceGroup \ --query identity.type \ --output tsv
Ha a fürt felügyelt identitást használ, a típustulajdonság értéke SystemAssigned vagy UserAssigned lesz.
Ha a fürt szolgáltatásnevet használ, a típustulajdonság értéke null lesz. Fontolja meg a fürt felügyelt identitás használatára való frissítését.
Ha az AKS-fürt rendszer által hozzárendelt felügyelt identitást használ, a következőképpen kérdezheti le a felügyelt identitás egyszerű azonosítóját:
# Get the principal ID for a system-assigned managed identity. CLIENT_ID=$(az aks show \ --name myAKSCluster \ --resource-group myNetworkResourceGroup \ --query identity.principalId \ --output tsv)
Ha az AKS-fürt felhasználó által hozzárendelt felügyelt identitást használ, akkor az egyszerű azonosító null értékű lesz. A felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójának lekérdezése:
# Get the client ID for a user-assigned managed identity. CLIENT_ID=$(az aks show \ --name myAKSCluster \ --resource-group myNetworkResourceGroup \ --query identity.userAssignedIdentities.*.clientId \ --output tsv
Delegált engedélyek hozzárendelése a nyilvános IP-cím erőforráscsoportja számára az AKS-fürt által használt felügyelt identitáshoz a
az role assignment create
parancs meghívásával.# Get the resource ID for the node resource group. RG_SCOPE=$(az group show \ --name <node resource group> \ --query id \ --output tsv) # Assign the Network Contributor role to the managed identity, # scoped to the node resource group. 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.
Azure Kubernetes Service