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

  1. Hozzon létre egy Azure-erőforráscsoportot a az group create paranccsal.

    az group create --name myNetworkResourceGroup --location eastus
    
  2. 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

  1. Kérje le a csomópont erőforráscsoportjának nevét a az aks show tulajdonság parancsával és lekérdezésével nodeResourceGroup .

    az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv
    
  2. 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.

  3. 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 a ipAddress.

    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

  1. 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.

  2. 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álhatja service.beta.kubernetes.io/azure-pip-name a nyilvános IP-címet, vagy használhatja service.beta.kubernetes.io/azure-load-balancer-ipv4 egy IPv4-címhez és service.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.

  3. Á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.coma 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
    
  4. Hozza létre a szolgáltatást és az üzembe helyezést a kubectl apply paranccsal.

    kubectl apply -f load-balancer-service.yaml
    
  5. 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 Annotationskö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 Eventskö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.