Halaman ini menjelaskan cara menyiapkan load balancer L4 dengan endpoint AWS Elastic Load Balancer (ELB) atau Load Balancer Jaringan (NLB).
Untuk mengetahui informasi selengkapnya tentang jenis load balancer lain yang dapat Anda gunakan dengan GKE di AWS, lihat Ringkasan load balancer.
Sebelum memulai
- Buat cluster
dan konfigurasikan
kubectl
agar terhubung ke cluster tersebut. - Memberi tag pada subnet load balancer layanan. Langkah ini diperlukan untuk penemuan otomatis subnet.
- Tentukan apakah Anda memerlukan ELB Klasik atau Jaringan.
- Tentukan apakah Anda memerlukan load balancer yang terhubung ke internet atau internal.
Memilih jenis load balancer
GKE di AWS membuat load balancer Layanan sebagai Load Balancer Elastis AWS Klasik (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 lebih lanjut tentang perbedaan berbagai jenis load balancer, lihat Jenis load balancer dalam dokumentasi AWS.
Memilih load balancer yang terhubung ke internet atau internal
Load balancer layanan dapat bersifat internal (hanya dapat diakses dalam VPC Anda) atau terhubung ke internet (dengan nama DNS yang dapat di-resolve secara publik).
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 Layanan yang ada. Untuk mengubah antara konfigurasi antarmuka 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. Secara default, subnet ini otomatis ditemukan dari antara subnet di VPC. Hal ini membutuhkan subnet yang memiliki tag spesifik. Untuk mengetahui detail tentang penemuan dan pemberian tag otomatis 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. Pada contoh berikut, Anda membuat contoh load balancer.
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"
Buat Deployment dengan
kubectl apply
:kubectl apply -f my-deployment-50001.yaml
Pastikan bahwa tiga Pod sedang berjalan:
kubectl get pods --selector=app=products
Buat Layanan jenis
LoadBalancer
untuk deployment Anda.Tentukan jenis load balancer yang Anda perlukan:
- ELB Klasik yang terhubung ke internet
- NLB yang terhubung ke internet
- ELB Klasik internal
- NLB internal
Pilih tab yang cocok dengan persyaratan Anda, lalu salin manifes di dalamnya ke file bernama
my-lb-service.yaml
.Klasik 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 menetapkan anotasi
service.beta.kubernetes.io/aws-load-balancer-type
kenlb
. 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
Klasik Internal
Anda membuat LoadBalancer internal dengan menetapkan 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
LBB Internal
Anda membuat NLB internal dengan menyetel anotasi:
service.beta.kubernetes.io/aws-load-balancer-internal
ke"true"
service.beta.kubernetes.io/aws-load-balancer-type
kenlb
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
Buat Layanan dengan
kubectl apply
:kubectl apply -f my-lb-service.yaml
Lihat alamat Layanan dengan
kubectl get service
.kubectl get service my-lb-service
Output-nya akan mencakup kolom
EXTERNAL-IP
dengan alamat load balancer (baik publik atau pribadi, bergantung pada cara load balancer dibuat).Jika telah membuat load balancer yang ditampilkan 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 di langkah sebelumnya.
Outputnya akan terlihat seperti berikut:
```none
Hello, world!
Version: 2.0.0
Hostname: my-deployment-50001-84b6dc5555-zmk7q
```
Pembersihan
Untuk menghapus Layanan dan Deployment, gunakan perintah kubectl delete
:
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml
Langkah berikutnya
Pelajari lebih lanjut dokumentasi GKE di Google Cloud tentang Mengekspos aplikasi menggunakan layanan.
Lihat daftar lengkap anotasi yang didukung.