全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan instans ELB untuk mengekspos Layanan di beberapa wilayah

更新时间:Dec 23, 2025

Dalam kluster Kubernetes, Layanan digunakan untuk mengekspos Pod ke akses eksternal guna memisahkan front end dan backend, sehingga memungkinkan penerapan arsitektur layanan mikro yang longgar terikat. Pada kluster ACK Edge, Layanan LoadBalancer biasanya digunakan untuk mengekspos aplikasi. Topik ini menjelaskan cara menggunakan instans Edge Load Balancer (ELB) untuk mengekspos Layanan yang dideploy di kelompok node Edge Node Service (ENS) di beberapa wilayah.

Pendahuluan

Kelompok node dalam kluster ACK Edge terdiri atas kelompok node cloud dan kelompok node edge. Di kluster ACK Edge, Anda dapat menggunakan Layanan LoadBalancer untuk mengekspos aplikasi yang dideploy baik di kelompok node cloud maupun kelompok node edge.

Pada topik ini, Layanan ELB digunakan untuk mengekspos aplikasi yang dideploy di kelompok node edge. Pada gambar berikut, lapisan kontrol kluster ACK Edge dideploy di virtual private cloud (VPC). Anda dapat menghubungkan sumber daya komputasi dari pusat data di jaringan berbeda ke cloud dan menggunakan Layanan LoadBalancer untuk mengekspos sekelompok aplikasi di wilayah yang berbeda—artinya, satu Layanan LoadBalancer dipetakan ke titik akhir di beberapa pusat data.

Pada contoh ini, kelompok node ENS dibuat di wilayah China (Hefei) dan China (Chengdu). Instans ELB digunakan untuk mendistribusikan permintaan dari aplikasi di kedua wilayah tersebut.

image

Kluster ACK Edge memungkinkan Anda membuat resource kluster kustom bernama PoolServices. Komponen edge-controller-manager (ECM) secara otomatis memilih PoolService yang dikelola oleh kelompok node berdasarkan Layanan LoadBalancer yang Anda buat, lalu mengikat siklus hidup instans Server Load Balancer (SLB) di wilayah yang sama ke PoolService tersebut.

Perhatian

  • ECM hanya mengonfigurasi instans SLB untuk Layanan dengan tipe Type=LoadBalancer. Versi ECM harus 2.1.0 atau lebih baru.

  • Instans ELB yang dikelola oleh ECM diberi nama dalam format k8s/${Service_Name}/${Service_Namespace}/${NodePool_Id}/${Cluster_Id}. Hindari penggunaan nama duplikat untuk mencegah penghapusan tidak sengaja terhadap instans ELB dengan nama yang sama.

  • Alamat Elastic IP (EIP) yang dikelola oleh ECM diberi nama dalam format k8s/${Service_Name}/${Service_Namespace}/${NodePool_Id}/${Cluster_Id}. Hindari penggunaan nama duplikat untuk mencegah penghapusan tidak sengaja terhadap EIP dengan nama yang sama.

  • Untuk membuat beberapa Layanan yang berbagi satu instans ELB, Anda harus memilih EIP dan instans ELB yang dikelola sendiri. Selain itu, tipe kebijakan traffic eksternal harus diatur ke Cluster.

  • Disarankan agar Anda membuat jaringan edge, membuat instans ENS tanpa elastic network interfaces (ENIs) yang ditetapkan, lalu menggunakan instans ELB untuk mengekspos instans ENS tersebut. Untuk mengaktifkan akses Internet pada instans ENS, Anda dapat menetapkan EIP ke instans ENS atau mengonfigurasi NAT.

  • Instans ELB juga diperlukan jika Anda membuat instans ENS yang ditetapkan ENIs. Dalam kasus ini, Anda harus menambahkan aturan routing ke jaringan host instans ENS tersebut.

    # Pada contoh ini, 10.0.0.3 menunjukkan pengontrol antarmuka jaringan internal, dan 10.0.0.1 menunjukkan alamat gateway internal.
    ip rule add from 10.0.0.3 lookup 4
    ip route add default via 10.0.0.1 table 4

Langkah 1: Deploy aplikasi

Pada contoh ini, aplikasi bernama cube dideploy pada setiap node di kelompok node ENS.

  1. File YAML berikut membuat DaemonSet:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: cube
      labels:
        app: cube
    spec:
      selector:
        matchLabels:
          app: cube 
      template:
        metadata:
          labels:
            app: cube
        spec:
          containers:
          - name: cube
            image: registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0
            ports:
            - containerPort: 80 #Ekspos port.
  2. Deploy aplikasi.

    kubectl apply -f cube.yaml
  3. Kueri status aplikasi.

    kubectl get ds cube

    Output yang diharapkan:

    NAME   DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    cube   4         4         4       4            4           <none>          3d1h

