Tüm Ürünler
Search
Belge Merkezi

Container Compute Service:Expose an application with an existing load balancer

Son Güncelleme:Oct 08, 2026

Alibaba Cloud Server Load Balancer (SLB) tarafından dışa açılan bir Service, SLB alan adı veya <IP:Service Port> kullanılarak küme dışından; <Service Name:Service Port> kullanılarak ise küme içinden erişilebilir. Bu konu, mevcut bir yük dengeleyici kullanan bir Service aracılığıyla ACS kümesindeki bir uygulamanın nasıl dışa açılacağını Nginx uygulaması örneği üzerinden açıklar.

Önkoşullar

SLB konsolunda oluşturduğunuz bir SLB örneğinizin olması gerekir. Örnek, ACS kümesiyle aynı bölgede bulunmalıdır. Bu konuda internet yönlü Classic Load Balancer (CLB) örneği kullanılmıştır. Bir CLB örneğiniz yoksa CLB örnekleri oluşturma ve yönetme konusuna bakın.

Dikkat edilmesi gerekenler

SLB yeniden kullanım sınırlamaları

  • Yeniden kullanmak istediğiniz SLB örneği aşağıdaki gereksinimleri karşılamalıdır:

    • Yalnızca SLB konsolunda manuel olarak oluşturduğunuz SLB örneklerini yeniden kullanabilirsiniz. Cloud Controller Manager (CCM) tarafından otomatik olarak oluşturulan veya küme API sunucusu tarafından kullanılan örnekleri yeniden kullanamazsınız.

    • Bir ACS kümesinde intranet SLB örneğini yeniden kullanmak için SLB örneği ile ACS kümesi aynı sanal özel bulutta (VPC) olmalıdır.

    • SLB örneğinin adres türü, Service'in erişim türüyle eşleşmelidir:

      • Service Public Access sağlıyorsa (service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet" ek açıklamasıyla belirtilir), SLB örneğinin Address Type değeri Public Network olmalıdır.

      • Service internal access sağlıyorsa (service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" ek açıklamasıyla belirtilir), SLB örneğinin Address Type değeri Internal Network olmalıdır.

    • Birden fazla Service, aynı SLB örneğinde aynı dinleyici bağlantı noktasını kullanamaz.

    • Bir SLB örneğini kümeler arasında yeniden kullandığınızda, her kümede ad alanı ve Service adı kombinasyonunun benzersiz olduğundan emin olun.

  • CCM, yalnızca type: LoadBalancer türündeki bir Service için SLB örneği yapılandırır.

    Önemli

    type: LoadBalancer türündeki bir Service'i başka bir türe değiştirirseniz CCM, SLB örneğine eklenen yapılandırmaları siler. Bu durumda Service, SLB örneği üzerinden erişilemez hale gelir.

  • CCM, bildirime dayalı bir API kullanır ve belirli koşullar altında Service yapılandırmasına göre SLB yapılandırmasını otomatik olarak uzlaştırır. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true" ek açıklaması ayarlandığında SLB konsolunda manuel olarak değiştirdiğiniz yapılandırmaların üzerine yazılabilir.

    Önemli

    ACS tarafından yönetilen bir SLB örneğinin yapılandırmalarını SLB konsolunda manuel olarak değiştirmeyin. Aksi takdirde yapılandırmalar kaybolabilir ve Service erişilemez hale gelebilir.

  • Mevcut bir LoadBalancer hizmeti için SLB örneğini değiştiremezsiniz. SLB örneğini değiştirmek istiyorsanız yeni bir Service oluşturmanız gerekir.

SLB kota sınırlamaları

  • CCM, her Type=LoadBalancer Service için bir SLB örneği oluşturur. Varsayılan kota 60 CLB ve 60 NLB örneğidir. Bu kotayı artırmak için Kota Merkezi konsolunda oturum açıp başvuru gönderin.

  • CCM, Service yapılandırmasına göre ECS örneklerini veya Elastic Network Interface'leri (ENI) SLB arka uç sunucu grubuna ekler ve hedefPort başına ayrı bir sunucu grubu oluşturur. Kota sınırlamaları:

    • Arka uç sunucu sayısı: Bir CLB örneği en fazla 200 arka uç sunucuyu destekler; bir NLB örneği ise en fazla 400 ECS, ENI veya IP tabanlı sunucuyu destekler. Kota formülü: arka uç sunucuları × targetPorts. Kotayı artırmak için önceden Kota Merkezi konsolunda oturum açıp başvuru gönderin.

    • Örnek başına sunucu grubu ekleri: Bir ECS örneği veya ENI, en fazla 50 CLB arka uç sunucu grubuna ve 200 NLB arka uç sunucu grubuna eklenebilir. Bu sınırı artırmak için Kota Merkezi konsolunda oturum açıp başvuru gönderin.

    • Aşamalı güncellemeler sırasında ek kota: Eski pod'lar yok edilmeden önce yeni pod'lar oluşturulur ve bu durum beklenenden fazla kota tüketimine neden olabilir. Yeterli kotayı önceden ayırtın.

  • CCM, Service bağlantı noktalarına göre dinleyiciler oluşturur. Varsayılan sınır, CLB veya NLB örneği başına 50 dinleyicidir. Daha fazlasını eklemek için Kota Merkezi konsolunda oturum açıp başvuru gönderin.

  • CLB sınırları ve NLB sınırları konularına bakın.

    SLB kotalarını Server Load Balancer kota yönetimi sayfasında sorgulayabilirsiniz.

Adım 1: Örnek bir uygulama dağıtma

Aşağıdaki adımlar uygulamanın kubectl kullanılarak nasıl dağıtılacağını gösterir.

  1. Cloud Shell'de kubectl kullanarak kümenize bağlanma.

  2. Aşağıdaki içeriğe sahip my-nginx.yaml adlı bir dosya oluşturun.

    YAML içeriğini görüntüle

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-nginx                 # The name of the sample application.
      labels:
        app: nginx
    spec:
      replicas: 3                    # The number of replicas.
      selector:
        matchLabels:
          app: nginx                 # This value must match the selector in the Service manifest to expose the application.
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80        # This port must be exposed in the Service.
  3. my-nginx örnek uygulamasını dağıtmak için aşağıdaki komutu çalıştırın.

    kubectl apply -f my-nginx.yaml
  4. Uygulamanın çalıştığını doğrulamak için aşağıdaki komutu çalıştırın.

    kubectl get deployment my-nginx

    Beklenen çıktı:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    my-nginx   3/3     3            3           50s

Adım 2: Uygulamayı Service ile dışa açma

Uygulamayı dışa açmak için konsol veya kubectl kullanarak bir LoadBalancer hizmeti oluşturabilirsiniz.

Konsol

  1. ACS konsoluna giriş yapın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.

  2. Clusters sayfasında hedef kümenin adına tıklayın. Sol gezinme bölmesinde Network > Services seçeneğini belirleyin.

  3. Services sayfasında sol üst köşede bulunan Create seçeneğine tıklayın.

  4. Create Service iletişim kutusunda Service parametrelerini yapılandırın.

    Parametre

    Açıklama

    Örnek

    Name

    Service için bir ad girin.

    my-nginx-svc

    Service Type

    Service türünü seçin. Bu seçenek Service'e nasıl erişileceğini belirler.

    Create Service:

    • Service Type: LoadBalancer

    • SLB Type: CLB

    • Select Resource: Use Existing Resource

    • Create port listener: Selected

    Backend

    Bir iş yükü ilişkilendirmezseniz Endpoints nesnesi oluşturulmaz ancak bunu manuel olarak bağlayabilirsiniz. Daha fazla bilgi için Seçicisiz hizmetler konusuna bakın.

    + Reference Workload Label seçeneğine tıklayıp my-nginx seçin:

    • Name: app

    • Value: nginx

    Port Mapping

    Bir service portu (Service YAML dosyasındaki port alanı) ve bir konteyner portu (Service YAML dosyasındaki targetPort alanı) ekleyin. Konteyner portu, arka uç Pod'u tarafından dışa açılan portla eşleşmelidir.

    • Service Port: 80

    • Container Port: 80

    • Protocol: TCP

    Annotations

    Yük dengeleyici için parametreleri yapılandırmak üzere Service'e bir ek açıklama ekleyin. Daha fazla bilgi için Classic Load Balancer (CLB) örneklerini yapılandırmak için ek açıklamaları kullanma konusuna bakın.

    Bu örnekte Service trafiğini kontrol etmek için faturalama yöntemi bant genişliğine göre ödeme olarak ve bant genişliği sınırı 2 Mbit/s olarak ayarlanır.

    Faturalama yöntemini ayarlayın:

    • Name: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type

    • Value: paybybandwidth

    Bant genişliğini ayarlayın:

    • Name: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth

    • Value: 2

    Label

    Service'i tanımlamak için bir etiket ekleyin.

    Yok

  5. Create seçeneğine tıklayın. Services sayfasında yeni oluşturulan Service'i görüntüleyebilirsiniz.

  6. External IP sütunundaki IP adresini (örneğin 39.106.XX.XX:80) kullanarak örnek uygulamaya erişin.

    Uygulamaya eriştikten sonra Welcome to nginx! sayfası görüntülenir. Bu durum Nginx hizmetinin dağıtıldığını ve beklendiği gibi çalıştığını gösterir.

kubectl

  1. Aşağıdaki içeriğe sahip my-nginx-svc.yaml adlı bir dosya oluşturun.

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id ek açıklamasının değerini güncelleyin. ${YOUR_LB_ID} yerine SLB konsolunda oluşturduğunuz SLB örneğinin ID'sini girin.

    • Varsayılan olarak mevcut bir SLB örneğinin yeniden kullanılması dinleyicilerini oluşturmaz veya üzerine yazmaz. Gerekirse service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners ek açıklamasını true olarak ayarlayın. Bu örnekte SLB örneği yeni oluşturulmuştur ve bir dinleyici gerektirdiğinden değer true olarak ayarlanır. Daha fazla bilgi için Classic Load Balancer (CLB) örneklerini yapılandırmak için ek açıklamaları kullanma konusuna bakın.

    • Service'i arka uç uygulamasıyla ilişkilendirmek için selector değerini my-nginx.yaml dosyasındaki matchLabels değeri olan app: nginx olarak ayarlayın.

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${YOUR_LB_ID} 
        service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
  2. my-nginx-svc Service'ini oluşturmak ve uygulamayı dışa açmak için aşağıdaki komutu çalıştırın.

    kubectl apply -f my-nginx-svc.yaml
  3. LoadBalancer hizmetinin oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın.

    kubectl get svc my-nginx-svc

    Beklenen çıktı:

    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
    my-nginx-svc   LoadBalancer   172.21.5.82   39.106.XX.XX     80/TCP         5m
  4. Uygulamaya erişmek için curl <YOUR-External-IP> komutunu çalıştırın. <YOUR-External-IP> yer tutucusunu önceki adımdaki EXTERNAL-IP değeriyle değiştirin.

    curl 39.106.XX.XX

    Beklenen çıktı:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>