Topik ini menunjukkan cara menyiapkan Load Balancer Elastic AWS (ELB) dengan GKE di AWS.
Saat Anda membuat Layanan jenis LoadBalancer
, pengontrol GKE di AWS akan mengonfigurasi ELB Klasik atau Jaringan di AWS.
Anda juga dapat mengikuti Panduan Memulai untuk membuat ELB Klasik yang terbuka secara eksternal dari Konsol Google Cloud atau Membuat Load Balancer Aplikasi AWS (ALB).
Sebelum memulai
Sebelum mulai menggunakan GKE di AWS, pastikan Anda telah melakukan tugas berikut:
- Lengkapi Prasyarat.
- Instal layanan pengelolaan.
- Buat cluster pengguna.
- Dari direktori
anthos-aws
, gunakananthos-gke
untuk mengalihkan konteks ke cluster pengguna.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Ganti CLUSTER_NAME dengan nama cluster pengguna Anda. - Menginstal alat command line
curl
atau alat serupa.
Memilih load balancer eksternal atau internal
GKE di AWS membuat load balancer eksternal (di subnet publik Anda) atau internal (di subnet pribadi Anda) bergantung pada anotasi ke resource LoadBalancer.
Jika Anda memilih load balancer eksternal, load balancer tersebut dapat diakses oleh alamat IP yang diizinkan di grup keamanan kumpulan node dan daftar kontrol akses jaringan (ACL) subnet.
Memilih jenis load balancer
Pilih apakah Anda ingin membuat Load Balancer Klasik (ELB Klasik) atau Load Balancer Jaringan (NLB). Untuk mengetahui informasi lebih lanjut mengenai perbedaan berbagai jenis load balancer, lihat Jenis load balancer dalam dokumentasi AWS.
Membuat LoadBalancer
Anda membuat load balancer dengan membuat deployment dan mengekspos deployment tersebut dengan sebuah layanan.
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
:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-deployment-50001.yaml
Pastikan bahwa tiga Pod sedang berjalan:
env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=products
Buat Layanan jenis
LoadBalancer
untuk deployment Anda. Anda dapat membuat ELB Klasik atau Jaringan di subnet publik atau pribadi Anda. Pilih dari salah satu opsi berikut:- ELB Klasik di subnet publik
- NLB di subnet publik
- ELB Klasik di subnet pribadi
- NLB di subnet pribadi
Kemudian, salin manifes berikut ke file bernama
my-lb-service.yaml
.Publik Klasik
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Publik NLB
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
Pribadi Klasik
Anda membuat LoadBalancer pribadi 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
NLB Pribadi
Anda membuat NLB pribadi 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
:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-lb-service.yaml
Lihat nama host Layanan dengan
kubectl get service
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get service my-lb-service \ --output jsonpath="{.status.loadBalancer.ingress..hostname}{'\n'}"
Outputnya akan mirip dengan
elb-id.elb.aws-region.amazonaws.com
.Jika telah membuat load balancer yang ditampilkan secara eksternal dan memiliki akses ke subnet VPC publik, Anda dapat terhubung ke load balancer dengan
curl
. Ganti external-ip dengan IP dari outputkubectl get service
dari langkah sebelumnya.curl external-ip:60000
Outputnya akan terlihat seperti berikut:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
Pembersihan
Untuk menghapus Layanan dan Deployment, gunakan kubectl delete
.
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-lb-service.yaml
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-deployment-50001.yaml
Pemecahan masalah
Jika Anda tidak dapat mengakses endpoint load balancer, coba beri tag pada subnet Anda.
Langkah Berikutnya
Ikuti Panduan Memulai untuk membuat ELB Klasik yang terbuka secara eksternal dari Konsol Google Cloud.
Baca dokumentasi GKE di Google Cloud tentang Mengekspos aplikasi menggunakan layanan.