Topik ini menunjukkan cara menyiapkan AWS Elastic Load Balancer (ELB) dengan GKE di AWS.
Saat Anda membuat Service 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 menghadap ke eksternal dari Google Cloud konsol atau Membuat AWS Application Load Balancer (ALB).
Sebelum memulai
Sebelum mulai menggunakan GKE di AWS, pastikan Anda telah melakukan tugas berikut:
- Selesaikan Prasyarat.
- Instal layanan pengelolaan.
- Buat cluster pengguna.
- Dari direktori
anthos-aws, gunakananthos-gkeuntuk mengalihkan konteks ke cluster pengguna Anda. Ganti CLUSTER_NAME dengan nama cluster pengguna Anda.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
- Instal alat command line
curlatau 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 dalam grup keamanan kumpulan node dan daftar kontrol akses jaringan (ACL) subnet.
Memilih jenis load balancer
Pilih apakah Anda ingin membuat Classic Load Balancer (ELB Klasik) atau Network Load Balancer (NLB). Untuk mengetahui informasi selengkapnya tentang perbedaan antara jenis load balancer, lihat Jenis load balancer dalam dokumentasi AWS.
Membuat LoadBalancer
Anda membuat load balancer dengan membuat deployment dan mengekspos deployment tersebut dengan 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.yamlPastikan bahwa tiga Pod sedang berjalan:
env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=productsBuat Service jenis
LoadBalanceruntuk deployment Anda. Anda dapat membuat ELB Klasik atau Jaringan di subnet publik atau pribadi. 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: 50001Publik NLB
Anda membuat NLB dengan menetapkan anotasi
service.beta.kubernetes.io/aws-load-balancer-typekenlb. 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: 50001Pribadi Klasik
Anda membuat LoadBalancer pribadi dengan menetapkan anotasi
service.beta.kubernetes.io/aws-load-balancer-internalke"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: 50001Pribadi NLB
Anda membuat NLB pribadi dengan menetapkan anotasi:
service.beta.kubernetes.io/aws-load-balancer-internalke"true"service.beta.kubernetes.io/aws-load-balancer-typekenlb
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: 50001Buat Service dengan
kubectl apply:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-lb-service.yamlLihat nama host Service 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 terlihat seperti
elb-id.elb.aws-region.amazonaws.com.Jika Anda telah membuat load balancer yang menghadap ke eksternal dan memiliki akses ke subnet VPC publik, Anda dapat terhubung ke load balancer dengan
curl. Ganti external-ip dengan IP dari outputkubectl get servicedari langkah sebelumnya.curl external-ip:60000Outputnya akan terlihat seperti berikut:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
Pembersihan
Untuk menghapus Service 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 menghadap ke eksternal dari Google Cloud konsol.
Baca dokumentasi GKE di AWS tentang Mengekspos aplikasi menggunakan layanan. Google Cloud