Membuat load balancer eksternal berbasis layanan backend


Halaman ini menunjukkan cara men-deploy Layanan LoadBalancer eksternal yang membuat Load Balancer Jaringan passthrough eksternal berbasis layanan backend. Sebelum membaca halaman ini, pastikan Anda memahami hal-hal berikut:

Untuk mempelajari Load Balancer Jaringan passthrough eksternal secara umum lebih lanjut, lihat Load Balancer Jaringan passthrough eksternal berbasis layanan backend.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Persyaratan

  • Add-on HttpLoadBalancing harus diaktifkan di cluster Anda. Add-on ini diaktifkan secara default. Fungsi ini memungkinkan cluster mengelola load balancer yang menggunakan layanan backend.

  • Untuk membuat Layanan LoadBalancer eksternal yang menggunakan Load Balancer Jaringan passthrough Eksternal berbasis layanan backend, cluster GKE Anda harus menggunakan versi 1.25.5 atau yang lebih baru.

  • Untuk membuat Layanan LoadBalancer eksternal yang menggunakan load balancing berbobot, cluster GKE Anda harus menggunakan versi 1.31.0-gke.1506000 atau yang lebih baru.

  • Untuk membuat Service LoadBalancer eksternal yang menggunakan backend grup endpoint jaringan (NEG) GCE_VM_IP, cluster GKE Anda harus menggunakan versi 1.32.2-gke.1652000 atau yang lebih baru.

Memilih cluster

Anda dapat membuat cluster baru atau memilih cluster yang ada yang memenuhi persyaratan.

Buat cluster baru

Autopilot

Untuk membuat cluster Autopilot baru:

gcloud container clusters create-auto CLUSTER_NAME \
    --release-channel=RELEASE_CHANNEL \
    --cluster-version=VERSION \
    --location=COMPUTE_LOCATION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster baru.
  • RELEASE_CHANNEL: nama saluran rilis GKE untuk cluster.
  • VERSION: versi GKE untuk cluster.
  • COMPUTE_LOCATION: region Compute Engine cluster.

Untuk menonaktifkan pembuatan aturan firewall VPC otomatis untuk Layanan LoadBalancer, sertakan flag --disable-l4-lb-firewall-reconciliation. Untuk mengetahui informasi selengkapnya, lihat Aturan firewall yang dikelola pengguna untuk Layanan LoadBalancer GKE.

Standar

Untuk membuat cluster Standard baru:

gcloud container clusters create CLUSTER_NAME \
    --release-channel=RELEASE_CHANNEL \
    --cluster-version=VERSION \
    --location=COMPUTE_LOCATION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster baru.
  • RELEASE_CHANNEL: nama saluran rilis GKE untuk cluster.
  • VERSION: versi GKE untuk cluster.
  • COMPUTE_LOCATION: region Compute Engine cluster.

Untuk menonaktifkan pembuatan aturan firewall VPC otomatis untuk Layanan LoadBalancer, sertakan flag --disable-l4-lb-firewall-reconciliation. Untuk mengetahui informasi selengkapnya, lihat Aturan firewall yang dikelola pengguna untuk Layanan LoadBalancer GKE.

Mengupgrade cluster yang ada

Gunakan gcloud CLI untuk mengupdate cluster yang ada:

gcloud container clusters upgrade CLUSTER_NAME \
    --cluster-version=VERSION \
    --master \
    --location=COMPUTE_LOCATION

Ganti kode berikut:

Untuk menonaktifkan pembuatan aturan firewall VPC otomatis untuk Layanan LoadBalancer, sertakan flag --disable-l4-lb-firewall-reconciliation. Untuk mengetahui informasi selengkapnya, lihat Aturan firewall yang dikelola pengguna untuk Layanan LoadBalancer GKE.

Men-deploy sampel workload

Deploy contoh beban kerja berikut yang menyediakan Pod penayangan untuk Layanan LoadBalancer eksternal.

  1. Simpan contoh Deployment berikut sebagai store-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: store
    spec:
      replicas: 20
      selector:
        matchLabels:
          app: store
      template:
        metadata:
          labels:
            app: store
        spec:
          containers:
          - image: gcr.io/google_containers/echoserver:1.10
            imagePullPolicy: Always
            name: echoserver
            ports:
              - name: http
                containerPort: 8080
            readinessProbe:
              httpGet:
                path: /healthz
                port: 8080
                scheme: HTTP
    
  2. Terapkan manifes ke cluster:

    kubectl apply -f store-deployment.yaml
    
  3. Pastikan ada 20 Pod aktif untuk Deployment:

    kubectl get pods
    

    Outputnya mirip dengan hal berikut ini:

    NAME                     READY   STATUS    RESTARTS   AGE
    store-cdb9bb4d6-s25vw      1/1     Running   0          10s
    store-cdb9bb4d6-vck6s      1/1     Running   0          10s
    ....
    

Membuat Layanan LoadBalancer eksternal

  1. Ekspos contoh beban kerja dengan membuat Layanan LoadBalancer eksternal.

    1. Simpan manifes Service berikut sebagai store-v1-lb-svc.yaml:

      apiVersion: v1
      kind: Service
      metadata:
        name: store-v1-lb-svc
        annotations:
          cloud.google.com/l4-rbs: "enabled"
      spec:
        type: LoadBalancer
        selector:
          app: store
        ports:
        - name: tcp-port
          protocol: TCP
          port: 8080
          targetPort: 8080
      
    2. Terapkan manifes ke cluster:

      kubectl apply -f store-v1-lb-svc.yaml
      

    Perhatikan poin-poin berikut tentang manifes contoh ini:

    • Manifes Layanan harus menyertakan anotasi cloud.google.com/l4-rbs: "enabled" saat manifes pertama kali diterapkan ke cluster. Tindakan ini akan menginstruksikan GKE untuk membuat Load Balancer Jaringan passthrough eksternal berbasis layanan backend. Load Balancer Jaringan passthrough eksternal berbasis layanan backend diperlukan untuk mendukung fitur seperti IPv6 dan load balancing berbobot.

    • GKE menggunakan backend NEG GCE_VM_IP atau backend grup instance yang tidak dikelola, bergantung pada versi cluster. Di cluster dengan versi 1.32.2-gke.1652000, Load Balancer Jaringan passthrough eksternal berbasis layanan backend menggunakan NEG GCE_VM_IP. Pada versi sebelumnya, Load Balancer Jaringan passthrough eksternal berbasis layanan backend menggunakan grup instance tidak terkelola.

    • Jika Anda menambahkan anotasi cloud.google.com/l4-rbs: "enabled" ke manifes Layanan LoadBalancer eksternal yang sudah ada (yaitu, setelah load balancer dibuat), GKE akan mengabaikan anotasi tersebut. Layanan LoadBalancer Eksternal yang dibuat tanpa anotasi ini dalam manifesnya menggunakan Load Balancer Jaringan passthrough eksternal berbasis kumpulan target. Sebaiknya jangan gunakan Load Balancer Jaringan passthrough eksternal berbasis kumpulan target.

Mengaktifkan load balancing berbobot

Untuk mendistribusikan koneksi baru secara proporsional ke node berdasarkan jumlah Pod aktif, siap, dan tidak berhenti di setiap node, aktifkan load balancing berbobot dengan menambahkan anotasi networking.gke.io/weighted-load-balancing: "pods-per-node" ke manifes Layanan.

  1. Tambahkan anotasi networking.gke.io/weighted-load-balancing: "pods-per-node" ke manifes Layanan store-v1-lb-svc.yaml, dan pastikan Anda juga menetapkan externalTrafficPolicy: Local sehingga terlihat seperti ini:

    apiVersion: v1
    kind: Service
    metadata:
      name: store-v1-lb-svc
      annotations:
        cloud.google.com/l4-rbs: "enabled"
        networking.gke.io/weighted-load-balancing: "pods-per-node"
    spec:
      type: LoadBalancer
      externalTrafficPolicy: Local
      selector:
        app: store
      ports:
      - name: tcp-port
        protocol: TCP
        port: 8080
        targetPort: 8080
    
  2. Terapkan manifes ke cluster:

    kubectl apply -f store-v1-lb-svc.yaml
    

Perhatikan hal-hal berikut tentang contoh load balancing berbobot ini:

  • Manifes Layanan menggunakan externalTrafficPolicy: Local. Jika tidak perlu mengaktifkan load balancing berbobot, Anda juga dapat menggunakan externalTrafficPolicy: Cluster. Untuk mengetahui detail cara externalTrafficPolicy menentukan pengelompokan node, node mana yang lulus health check load balancer, dan cara paket diproses, lihat Konsep Layanan LoadBalancer.

  • Jika Anda mengaktifkan load balancing berbobot, GKE tidak mencegah Anda menggunakan externalTrafficPolicy: Cluster, tetapi externalTrafficPolicy: Cluster secara efektif menonaktifkan load balancing berbobot karena paket mungkin dirutekan, setelah load balancer, ke node yang berbeda.

Anda juga dapat mengaktifkan load balancing berbobot di Layanan LoadBalancer eksternal yang ada menggunakan kubectl edit svc service-name. Perintah kubectl edit akan membuka manifes Layanan load balancer yang ada di editor teks yang dikonfigurasi, tempat Anda dapat mengubah manifes dan menyimpan perubahan. Saat Anda mengedit Layanan LoadBalancer eksternal yang ada, perhatikan poin-poin berikut:

  • Layanan LoadBalancer eksternal yang ada harus menghasilkan pembuatan Load Balancer Jaringan passthrough eksternal berbasis layanan backend. Artinya, Service LoadBalancer eksternal yang ada harus menyertakan anotasi cloud.google.com/l4-rbs: "enabled" saat manifes pertama kali diterapkan ke cluster.

    Menambahkan anotasi networking.gke.io/weighted-load-balancing: "pods-per-node" ke Layanan LoadBalancer eksternal yang ada dan menggunakan Load Balancer Jaringan passthrough eksternal berbasis kumpulan target tidak akan berpengaruh.

  • Saat memperbarui manifes Layanan LoadBalancer eksternal yang ada, pastikan untuk menetapkan externalTrafficPolicy: Local. Menggunakan externalTrafficPolicy: Cluster secara efektif menonaktifkan load balancing berbobot karena paket mungkin dirutekan, setelah load balancer, ke node lain.

Menonaktifkan load balancing berbobot

Untuk mendistribusikan koneksi baru ke node, terlepas dari jumlah Pod penayangan yang ada di setiap node, nonaktifkan load balancing berbobot dengan menghapus anotasi networking.gke.io/weighted-load-balancing: "pods-per-node" dari manifes Layanan.