Langkah 2: Tambahkan anotasi atribut dan label Layanan ke semua kelompok node

Anda harus menambahkan anotasi atribut dan label Layanan ke semua kelompok node ENS di edge. Pada contoh ini, lakukan operasi berikut pada kelompok node ENS di wilayah China (Hefei) dan China (Chengdu).

  1. Ambil nama kelompok node.

    kubectl get nodepool
  2. Tambahkan ID jaringan.

    kubectl annotate nodepool np-xxx alibabacloud.com/ens-network-id=n-xxx 
  3. Tambahkan ID node ENS (ID VPC).

    kubectl annotate nodepool np-xxx alibabacloud.com/ens-region-id=cn-xxx-xxx
  4. Tambahkan ID vSwitch.

    kubectl annotate nodepool np-xxx alibabacloud.com/ens-vswitch-id=vsw-xxx,vsw-xxx
  5. Tambahkan label Layanan.

    kubectl label nodepool np-xxx k8s-svc=cube

Langkah 3: Gunakan Layanan ELB multi-wilayah untuk mengekspos aplikasi

Penting
  • Saat membuat Layanan, atur tipe Layanan ke type: LoadBalancer.

  • Untuk membuat Layanan ELB, Anda harus mengatur tipe LoadBalancer ke loadBalancerClass: alibabacloud.com/elb.

Anda dapat menggunakan instans ELB yang sudah ada untuk mengekspos aplikasi. Jika tidak tersedia, Anda dapat menggunakan instans ELB yang dibuat secara otomatis.

Kebijakan pembaruan ELB bervariasi tergantung pada metode yang digunakan untuk mengekspos aplikasi. Untuk informasi selengkapnya, lihat kebijakan pembaruan ELB.

Gunakan Layanan ELB multi-wilayah yang dibuat otomatis untuk mengekspos aplikasi

Penting

Operasi berikut akan menghapus instans ELB dan EIP yang dibuat secara otomatis. Lakukan dengan hati-hati.

  • Jika Anda menghapus Layanan ELB, instans ELB yang sesuai dengan semua kelompok node akan dihapus.

  • Jika Anda menghapus kelompok node, instans ELB yang sesuai juga akan dihapus.

  • Memperbarui selector kelompok node pada Layanan juga akan menghapus instans ELB yang sesuai dengan kelompok node yang tidak lagi sesuai dengan selector tersebut.

  • Jika Anda memperbarui label kelompok node, kelompok node tersebut mungkin gagal sesuai dengan selector kelompok node pada Layanan, sehingga instans ELB yang sesuai akan dihapus.

  1. Buat file bernama cube-svc.yaml dan tambahkan konten YAML berikut ke file tersebut:

    apiVersion: v1
    kind: Service
    metadata:
      name: cube-svc
      labels:
        app: cube
      annotations:
        openyurt.io/topologyKeys: openyurt.io/nodepool            #Aktifkan fitur topologi Layanan.
        service.openyurt.io/nodepool-labelselector: k8s-svc=cube  #Pilih kelompok node ENS. 
    spec:
      selector:
        app: cube
      type: LoadBalancer
      loadBalancerClass: alibabacloud.com/elb
      externalTrafficPolicy: Local
      ports:
      - name: cube
        port: 80
        protocol: TCP
        targetPort: 80
  2. Deploy Layanan bernama cube-svc dan gunakan Layanan tersebut untuk mengekspos aplikasi.

    kubectl apply -f cube-svc.yaml
  3. Konfirmasi bahwa Layanan cube-svc telah dibuat.

    kubectl get cube-svc

    Output yang diharapkan:

    NAME           TYPE           CLUSTER-IP        EXTERNAL-IP                    PORT(S)        AGE
    cube-svc       LoadBalancer   192.168.xxx.xxx   39.106.XX.XX,144.121.XX.XX     80:30081/TCP   5m
  4. Akses aplikasi.

    Catatan

    Ganti <YOUR-External-IP> dengan EXTERNAL-IP yang dikembalikan pada langkah sebelumnya.

    curl http://<YOUR-External-IP>:80  

Gunakan Layanan ELB multi-wilayah yang sudah ada untuk mengekspos aplikasi

  1. Buat file bernama cube-svc dan tambahkan konten YAML berikut ke file tersebut:

    apiVersion: v1
    kind: Service
    metadata:
      name: cube-svc
      labels:
        app: cube
      annotations:
        openyurt.io/topologyKeys: openyurt.io/nodepool             #Aktifkan fitur topologi Layanan.
        service.openyurt.io/nodepool-labelselector: k8s-svc=cube   #Pilih kelompok node ENS. 
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user: "true" #Mount Layanan ke load balancer yang dikelola sendiri.
    spec:
      selector:
        app: cube
      type: LoadBalancer
      loadBalancerClass: alibabacloud.com/elb
      externalTrafficPolicy: Local
      ports:
      - name: cube
        port: 80
        protocol: TCP
        targetPort: 80
  2. Deploy Layanan bernama cube-svc dan gunakan Layanan tersebut untuk mengekspos aplikasi.

    kubectl apply -f cube-svc.yaml
  3. Kueri PoolServices yang dibuat secara otomatis.

    kubectl get ps 

    Output yang diharapkan:

    NAME                             AGE
    cube-svc-np-heifei               32s
    cube-svc-np-chengdu              32s
  4. Tentukan instans ELB yang sudah ada untuk PoolService di setiap wilayah.

    Pada contoh ini, instans ELB yang sudah ada ditentukan untuk setiap PoolService di wilayah China (Hefei) dan China (Chengdu).

    • Tentukan instans ELB yang sudah ada untuk kelompok node di wilayah China (Hefei).

      kubectl annotate ps cube-svc-np-heifei  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id=lb-xxx
    • Tentukan instans ELB yang sudah ada untuk kelompok node di wilayah China (Chengdu).

      kubectl annotate ps cube-svc-np-chengdu service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id=lb-xxx
  5. Konfirmasi bahwa Layanan cube-svc telah dibuat.

    kubectl get cube-svc

    Output yang diharapkan:

    NAME           TYPE           CLUSTER-IP        EXTERNAL-IP                    PORT(S)        AGE
    cube-svc       LoadBalancer   192.168.xxx.xxx   39.106.XX.XX,144.121.XX.XX     80:30081/TCP   5m
  6. Akses aplikasi.

    Catatan

    Ganti <YOUR-External-IP> dengan EXTERNAL-IP yang dikembalikan pada langkah sebelumnya.

    curl http://<YOUR-External-IP>:80

Kebijakan pembaruan ELB

Objek Sumber Daya

Instans ELB yang dikelola oleh Anda (instans ELB yang dibuat manual)

Instans ELB yang dikelola oleh ECM (instans ELB yang dibuat otomatis)

Atribut ELB

  • Buat: Anda harus menentukan selector kelompok node dan ID instans ELB. Tambahkan anotasi berikut:

    • service.openyurt.io/nodepool-labelselector

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user

  • Perbarui: Atribut instans ELB tidak dapat diperbarui.

  • Hapus: Instans ELB tidak dapat dilepas secara otomatis.

  • Buat: Anda harus menentukan selector kelompok node. Tambahkan anotasi berikut:

    service.openyurt.io/nodepool-labelselector

  • Perbarui: Atribut instans ELB tidak dapat diperbarui.

  • Hapus: Instans ELB tidak dapat dihapus secara otomatis.

Kelompok server backend

  • Buat: Kelompok server backend diperbarui berdasarkan status Layanan dan Pod.

  • Perbarui: Dalam mode lokal, server backend ditambahkan atau dihapus secara dinamis.

  • Hapus: Kelompok server backend instans ELB tidak dapat dihapus secara otomatis. Anda perlu menghapusnya secara manual.

  • Buat: Kelompok server backend diperbarui berdasarkan status Layanan dan Pod.

  • Perbarui: Dalam mode lokal, server backend ditambahkan atau dihapus secara dinamis.

  • Hapus: Semua kelompok server backend dihapus secara otomatis.

Pendengar

  • Buat: Pendengar ditambahkan secara otomatis berdasarkan spec.Ports dari Layanan.

  • Perbarui: Pendengar ditambahkan, diperbarui, dan dihapus secara otomatis berdasarkan perubahan port Layanan.

  • Hapus: Port pendengar tidak dihapus secara otomatis. Anda perlu menghapusnya secara manual.

  • Buat: Pendengar ditambahkan secara otomatis berdasarkan spec.Ports dari Layanan.

  • Perbarui: Pendengar ditambahkan, diperbarui, dan dihapus secara otomatis berdasarkan perubahan port Layanan.

  • Hapus: Semua pendengar dihapus secara otomatis.

Atribut EIP

  • Buat: EIP tidak dapat dibuat secara otomatis. Anda perlu mengelola EIP secara manual.

  • Perbarui: Atribut EIP tidak dapat diperbarui.

  • Hapus: EIP tidak dapat dihapus secara otomatis.

  • Buat: EIP dibuat secara otomatis di wilayah instans ELB.

  • Perbarui: Bandwidth EIP dapat ditingkatkan atau diturunkan.

  • Hapus: EIP dapat dihapus secara otomatis.

Referensi