Load balancing jaringan
Topik ini menunjukkan cara menyiapkan load balancer L4 yang didukung oleh Load Balancer Standar Azure menggunakan GKE di Azure .
Saat Anda membuat Service jenis LoadBalancer
, GKE di pengontrol Azure akan mengonfigurasi Load Balancer Azure.
Sebelum memulai
- Anda harus Membuat cluster
dan mengonfigurasi
kubectl
untuk mengakses cluster tersebut.
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, tetapkan anotasi service.beta.kubernetes.io/azure-load-balancer-internal
ke "true"
dalam manifes Anda.
Memilih subnet untuk load balancer internal
Saat membuat load balancer internal, GKE di Azure harus 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 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
: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. Anda dapat membuat Load Balancer Standar Azure 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: 50001
Internal
Anda membuat LoadBalancer internal dengan menetapkan anotasi
service.beta.kubernetes.io/azure-load-balancer-internal
ke"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: 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 publik, Anda dapat terhubung ke load balancer dengan
curl
. Ganti external-ip dengan alamat dari outputkubectl get service
dari langkah sebelumnya.curl http://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
.
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml