Questo argomento mostra come configurare un bilanciatore del carico AWS Elastic Load Balancer (ELB) con GKE su AWS.
Quando crei un servizio di tipo LoadBalancer, un controller GKE su AWS
configura un
ELB classico o
di rete
su AWS.
Puoi anche seguire la guida rapida per creare un ELB classico con accesso esterno dalla Google Cloud console o creare un bilanciatore del carico delle applicazioni (ALB) AWS.
Prima di iniziare
Prima di iniziare a utilizzare GKE su AWS, assicurati di aver eseguito le seguenti attività:
- Completa i prerequisiti.
- Installa un servizio di gestione.
- Crea un cluster utente.
- Dalla directory
anthos-aws, utilizzaanthos-gkeper passare al contesto del cluster utente. Sostituisci CLUSTER_NAME con il nome del cluster utente.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
- Installa lo strumento da riga di comando
curlo uno strumento simile.
Selezionare un bilanciatore del carico esterno o interno
GKE su AWS crea un bilanciatore del carico esterno (nella subnet pubblica) o interno (nella subnet privata) a seconda di un'annotazione alla risorsa LoadBalancer.
Se selezioni un bilanciatore del carico esterno, questo è accessibile dagli indirizzi IP consentiti nei gruppi di sicurezza del pool di nodi e nelle liste di controllo dell'accesso alla rete (ACL)della subnet.
Scegliere un tipo di bilanciatore del carico
Scegli se vuoi creare un bilanciatore del carico classico (ELB classico) o un bilanciatore del carico di rete (NLB). Per ulteriori informazioni sulle differenze tra i tipi di bilanciatori del carico, consulta Tipi di bilanciatori del carico nella documentazione di AWS.
Creare un LoadBalancer
Per creare un bilanciatore del carico, crea un deployment ed esegui l'esposizione di questo deployment con un servizio.
Crea il deployment. I container in questo deployment sono in ascolto sulla porta 50001. Salva il seguente file YAML con il nome
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:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-deployment-50001.yamlVerifica che siano in esecuzione tre pod:
env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=productsCrea un servizio di tipo
LoadBalancerper il deployment. Puoi creare un ELB classico o di rete nella subnet pubblica o privata. Scegli una delle seguenti opzioni:- Un ELB classico nella subnet pubblica
- Un NLB nella subnet pubblica
- Un ELB classico nella subnet privata
- Un NLB nella subnet privata
Poi, copia il seguente manifest in un file denominato
my-lb-service.yaml.Classico pubblico
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001NLB pubblico
Per creare un NLB, imposta l'annotazione
service.beta.kubernetes.io/aws-load-balancer-typesunlb. Il seguente file YAML include questa annotazione.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: 50001Classico privato
Per creare un LoadBalancer privato, imposta l'annotazione
service.beta.kubernetes.io/aws-load-balancer-internalsu"true". Il seguente file YAML include questa annotazione.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: 50001NLB privato
Per creare un NLB privato, imposta le annotazioni:
service.beta.kubernetes.io/aws-load-balancer-internalsu"true"service.beta.kubernetes.io/aws-load-balancer-typesunlb
Il seguente file YAML include entrambe le annotazioni.
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: 50001Crea il servizio con
kubectl apply:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-lb-service.yamlVisualizza il nome host del servizio con
kubectl get service.env HTTPS_PROXY=http://localhost:8118 \ kubectl get service my-lb-service \ --output jsonpath="{.status.loadBalancer.ingress..hostname}{'\n'}"L'output è simile a
elb-id.elb.aws-region.amazonaws.com.Se hai creato un bilanciatore del carico con accesso esterno e hai accesso alla subnet VPC pubblica, puoi connetterti al bilanciatore del carico con
curl. Sostituisci external-ip con l'IP dell'output dikubectl get servicedel passaggio precedente.curl external-ip:60000L'output è simile al seguente:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
Pulizia
Per rimuovere il servizio e il deployment, utilizza 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
Risoluzione dei problemi
Se non riesci ad accedere a un endpoint del bilanciatore del carico, prova a aggiungere tag alle subnet.
Passaggi successivi
Segui la guida rapida per creare un ELB classico con accesso esterno dalla Google Cloud console.
Crea un bilanciatore del carico delle applicazioni (ALB) AWS.
Leggi la documentazione di GKE su Google Cloud esposizione delle applicazioni utilizzando i servizi.