Memverifikasi Layanan LoadBalancer eksternal dan komponennya

  1. Pastikan Service Anda berjalan:

    kubectl get svc store-v1-lb-svc
    

    Outputnya mirip dengan berikut ini:

    NAME               TYPE           CLUSTER-IP        EXTERNAL-IP     PORT(S)          AGE
    store-v1-lb-svc   LoadBalancer   10.44.196.160     35.193.28.231   8080:32466/TCP   11m
    

    GKE menetapkan EXTERNAL_IP untuk Load Balancer Jaringan passthrough eksternal.

  2. Uji koneksi ke load balancer:

    curl EXTERNAL_IP:PORT
    

    Ganti kode berikut:

    • EXTERNAL_IP: alamat IP yang dialokasikan untuk Load Balancer Jaringan passthrough eksternal.
    • PORT: nomor port yang dialokasikan untuk Load Balancer Jaringan passthrough eksternal.

    Outputnya mirip dengan hal berikut ini:

    Hostname: store-v1-lb-svc-cdb9bb4d6-hflxd
    
    Pod Information:
      -no pod information available-
    
    Server values:
      server_version=nginx: 1.13.3 - lua: 10008
    
    Request Information:
      client_address=10.128.0.50
      method=GET
      real path=/
      query=
      request_version=1.1
      request_scheme=http
      request_uri=EXTERNAL_IP
    
    Request Headers:
      accept=*/*
      host=EXTERNAL_IP
      user-agent=curl/7.81.0
    
    Request Body:
      -no body in request-
    
    
  3. Periksa Layanan LoadBalancer dan kumpulan anotasinya yang menjelaskan resourceGoogle Cloud -nya:

    kubectl describe svc store-v1-lb-svc
    

    Outputnya mirip dengan hal berikut ini:

    Name:                     my-service-external
    Namespace:                default
    Labels:                   <none>
    Annotations:              cloud.google.com/l4-rbs: enabled
                              cloud.google.com/neg-status: {"network_endpoint_groups":{"0":"k8s2-qvveq1d8-default-my-service-ext-5s55db85"},"zones":["us-central1-c"]} #This annotation appears in the output only if the service uses NEG backends.
                              networking.gke.io/weighted-load-balancing: pods-per-node #This annotation appears in the output only if weighted load balancing is enabled.
                              service.kubernetes.io/backend-service: k8s2-qvveq1d8-default-my-service-ext-5s55db85
                              service.kubernetes.io/firewall-rule: k8s2-qvveq1d8-default-my-service-ext-5s55db85
                              service.kubernetes.io/firewall-rule-for-hc: k8s2-qvveq1d8-default-my-service-ext-5s55db85-fw
                              service.kubernetes.io/healthcheck: k8s2-qvveq1d8-default-my-service-ext-5s55db85
                              service.kubernetes.io/tcp-forwarding-rule: a808124abf8ce406ca51ab3d4e7d0b7d
    Selector:                 app=my-app
    Type:                     LoadBalancer
    IP Family Policy:         SingleStack
    IP Families:              IPv4
    IP:                       10.18.102.23
    IPs:                      10.18.102.23
    LoadBalancer Ingress:     35.184.160.229
    Port:                     tcp-port  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 tcp-port  31864/TCP
    Endpoints:                10.20.1.28:8080,10.20.1.29:8080
    Session Affinity:         None
    External Traffic Policy:  Local
    HealthCheck NodePort:     30394
    
    Events:
      Type    Reason                Age                    From                     Message
      ----    ------                ----                   ----                     -------
      Normal  ADD                   4m55s                  loadbalancer-controller  default/my-service-ext
    

    Ada beberapa kolom yang menunjukkan bahwa Load Balancer Jaringan passthrough eksternal berbasis layanan backend dan resource Google Cloud -nya berhasil dibuat:

    • Kolom Events. Kolom ini kosong saat LoadBalancer Service dan resource-nya berhasil dibuat. Jika terjadi, error akan dicantumkan di sini.
    • Daftar Annotations yang diaktifkan: GKE menambahkan daftar anotasi hanya baca berikut ke manifes Service. Setiap anotasi yang namanya diawali dengan service.kubernetes.io/ digunakan untuk menunjukkan nama resourceGoogle Cloud yang dibuat sebagai bagian dari atau untuk mendukung load balancer.

      • Anotasi networking.gke.io/weighted-load-balancing: pods-per-node menunjukkan bahwa load balancing berbobot telah diterapkan dan load balancer mendistribusikan traffic ke Pod backend berdasarkan jumlah Pod yang berjalan di setiap node.
      • Anotasi service.kubernetes.io/backend-service menunjukkan nama layanan backend load balancer.
      • Anotasi service.kubernetes.io/healthcheck menunjukkan nama health check load balancer yang digunakan oleh layanan backend.
      • Anotasi service.kubernetes.io/tcp-forwarding-rule atau service.kubernetes.io/udp-forwarding-rule menunjukkan nama aturan penerusan load balancer.
      • Anotasi service.kubernetes.io/firewall-rule menunjukkan nama aturan firewall yang dibuat untuk mengizinkan traffic ke node cluster. Rentang sumber untuk aturan firewall ini dapat disesuaikan menggunakan spec.loadBalancerSourceRanges[]. Guna mengetahui detail tambahan tentang aturan firewall untuk Layanan LoadBalancer, lihat Aturan firewall dan daftar alamat IP sumber yang diizinkan.
      • Anotasi service.kubernetes.io/firewall-rule-for-hc menunjukkan nama aturan firewall yang diperlukan untuk health check load balancer.
      • Anotasi cloud.google.com/neg-status menunjukkan NEG yang digunakan oleh load balancer dan zonanya. Anotasi ini hanya ada jika kedua hal berikut berlaku:

        • Cluster menjalankan GKE versi 1.32.2-gke.1652000 atau yang lebih baru saat manifes diterapkan ke cluster, dan
        • Anotasi cloud.google.com/l4-rbs: "enabled" ada dalam manifes Layanan saat diterapkan ke cluster.
  4. Verifikasi bahwa resource load balancer dan aturan firewall telah dibuat untuk Layanan LoadBalancer eksternal:

    • Untuk melihat aturan penerusan, jalankan perintah berikut:

        gcloud compute forwarding-rules describe FWD_RULE_NAME \
          --region=REGION_NAME
      

      Ganti kode berikut:

      • FWD_RULE_NAME: nama aturan penerusan yang diberikan oleh anotasi hanya baca service.kubernetes.io/tcp-forwarding-rule atau service.kubernetes.io/udp-forwarding-rule. Untuk memeriksa anotasi ini, jalankan kubectl describe svc SERVICE_NAME.
      • REGION_NAME: Google Cloud region yang berisi cluster. Untuk cluster zona, region berisi zona yang digunakan oleh cluster.
    • Untuk melihat layanan backend, jalankan perintah berikut:

      gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --region=REGION_NAME
      

      Ganti kode berikut:

      • BACKEND_SERVICE_NAME: nama layanan backend yang disediakan oleh anotasi hanya baca service.kubernetes.io/backend-service. Untuk memeriksa anotasi hanya baca ini, jalankan kubectl describe svc SERVICE_NAME.
      • REGION_NAME: Google Cloud region yang berisi cluster. Untuk cluster zona, region berisi zona yang digunakan oleh cluster.
    • Untuk melihat health check load balancer, jalankan perintah berikut:

      gcloud compute health-checks describe HEALTH_CHECK_NAME \
        --region=REGION_NAME
      

      Ganti kode berikut:

      • HEALTH_CHECK_NAME: nama health check load balancer. Nama health check diberikan oleh anotasi hanya baca service.kubernetes.io/healthcheck. Untuk memeriksa anotasi hanya baca ini, jalankan kubectl describe svc SERVICE_NAME.
      • REGION_NAME: Google Cloud region yang berisi cluster. Untuk cluster zona, region berisi zona yang digunakan oleh cluster.
    • Untuk melihat aturan firewall, jalankan perintah berikut:

      gcloud compute firewall-rules describe FIREWALL_RULE_NAME \
      gcloud compute firewall-rules describe HEALTH_CHECK_FIREWALL_RULE_NAME
      

      Ganti kode berikut:

      • FIREWALL_RULE_NAME: nama aturan firewall yang mengizinkan traffic ke load balancer. Nama aturan firewall ini disediakan oleh anotasi hanya baca service.kubernetes.io/firewall-rule. Untuk memeriksa anotasi hanya baca ini, jalankan kubectl describe svc SERVICE_NAME.
      • HEALTH_CHECK_FIREWALL_RULE_NAME: nama aturan firewall yang mengizinkan health check backend load balancer (node cluster). Nama aturan firewall ini disediakan oleh anotasi hanya baca service.kubernetes.io/firewall-rule-for-hc. Untuk memeriksa anotasi hanya baca ini, jalankan kubectl describe svc SERVICE_NAME.
    • Untuk melihat NEG load balancer, jalankan perintah berikut:

      gcloud compute network-endpoint-groups describe NEG_NAME \
        --zone=ZONE_NAME
      

      Ganti kode berikut:

      • NEG_NAME: nama NEG load balancer. Nama NEG diberikan oleh anotasi hanya baca cloud.google.com/neg-status. Untuk memeriksa anotasi hanya baca ini, jalankan perintah kubectl describe svc SERVICE_NAME. Anotasi berisi data terstruktur dengan informasi tentang nama dan zona NEG yang digunakan oleh load balancer. Untuk cluster zona, anotasi ini berisi informasi tentang satu NEG. Untuk cluster regional, anotasi ini berisi informasi tentang NEG di setiap zona tempat cluster berada.
      • ZONE_NAME: Google Cloud zona yang berisi NEG.

Menghapus Layanan LoadBalancer eksternal

Untuk menghapus contoh Layanan LoadBalancer eksternal store-v1-lb-svc, gunakan perintah berikut:

kubectl delete service store-v1-lb-svc

GKE akan otomatis menghapus semua resource load balancer yang dibuat untuk Service LoadBalancer eksternal.

Bermigrasi ke backend NEG GCE_VM_IP

Service LoadBalancer Eksternal dengan anotasi cloud.google.com/l4-rbs: "enabled" membuat Load Balancer Jaringan passthrough eksternal berbasis layanan backend yang menggunakan backend grup endpoint jaringan atau grup instance GCE_VM_IP, bergantung pada versi GKE cluster:

  • Jika manifes Layanan diterapkan ke cluster yang menjalankan GKE versi 1.32.2-gke.1652000 atau yang lebih baru, Load Balancer Jaringan passthrough eksternal yang dihasilkan akan menggunakan backend grup endpoint jaringan (NEG) GCE_VM_IP.

  • Jika manifes Layanan diterapkan ke cluster yang menjalankan versi GKE sebelumnya, Load Balancer Jaringan passthrough eksternal yang dihasilkan akan menggunakan backend grup instance tidak terkelola.

Untuk informasi selengkapnya, lihat Pengelompokan node di Tentang Layanan LoadBalancer.

Anda dapat membuat Service LoadBalancer eksternal baru yang didukung oleh Load Balancer Jaringan passthrough eksternal berbasis layanan backend yang menggunakan backend NEG GCE_VM_IP jika Service yang ada menggunakan salah satu load balancer berikut:

  • Load Balancer Jaringan passthrough eksternal berbasis layanan backend dengan backend grup instance
  • Load Balancer Jaringan passthrough eksternal berbasis kumpulan target

Untuk beralih ke Load Balancer Jaringan passthrough eksternal berbasis layanan backend menggunakan backend NEG GCE_VM_IP:

  1. Jika belum, upgrade cluster Anda ke GKE versi 1.32.2-gke.1652000 atau yang lebih baru.

  2. Identifikasi Layanan LoadBalancer eksternal yang ingin Anda alihkan ke Load Balancer Jaringan passthrough eksternal berbasis layanan backend menggunakan backend NEG GCE_VM_IP. Jelaskan Layanan menggunakan perintah berikut:

    kubectl describe svc SERVICE_NAME -n SERVICE_NAMESPACE
    

    Ganti kode berikut:

    • SERVICE_NAME: nama Layanan LoadBalancer eksternal yang ada.

    • SERVICE_NAMESPACE: namespace Service LoadBalancer eksternal yang ada.

    Dalam output perintah, catat alamat IPv4 eksternal yang digunakan oleh load balancer yang ada di kolom EXTERNAL-IP.

  3. Ambil manifes Layanan untuk Layanan LoadBalancer yang ada:

    • Sebaiknya Anda memiliki manifes Layanan asli yang telah diterapkan ke cluster sebelumnya. Misalnya, Anda mungkin memilikinya di repositori kontrol sumber.

    • Jika Anda tidak memiliki manifes Layanan asli:

      • Jalankan perintah berikut untuk mendapatkan salinan YAML manifes Layanan yang mewakili implementasi load balancer saat ini:

        kubectl get svc SERVICE_NAME -n SERVICE_NAMESPACE -o yaml
        
      • Salin YAML manifes ke editor teks. Hapus atribut status dan atribut metadata berikut:

        • Semua anotasi berikut:
          • Anotasi kubectl.kubernetes.io/last-applied-configuration
          • Semua anotasi yang dimulai dengan service.kubernetes.io
        • creationTimestamp
        • finalizers
        • resourceVersion
        • uid
    • Pastikan manifes menyertakan anotasi cloud.google.com/l4-rbs: "enabled". Jika Anda bermigrasi dari Load Balancer Jaringan passthrough eksternal berbasis kumpulan target, anotasi perlu ditambahkan.

    Perhatikan jalur lokal yang berisi file manifes Layanan. Bagian selanjutnya dari prosedur ini merujuk ke jalur sebagai MANIFEST_FILE_PATH.

  4. Konfigurasikan resource alamat IPv4 eksternal statis untuk menyimpan alamat IPv4 eksternal yang digunakan oleh load balancer yang ada:

    gcloud compute addresses create IP_ADDRESS_NAME --region=CLUSTER_REGION --addresses LB_EXTERNAL_IP
    

    Ganti kode berikut:

    • IP_ADDRESS_NAME: nama alamat IP eksternal statis. Nama harus mematuhi konvensi nama untuk resource Compute Engine.

    • CLUSTER_REGION: region yang berisi cluster. Untuk cluster zona, ini adalah region yang berisi zona cluster.

    • LB_EXTERNAL_IP: alamat IPv4 eksternal yang digunakan oleh load balancer saat ini, yang ditentukan pada langkah kedua prosedur ini.

  5. Verifikasi bahwa resource alamat IPv4 eksternal statis telah dibuat:

    gcloud compute addresses describe IP_ADDRESS_NAME --region=CLUSTER_REGION
    

    Ganti variabel seperti yang ditunjukkan pada langkah sebelumnya.

  6. Hapus Layanan yang ada:

    kubectl delete svc SERVICE_NAME -n SERVICE_NAMESPACE
    
  7. Tambahkan anotasi berikut ke file manifes Layanan MANIFEST_FILE_PATH:

    networking.gke.io/load-balancer-ip-addresses: IP_ADDRESS_NAME
    

    Untuk informasi selengkapnya tentang anotasi ini, lihat Alamat IP statis dalam parameter Layanan LoadBalancer.

  8. Terapkan manifes Layanan yang telah diperbarui ke cluster:

    kubectl apply -f MANIFEST_FILE_PATH
    
  9. (Opsional) Lepaskan resource alamat IPv4 statis.

    gcloud compute addresses delete IP_ADDRESS_NAME --region=CLUSTER_REGION
    

Memecahkan masalah

Bagian ini menjelaskan masalah yang mungkin Anda alami saat mengonfigurasi load balancing berbobot.

Kebijakan traffic eksternal salah untuk load balancing berbobot

Jika tidak menetapkan externalTrafficPolicy: Local saat mengaktifkan load balancing berbobot, Anda mungkin mendapatkan peristiwa peringatan saat mendeskripsikan Layanan menggunakan perintah berikut:

kubectl describe svc store-v1-lb-svc`
Events:
  Type     Reason                   Age      From                     Message
  ----     ------                   ----     ----                     -------
  Warning  UnsupportedConfiguration 4m55s    loadbalancer-controller  Weighted load balancing by pods-per-node has no effect with External Traffic Policy: Cluster.

Untuk mengaktifkan load balancing berbobot secara efektif, Anda harus menetapkan externalTrafficPolicy: Local.

Langkah berikutnya