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
- Buat cluster
dan konfigurasi
kubectl
untuk terhubung ke cluster tersebut. - Beri tag pada subnet load balancer layanan Anda. Hal ini diperlukan untuk penemuan otomatis subnet.
- Tentukan apakah Anda memerlukan ELB Klasik atau Jaringan.
- Tentukan apakah Anda memerlukan load balancer internal atau yang menghadap internet.
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.
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 Service jenis
LoadBalancer
untuk deployment Anda.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
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
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
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 akan menyertakan kolom
EXTERNAL-IP
dengan alamat load balancer (baik publik maupun pribadi, bergantung pada cara load balancer dibuat).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
Pelajari lebih lanjut GKE di Google Cloud dokumentasi tentang Mengekspos aplikasi menggunakan layanan.
Lihat daftar lengkap anotasi yang didukung.