Azure Kubernetes Service (AKS) yük dengeleyici ile statik genel IP adresi ve DNS etiketi kullanma

Azure Kubernetes Service (AKS) kümesinde yük dengeleyici kaynağı oluşturduğunuzda, kendisine atanan genel IP adresi yalnızca bu kaynağın kullanım ömrü için geçerlidir. Kubernetes hizmetini silerseniz ilişkili yük dengeleyici ve IP adresi de silinir. Belirli bir IP adresi atamak veya yeniden dağıtılan Kubernetes hizmetleri için bir IP adresi tutmak istiyorsanız, statik bir genel IP adresi oluşturabilir ve kullanabilirsiniz.

Bu makalede statik genel IP adresi oluşturma ve Bunu Kubernetes hizmetinize atama gösterilmektedir.

Başlamadan önce

  • Azure CLI sürüm 2.0.59 veya üzerinin yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemek veya yükseltmek için bkz. Azure CLI yükleme.
  • Bu makale, Standart SKU yük dengeleyici ile Standart SKU IP'sini kullanmayı kapsar. Daha fazla bilgi için bkz. Azure'da IP adresi türleri ve ayırma yöntemleri.

AKS kümesi oluşturma

  1. komutunu kullanarak az group create bir Azure kaynak grubu oluşturun.

    az group create --name myNetworkResourceGroup --location eastus
    
  2. komutunu kullanarak az aks create bir AKS kümesi oluşturun.

    az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
    

Statik IP adresi oluşturma

  1. az aks show komutunu ve nodeResourceGroup özelliğini sorgulayarak düğüm kaynak grubunun adını alın.

    az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv
    
  2. komutunu kullanarak az network public-ip create düğüm kaynak grubunda statik bir genel IP adresi oluşturun.

    az network public-ip create \
        --resource-group <node resource group name> \
        --name myAKSPublicIP \
        --sku Standard \
        --allocation-method static
    

    Önemli

    AKS artık Basic Load Balancer'ı desteklemiyor. Kümeniz Temel Load Balancer kullanıyorsa, statik bir genel IP adresi yapılandırmadan önce Standart Load Balancer'e yükseltin.

  3. komutunu kullanarak az network public-ip show statik genel IP adresini alın. Düğüm kaynak grubunun adını ve oluşturduğunuz genel IP adresini belirtin ve ipAddress için sorgulama yapın.

    az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
    

Statik IP adresiyle kubernetes hizmeti oluşturma

  1. adlı load-balancer-service.yaml bir dosya oluşturun ve aşağıdaki YAML dosyasının içeriğine kopyalayın. Statik IP adresi oluşturma bölümünde oluşturduğunuz genel IP kaynağı adını (myAKSPublicIP) ve düğüm kaynak grubu adını belirtin.

    AKS denetim düzlemi kimliği, varsayılan olarak düğüm kaynak grubunda Katkıda Bulunan izinlerine sahiptir; bu nedenle, bu makalede oluşturduğunuz genel IP adresi ek bir rol ataması gerektirmez. Farklı bir kaynak grubunda gelen veya giden genel IP kullanıyorsanız, denetim düzlemi kimliğine bu kaynak grubu üzerinde gerekli izinleri verin. Daha fazla bilgi için bkz. AKS'de yönetilen kimlikler.

    Önemli

    loadBalancerIP Bir Kubernetes hizmet bildirimindeki özellik, yukarı akış Kubernetes'in ardından kullanım dışı bırakılmıştır. Mevcut hizmetler değişiklik yapmadan çalışmaya devam eder, ancak bunun yerine hizmet ek açıklamalarını kullanır.

    Açıklama Purpose
    service.beta.kubernetes.io/azure-pip-name Genel IP kaynağı adını belirtin.
    service.beta.kubernetes.io/azure-load-balancer-ipv4 Bir IPv4 adresi belirtin.
    service.beta.kubernetes.io/azure-load-balancer-ipv6 Bir IPv6 adresi belirtin.
    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
    

    Note

    Ek açıklamanın service.beta.kubernetes.io/azure-pip-name eklenmesi en verimli LoadBalancer oluşturma işlemini sağlar ve olası azaltmayı önlemek için kesinlikle önerilir.

  2. Hizmet ek açıklamasını kullanarak service.beta.kubernetes.io/azure-dns-label-name hizmete genel kullanıma yönelik bir DNS etiketi ayarlayın. Bu, Azure'un genel DNS sunucularını ve en üst düzey etki alanını kullanarak hizmetiniz için tam nitelikli etki alanı adı (FQDN) yayımlar. Azure konumu içinde açıklama değeri benzersiz olmalıdır, bu nedenle yeterli derecede açıklayıcı bir etiket kullanmanızı öneririz. Azure, seçtiğiniz konuma otomatik olarak varsayılan bir sonek ekler; örneğin <location>.cloudapp.azure.com, sağladığınız ada FQDN'yi oluşturur.

    Note

    Hizmeti kendi etki alanınızda yayımlamak istiyorsanız bkz. Azure DNS ve dış dns projesi.

    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
    
  3. Hizmeti oluşturmadan önce, kümenizde app: azure-load-balancer etiketini kullanan podlara sahip bir iş yükü bulunduğundan emin olun. Hizmet bildirimi bu etikete sahip podları seçer ancak dağıtım oluşturmaz.

  4. komutunu kullanarak kubectl apply hizmeti oluşturun.

    kubectl apply -f load-balancer-service.yaml
    
  5. Hizmetin en az bir hazır ve çalışan pod seçtiğini doğrulayın.

    kubectl get pods -l app=azure-load-balancer
    
  6. Yük dengeleyicinizin DNS etiketini görmek için komutunu kullanın kubectl describe .

    kubectl describe service azure-load-balancer
    

    DNS etiketi, aşağıdaki sıkıştırılmış örnek çıktıda gösterildiği gibi altında Annotationslistelenir:

    Name:                    azure-load-balancer
    Namespace:               default
    Labels:                  <none>
    Annotations:             service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
    

Sorun giderme

Bu bölümde Statik IP adresi oluşturma bölümünü tamamladığınız, Statik IP adresiyle Kubernetes hizmeti oluşturma ve çalışan bir AKS kümesine sahip olmanız adımlarını denediğiniz varsayılır. Düğüm kaynak grubunun adını elde etmek için az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv kullanın.

service.beta.kubernetes.io/azure-pip-name ek açıklamasında belirtilen genel IP kaynağı, service.beta.kubernetes.io/azure-load-balancer-resource-group tarafından belirtilen kaynak grubunda yoksa veya AKS denetim düzlemi kimliği bu kaynak grubuna erişemiyorsa, yük dengeleyici hizmetinin oluşturulması başarısız olur. Sorun gidermek için kubectl describe komutunu kullanarak hizmet açıklamalarını ve oluşturma olaylarını gözden geçirin. Aşağıdaki örnekte gösterildiği gibi YAML bildiriminde belirtilen hizmetin adını belirtin:

kubectl describe service azure-load-balancer

Çıkışta Kubernetes hizmet kaynağıyla ilgili bilgiler gösterilir. Aşağıdaki örnek çıktı, Events içinde bir user supplied IP address was not found gösterir: "Warning." Bu senaryoda, azure-pip-name ek açıklamasının statik genel IP kaynağının adıyla ve azure-load-balancer-resource-group ek açıklamasının ise onu içeren kaynak grubuyla eşleştiğinden emin olun.

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

Sonraki Adımlar

Uygulamalarınıza yönelik ağ trafiği üzerinde daha fazla denetim için AKS için uygulama yönlendirme eklentisini kullanın. Uygulama yönlendirme eklentisi hakkında daha fazla bilgi için bkz. Uygulama yönlendirme eklentisiyle yönetilen NGINX girişi.