DÜZENLEME: çok yumuşak bir yolu IMHO bu uygulamış https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing
: Bu şimdi (şimdi Kubernetes Engine olarak da bilinir) GKE desteklenir . Nasıl çalıştığını ben kısaca yürümeye çalışacağız:
- bir konteyner küme (veya nodepool) oluştururken, varsayılan bir parçası olduğuna dair bir örnek grubunda GCE örnekleri bir dizi oluşacaktır unutmayın ağ. NB: belirli bir GCE ağ etiketi ekleyerek yük dengeleyici denetiminin örneğini sağlamanız için yalnızca bu örnekleri bir güvenlik duvarı kuralına ekleyebilirsiniz.
- Bu örnek grubu, yalnızca normal bir örnek grubudur.
- Şimdi, kubernetes'in
NodePort
adında bir işlevi olduğunu unutmayın; bu, hizmeti tüm düğümlerde, yani kümenizdeki tüm GCE örneklerinde bu bağlantı noktasında gösterecektir. İşte istediğimiz bu!
- Örnek grubumuzda bir dizi GCE örneğimizin olduğunu bildiğimize göre, bu örnek grubunu kubernetes internals veya DNS ile ilgili hiçbir şey bilmeden varsayılan ağınızda dahili yük dengeleyiciye ekleyebilirsiniz. Başlangıçtaki adımların birçoğu atlama, takip edebilir
- Kılavuzu burada:
- https://cloud.google.com/compute/docs/load-balancing/internal/ böylece veri akışı, bu bölgeler için işe yaradığını unutmayın ve her şey aynı bölgede olmalıdır.
hizmet için aynı spesifikasyonları bakınız:
kind: Service
apiVersion: v1
metadata:
name: name
labels:
app: app
spec:
selector:
name: name
app: app
tier: backend
ports:
- name: health
protocol: TCP
enter code here port: 8081
nodePort: 30081
- name: api
protocol: TCP
port: 8080
nodePort: 30080
type: NodePort
Bu çalışması gereken kuralları ve güvenlik duvarı, sağlık kontrolleri ile yük dengeleyici kurma yönlendirme kodudur:
_region=<THE_REGION>
_instance_group=<THE_NODE_POOL_INSTANCE_GROUP_NAME>
#Can be different for your case
_healtcheck_path=/liveness
_healtcheck_port=30081
_healtcheck_name=<THE_HEALTCHECK_NAME>
_port=30080
_tags=<TAGS>
_loadbalancer_name=internal-loadbalancer-$_region
_loadbalancer_ip=10.240.0.200
gcloud compute health-checks create http $_healtcheck_name \
--port $_healtcheck_port \
--request-path $_healtcheck_path
gcloud compute backend-services create $_loadbalancer_name \
--load-balancing-scheme internal \
--region $_region \
--health-checks $_healtcheck_name
gcloud compute backend-services add-backend $_loadbalancer_name \
--instance-group $_instance_group \
--instance-group-zone $_region-a \
--region $_region
gcloud compute forwarding-rules create $_loadbalancer_name-forwarding-rule \
--load-balancing-scheme internal \
--ports $_port \
--region $_region \
--backend-service $_loadbalancer_name \
--address $_loadbalancer_ip
#Allow google cloud to healthcheck your instance
gcloud compute firewall-rules create allow-$_healtcheck_name \
--source-ranges 130.211.0.0/22,35.191.0.0/16 \
--target-tags $_tags \
--allow tcp