Bilanciamento del carico di rete
Questo argomento mostra come configurare un bilanciatore del carico L4 supportato da un bilanciatore del carico standard di Azure utilizzando GKE su Azure .
Quando crei un servizio di tipo LoadBalancer
, un controller GKE su Azure configura un bilanciatore del carico di Azure.
Prima di iniziare
- Devi creare un cluster e configurare
kubectl
per accedere al cluster.
Selezione di un bilanciatore del carico pubblico o privato
I bilanciatori del carico dei servizi possono essere pubblici, con IP frontend pubblici, o interni, accessibili solo tramite IP privati.
Per impostazione predefinita, un nuovo servizio è pubblico. Per creare un bilanciatore del carico interno, imposta l'annotazione service.beta.kubernetes.io/azure-load-balancer-internal
su "true"
nel manifest.
Scelta della subnet per i bilanciatori del carico interni
Quando crei un bilanciatore del carico interno, GKE su Azure deve scegliere la subnet in cui posizionare il bilanciatore del carico. Questa subnet predefinita del bilanciatore del carico del servizio viene scelta dai parametri di creazione del cluster come segue:
- Se specificato e non vuoto,
cluster.networking.serviceLoadBalancerSubnetId
- Altrimenti,
cluster.controlPlane.subnetId
In alternativa, puoi specificare la subnet da utilizzare per un determinato bilanciatore del carico aggiungendo l'annotazione service.beta.kubernetes.io/azure-load-balancer-internal-subnet
al servizio. Il valore di questa annotazione è il nome della subnet.
Creazione di un LoadBalancer di esempio
Per creare un bilanciatore del carico, devi creare un deployment ed esponerlo con un servizio.
Crea il deployment. I container in questo deployment sono in ascolto sulla porta 50001. Salva il seguente codice YAML in un file denominato
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"
Crea il deployment con
kubectl apply
:kubectl apply -f my-deployment-50001.yaml
Verifica che siano in esecuzione tre pod:
kubectl get pods --selector=app=products
Crea un servizio di tipo
LoadBalancer
per il tuo deployment. Puoi creare un bilanciatore del carico standard di Azure, pubblico o interno. Scegli una delle seguenti opzioni.Copia uno dei seguenti manifest in un file denominato
my-lb-service.yaml
.Pubblico
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Interna
Puoi creare un LoadBalancer interno impostando l'annotazione
service.beta.kubernetes.io/azure-load-balancer-internal
su"true"
. Il seguente codice YAML include questa annotazione.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
Crea il servizio con
kubectl apply
:kubectl apply -f my-lb-service.yaml
Visualizza l'indirizzo del servizio con
kubectl get service
.kubectl get service my-lb-service
L'output includerà una colonna
EXTERNAL-IP
con un indirizzo del bilanciatore del carico (pubblico o privato, a seconda di come è stato creato il bilanciatore del carico).Se hai creato un bilanciatore del carico pubblico, puoi connetterti a quest'ultimo con
curl
. Sostituisci external-ip con l'indirizzo dell'output dikubectl get service
del passaggio precedente.curl http://external-ip:60000
L'output è simile al seguente:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
esegui la pulizia
Per rimuovere il servizio e il deployment, utilizza kubectl delete
.
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml