Megosztás a következőn keresztül:


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

  2. 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    
    
  3. 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.

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

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

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