Tüm Ürünler
Search
Belge Merkezi

Container Compute Service:Expose an application by using a LoadBalancer Service

Son Güncelleme:Oct 08, 2026

cloud-controller-manager (CCM) bileşeni, türü LoadBalancer olan bir hizmet için otomatik olarak bir yük dengeleyici oluşturur ve yönetir. Yük dengeleyici bir Classic Load Balancer (CLB) veya Network Load Balancer (NLB) olabilir. Bu konuda, LoadBalancer hizmeti kullanarak bir uygulamanın nasıl dışa açılacağını göstermek için örnek olarak bir Nginx uygulaması kullanılır.

Notlar

  • CCM, yalnızca Type=LoadBalancer türündeki bir hizmet için yük dengeleyici yapılandırır. Diğer hizmet türleri için yük dengeleyici yapılandırmaz.

  • Önemli

    Bir hizmetin türünü Type=LoadBalancer türünden Type!=LoadBalancer türüne değiştirirseniz CCM, yük dengeleyiciye eklenen yapılandırmaları siler. Bu durumda hizmet yük dengeleyici üzerinden erişilemez hale gelir.

  • CCM bildirimsel bir API kullanır ve yük dengeleyici yapılandırmasını hizmet tanımına göre otomatik olarak uzlaştırır. Server Load Balancer (SLB) konsolunda yapılan manuel değişikliklerin üzerine yazılabilir.

    Önemli

    Kubernetes tarafından yönetilen bir yük dengeleyicinin yapılandırmasını Server Load Balancer (SLB) konsolunda manuel olarak değiştirmeyin. Yaptığınız değişikliklerin üzerine yazılabilir ve bu durum hizmetin erişilemez hale gelmesine neden olabilir.

  • Mevcut bir LoadBalancer türü hizmet için yük dengeleyiciyi değiştiremezsiniz. Farklı bir yük dengeleyici kullanmak istiyorsanız yeni bir hizmet oluşturmanız gerekir.

Kotalar

Adım 1: Örnek bir uygulama dağıtın

Aşağıdaki adımlarda uygulamanın kubectl kullanılarak nasıl dağıtılacağı açıklanmaktadır.

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

    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    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     # The value must match the selector of the Service that is used to expose this application.
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest     # Replace this with the actual image address in the format: <image_name:tags>.
            ports:
            - containerPort: 80                                # This port must be exposed in the Service.
  2. my-nginx uygulamasını dağıtın.

    kubectl apply -f my-nginx.yaml
  3. Uygulamanın çalıştığını doğrulayın.

    kubectl get deployment my-nginx

    Örnek çıktı:

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

Adım 2: LoadBalancer hizmeti kullanarak uygulamayı dışa açın

LoadBalancer hizmeti oluşturmak ve bir uygulamayı dışa açmak için konsolu ve kubectl kullanabilirsiniz.

Konsol

  1. ACS konsolunda oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.

  2. Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Network > Services seçeneklerini seçin.

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

  4. Create Service iletişim kutusunda hizmet parametrelerini ayarlayın.

  5. Parametre

    Açıklama

    Örnek

    Name

    Hizmet için bir ad girin.

    my-nginx-svc

    Service Type

    Bir hizmet türü seçin. Farklı istemci türleri ve erişim kaynakları için aşağıdaki ağ modları desteklenir:

    Cluster IP

    Bu tür öncelikle küme içindeki iletişim için kullanılır. Örnekler arasındaki hizmet keşfi yalnızca ClusterIP hizmetleri için desteklenir. Bir Headless Service kullanarak Kubernetes tarafından sağlanan varsayılan ClusterIP tabanlı hizmet keşfine ve yük dengelemeye güvenmeden diğer hizmet keşfi mekanizmalarıyla etkileşimde bulunabilirsiniz.

    LoadBalancer

    Bu tür, kümedeki uygulamaları dışa açmak için Alibaba Cloud Classic Load Balancer (CLB) ve Network Load Balancer (NLB) ile entegre olur. Bu mod, NodePort moduna kıyasla daha yüksek kullanılabilirlik ve performans sağlar.

    1. Hizmet türü olarak Server Load Balancer seçeneğini seçin.

    2. Yük dengeleyici türü olarak CLB seçeneğini seçin ve Create Resource seçeneğini belirleyin.

    3. Create CLB Instance açılır bölümünde ayarları gerektiği gibi düzenleyin. Billing Method değerini Pay-by-specification olarak ayarlayın.

    External Traffic Policy

    External Traffic Policy ayarını yalnızca Server Load Balancer değeri Server Load Balancer olarak ayarlandığında yapabilirsiniz.

    • Local: Trafik yalnızca trafiği alan düğümdeki Pod'lara yönlendirilir.

    • Cluster: Trafik kümedeki diğer düğümlerdeki Pod'lara iletilebilir.

    Local

    Backend

    Hizmete bağlanacak arka uç uygulamasını seçin. Bir dağıtımı ilişkilendirmezseniz sistem Endpoints nesneleri oluşturmaz. Daha fazla bilgi için bkz. services-without-selectors.

    Ad: app

    Değer: nginx

    Port Mapping

    Bir hizmet bağlantı noktası (hizmet YAML dosyasındaki port alanına karşılık gelir) ve bir konteyner bağlantı noktası (hizmet YAML dosyasındaki targetPort alanına karşılık gelir) ekleyin. Konteyner bağlantı noktası arka uç pod'u tarafından dışa açılan bağlantı noktasıyla eşleşmelidir.

    80

    Annotations

    Yük dengeleyici parametrelerini yapılandırmak için hizmete bir ek açıklama (Annotation) ekleyin. Daha fazla bilgi için bkz. Classic Load Balancer'ı (CLB) yapılandırmak için ek açıklamaları kullanma.

    Önemli

    Kümenin API Sunucusunun yük dengeleyici örneğini yeniden kullanmayın. Aksi takdirde kümeye erişilemeyebilir.

    Bu örnekte hizmetin faturalandırma yöntemi bant genişliğine göre ödeme olarak ayarlanmış ve trafiği kontrol etmek için bant genişliği 2 Mbit/s ile sınırlandırılmıştır. Ek açıklamalar aşağıdaki gibidir:

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

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

    Label

    Hizmeti tanımlamak için bir etiket ekleyin.

    Yok

kubectl

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

    Hizmet bildirimindeki selector alanının değerinin (bu örnekte app: nginx) arka uç Deployment'daki matchLabels alanının değeriyle eşleştiğinden emin olun. Bu işlem hizmeti arka uç Deployment ile ilişkilendirir.

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
  2. Hizmeti uygulayın:

    kubectl apply -f my-nginx-svc.yaml
  3. Hizmetin harici bir IP adresine sahip olduğunu onaylayı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:30471/TCP   5m
  4. Uygulamaya erişin:

    curl <YOUR-EXTERNAL-IP>    # Replace with the external IP from the previous step

    Beklenen çıktı:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    ...
    </html>