Load balancing jaringan
Topik ini menunjukkan cara menyiapkan load balancer L4 yang didukung oleh Azure Standard Load Balancer menggunakan GKE di Azure .
Saat Anda membuat Service jenis LoadBalancer, pengontrol GKE di Azure akan mengonfigurasi Azure Load Balancer.
Sebelum memulai
- Anda harus Membuat cluster
dan mengonfigurasi
kubectluntuk mengakses cluster.
Memilih load balancer publik atau pribadi
Load balancer layanan dapat bersifat publik — memiliki IP frontend publik — atau internal — hanya dapat diakses melalui IP pribadi.
Secara default, Layanan baru bersifat publik. Untuk membuat load balancer internal, Anda menetapkan anotasi service.beta.kubernetes.io/azure-load-balancer-internal ke "true" dalam manifes.
Memilih subnet untuk load balancer internal
Saat membuat load balancer internal, GKE di Azure perlu memilih subnet untuk menempatkan load balancer. Subnet load balancer layanan default ini dipilih dari parameter pembuatan cluster sebagai berikut:
- Jika ditentukan dan tidak kosong,
cluster.networking.serviceLoadBalancerSubnetId - Jika tidak,
cluster.controlPlane.subnetId
Atau, Anda dapat menentukan subnet yang akan digunakan untuk load balancer tertentu dengan
menambahkan anotasi service.beta.kubernetes.io/azure-load-balancer-internal-subnet
ke Layanan. Nilai untuk anotasi ini adalah nama subnet.
Membuat contoh 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:kubectl apply -f my-deployment-50001.yamlPastikan bahwa tiga Pod sedang berjalan:
kubectl get pods --selector=app=productsBuat Service jenis
LoadBalanceruntuk deployment Anda. Anda dapat membuat Azure Standard Load Balancer yang bersifat publik atau internal. Pilih salah satu opsi berikut.Salin salah satu manifes berikut ke file bernama
my-lb-service.yaml.Publik
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001Internal
Anda membuat LoadBalancer internal dengan menyetel anotasi
service.beta.kubernetes.io/azure-load-balancer-internalke"true". YAML berikut menyertakan anotasi ini.yaml apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001Buat Layanan dengan
kubectl apply:kubectl apply -f my-lb-service.yamlLihat alamat Layanan dengan
kubectl get service.kubectl get service my-lb-serviceOutput akan menyertakan kolom
EXTERNAL-IPdengan alamat load balancer (baik publik maupun pribadi, bergantung pada cara load balancer dibuat).Jika telah membuat load balancer publik, Anda dapat terhubung ke load balancer dengan
curl. Ganti external-ip dengan alamat dari outputkubectl get servicedari langkah sebelumnya.curl http://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.
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml