En esta página se describe cómo configurar un balanceador de carga L4 con un endpoint de AWS Elastic Load Balancer (ELB) o Network Load Balancer (NLB).
Para obtener más información sobre los otros tipos de balanceadores de carga que puedes usar con GKE en AWS, consulta la descripción general de los balanceadores de carga.
Esta página está dirigida a especialistas en redes que quieran instalar, configurar y ofrecer asistencia para equipos de redes. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.
Antes de empezar
- Crea un clúster y configura
kubectl
para conectarte a él. - Etiqueta las subredes de tu balanceador de carga de servicio. Es necesario para la detección automática de subredes.
- Decida si necesita un ELB clásico o de red.
- Decide si necesitas un balanceador de carga interno o orientado a Internet.
Elegir un tipo de balanceador de carga
GKE on AWS crea un balanceador de carga de servicio como un balanceador de carga elástico clásico (Classic ELB) o un balanceador de carga de red (NLB) de AWS. De forma predeterminada, GKE on AWS crea un ELB clásico. Para crear un balanceador de carga de red, asigna el valor nlb
a la anotación service.beta.kubernetes.io/aws-load-balancer-type
.
Para obtener más información sobre las diferencias entre los tipos de balanceadores de carga, consulta la sección Tipos de balanceadores de carga de la documentación de AWS.
Elegir un balanceador de carga orientado a Internet o interno
Los balanceadores de carga de servicio pueden estar orientados a Internet (con un nombre de DNS que se pueda resolver públicamente) o ser internos (solo se puede acceder a ellos desde tu VPC).
De forma predeterminada, los nuevos balanceadores de carga se dirigen a Internet. Para crear un balanceador de carga interno, defina la anotación service.beta.kubernetes.io/aws-load-balancer-internal
en "true"
en su manifiesto.
No puedes aplicar la anotación aws-load-balancer-internal
a un servicio que ya tengas. Para cambiar entre configuraciones orientadas a Internet e internas, debes eliminar y volver a crear el LoadBalancer.
Elige tus subredes
Al crear balanceadores de carga, AWS necesita saber en qué subredes colocarlos. De forma predeterminada, estas subredes se detectan automáticamente entre las subredes de la VPC. Para ello, las subredes deben tener etiquetas específicas. Para obtener información sobre la detección automática y el etiquetado de subredes, consulta Subredes de balanceador de carga.
También puede especificar subredes de balanceadores de carga con una anotación. Para ello, añada la anotación service.beta.kubernetes.io/aws-load-balancer-subnets
al servicio. El valor de esta anotación es una lista de IDs de subredes o nombres de subredes separados por comas. Por ejemplo, subnet-012345678abcdef,subnet-abcdef123456789,subnet-123456789abcdef
.
Crear un balanceador de carga de ejemplo
Para crear un servicio de tipo LoadBalancer, debes crear un despliegue y exponerlo con un servicio. En el siguiente ejemplo, se crea un balanceador de carga de muestra.
Crea tu implementación. Los contenedores de esta implementación escuchan en el puerto 50001. Guarda el siguiente archivo YAML con el nombre
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 el despliegue con
kubectl apply
:kubectl apply -f my-deployment-50001.yaml
Verifica que se estén ejecutando tres pods:
kubectl get pods --selector=app=products
Crea un servicio de tipo
LoadBalancer
para tu implementación.Decide qué tipo de balanceador de carga necesitas:
- Un ELB clásico orientado a Internet
- Un balanceador de carga de red orientado a Internet
- Un ELB clásico interno
- Un balanceador de carga de red interno
Elige la pestaña que se ajuste a tus necesidades y copia el manifiesto en un archivo llamado
my-lb-service.yaml
.Classic con acceso a Internet
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Balanceador de carga de red orientado a Internet
Para crear un balanceador de carga de red, defina la anotación
service.beta.kubernetes.io/aws-load-balancer-type
ennlb
. El siguiente archivo YAML incluye esta anotación.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: 50001
Internal Classic
Para crear un balanceador de carga interno, debe definir la anotación
service.beta.kubernetes.io/aws-load-balancer-internal
en"true"
. El siguiente archivo YAML incluye esta anotación.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: 50001
Balanceador de carga de red interno
Para crear un balanceador de carga de red interno, define las siguientes anotaciones:
- De
service.beta.kubernetes.io/aws-load-balancer-internal
a"true"
- De
service.beta.kubernetes.io/aws-load-balancer-type
anlb
El siguiente archivo YAML incluye ambas anotaciones.
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: 50001
Crea el servicio con
kubectl apply
:kubectl apply -f my-lb-service.yaml
Consulta la dirección del servicio con
kubectl get service
.kubectl get service my-lb-service
El resultado incluirá una columna
EXTERNAL-IP
con la dirección del balanceador de carga (pública o privada, según cómo se haya creado).Si has creado un balanceador de carga accesible desde Internet, puedes conectarte a él con
curl
mediante el siguiente comando:curl http://EXTERNAL_IP:60000
Sustituye
EXTERNAL_IP
por la dirección de la columna EXTERNAL-IP del paso anterior.
La salida es similar a la siguiente:
```none
Hello, world!
Version: 2.0.0
Hostname: my-deployment-50001-84b6dc5555-zmk7q
```
Eliminar los recursos utilizados
Para eliminar el servicio y la implementación, usa el comando kubectl delete
:
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml
Pasos siguientes
Consulta más información sobre GKE en la Google Cloud documentación sobre exposición de aplicaciones mediante servicios.
Consulta la lista completa de anotaciones admitidas.