Membuat load balancer jaringan

Halaman ini menjelaskan cara menyiapkan load balancer L4 dengan endpoint AWS Elastic Load Balancer (ELB) atau Network Load Balancer (NLB).

Untuk mengetahui informasi selengkapnya tentang jenis load balancer lain yang dapat Anda gunakan dengan GKE di AWS, lihat Ringkasan load balancer.

Halaman ini ditujukan untuk spesialis Jaringan yang ingin menginstal, mengonfigurasi, dan mendukung peralatan jaringan. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam Google Cloud konten, lihat Peran dan tugas pengguna umum GKE Enterprise.

Sebelum memulai

Memilih jenis load balancer

GKE di AWS membuat load balancer Layanan sebagai AWS Classic Elastic Load Balancer (ELB Klasik) atau NLB. Secara default, GKE di AWS membuat ELB Klasik. Untuk membuat NLB, tetapkan anotasi service.beta.kubernetes.io/aws-load-balancer-type ke nlb. Untuk mengetahui informasi selengkapnya tentang perbedaan antara jenis load balancer, lihat Jenis load balancer dalam dokumentasi AWS.

Pilih load balancer internal atau yang terhubung ke internet

Load balancer layanan dapat berupa yang menghadap internet (dengan nama DNS yang dapat di-resolve secara publik) atau internal (hanya dapat diakses dalam VPC Anda).

Secara default, load balancer baru terhubung ke internet. Untuk membuat load balancer internal, tetapkan anotasi service.beta.kubernetes.io/aws-load-balancer-internal ke "true" dalam manifes Anda.

Anda tidak dapat menerapkan anotasi aws-load-balancer-internal ke Service yang sudah ada. Untuk beralih antara konfigurasi yang terhubung ke internet dan internal, Anda harus menghapus dan membuat ulang LoadBalancer yang ada.

Pilih subnet Anda

Saat membuat load balancer, AWS perlu mengetahui subnet tempat load balancer akan ditempatkan. Secara default, subnet ini otomatis ditemukan dari antara subnet di VPC. Hal ini mengharuskan subnet memiliki tag tertentu. Untuk mengetahui detail penemuan otomatis dan pemberian tag subnet, lihat Subnet Load Balancer.

Atau, Anda dapat menentukan subnet load balancer dengan anotasi, dengan menambahkan anotasi service.beta.kubernetes.io/aws-load-balancer-subnets ke Service. Nilai untuk anotasi ini adalah daftar ID subnet atau nama subnet yang dipisahkan koma—misalnya, subnet-012345678abcdef,subnet-abcdef123456789,subnet-123456789abcdef.

Membuat contoh load balancer

Anda membuat Service jenis LoadBalancer dengan membuat deployment dan mengekspos deployment tersebut dengan Service. Dalam contoh berikut, Anda membuat load balancer contoh.

  1. Buat deployment Anda. Container dalam Deployment ini memproses port 50001. Simpan YAML berikut ke file bernama my-deployment-50001.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment-50001
    spec:
      selector:
        matchLabels:
          app: products
          department: sales
      replicas: 3
      template:
        metadata:
          labels:
            app: products
            department: sales
        spec:
          containers:
          - name: hello
            image: "gcr.io/google-samples/hello-app:2.0"
            env:
            - name: "PORT"
              value: "50001"
    
  2. Buat Deployment dengan kubectl apply:

    kubectl apply -f my-deployment-50001.yaml
    
  3. Pastikan bahwa tiga Pod sedang berjalan:

    kubectl get pods --selector=app=products
    
  4. Buat Service jenis LoadBalancer untuk deployment Anda.

  5. Tentukan jenis load balancer yang Anda butuhkan:

    • ELB Klasik yang terhubung ke internet
    • NLB yang terhubung ke internet
    • ELB Klasik internal
    • NLB internal

    Pilih tab yang sesuai dengan persyaratan Anda dan salin manifes di dalamnya ke file bernama my-lb-service.yaml.

    Classic yang terhubung ke internet

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    

    NLB yang terhubung ke internet

    Anda membuat NLB dengan menyetel anotasi service.beta.kubernetes.io/aws-load-balancer-type ke nlb. YAML berikut menyertakan anotasi ini.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-type: nlb
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    

    Internal Classic

    Anda membuat LoadBalancer internal dengan menyetel anotasi service.beta.kubernetes.io/aws-load-balancer-internal ke "true". YAML berikut menyertakan anotasi ini.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: "true"
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    

    NLB Internal

    Anda membuat NLB internal dengan menetapkan anotasi:

    • service.beta.kubernetes.io/aws-load-balancer-internal ke "true"
    • service.beta.kubernetes.io/aws-load-balancer-type ke nlb

    YAML berikut menyertakan kedua anotasi.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: "true"
        service.beta.kubernetes.io/aws-load-balancer-type: nlb
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    
  6. Buat Layanan dengan kubectl apply:

    kubectl apply -f my-lb-service.yaml
    
  7. Lihat alamat Layanan dengan kubectl get service.

    kubectl get service my-lb-service
    

    Output akan menyertakan kolom EXTERNAL-IP dengan alamat load balancer (baik publik maupun pribadi, bergantung pada cara load balancer dibuat).

  8. Jika telah membuat load balancer yang terhubung ke internet, Anda dapat terhubung ke load balancer dengan curl menggunakan perintah berikut:

    curl http://EXTERNAL_IP:60000
    

    Ganti EXTERNAL_IP dengan alamat dari kolom EXTERNAL-IP pada langkah sebelumnya.

Outputnya akan terlihat seperti berikut:

```none
Hello, world!
Version: 2.0.0
Hostname: my-deployment-50001-84b6dc5555-zmk7q
```

Pembersihan

Untuk menghapus Service dan Deployment, gunakan perintah kubectl delete:

kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml

Langkah berikutnya