Esta página describe cómo configurar un balanceador de carga L4 con un punto final de AWS Elastic Load Balancer (ELB) o de Network Load Balancer (NLB).
Para obtener más información sobre otros tipos de balanceadores de carga que puede utilizar con GKE en AWS, consulte Descripción general del balanceador de carga .
Esta página está dirigida a especialistas en redes que desean instalar, configurar y dar soporte a equipos de red. Para obtener más información sobre roles comunes y ejemplos de tareas que mencionamos en Google Cloud contenido, consulte Roles y tareas de usuario comunes de GKE Enterprise .
Antes de empezar
- Cree un clúster y configure
kubectl
para conectarse a él. - Etiquete las subredes de su balanceador de carga de servicio . Esto es necesario para el descubrimiento automático de subredes.
- Decide si necesitas un ELB clásico o de red .
- Decide si necesitas un balanceador de carga interno o con acceso a Internet.
Elija un tipo de balanceador de carga
GKE en AWS crea un balanceador de carga de servicio como un balanceador de carga elástico clásico de AWS (ELB clásico) o un balanceador de carga no lineal (NLB). De forma predeterminada, GKE en AWS crea un ELB clásico. Para crear un NLB, configure la anotación service.beta.kubernetes.io/aws-load-balancer-type
como nlb
. Para obtener más información sobre las diferencias entre los tipos de balanceadores de carga, consulte Tipos de balanceadores de carga en la documentación de AWS.
Elija un balanceador de carga interno o con acceso a Internet
Los balanceadores de carga de servicio pueden estar orientados a Internet (con un nombre DNS que se puede resolver públicamente) o ser internos (solo accesibles dentro de su VPC).
De forma predeterminada, los nuevos balanceadores de carga están conectados a internet. Para crear un balanceador de carga interno, configure la anotación service.beta.kubernetes.io/aws-load-balancer-internal
como "true"
en su manifiesto.
No se puede aplicar la anotación aws-load-balancer-internal
a un servicio existente. Para cambiar entre la configuración interna y la configuración con conexión a internet, debe eliminar y volver a crear el LoadBalancer existente.
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. Esto requiere que las subredes tengan etiquetas específicas. Para obtener más información sobre el autodescubrimiento y el etiquetado de subredes, consulte Subredes de balanceadores de carga .
Como alternativa, puede especificar subredes del balanceador de carga con una anotación. Para ello, agregue la anotación ` service.beta.kubernetes.io/aws-load-balancer-subnets
aws-load-balancer-subnets` al servicio. El valor de esta anotación es una lista de ID o nombres de subred 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, se crea una implementación y se expone con un servicio. En el siguiente ejemplo, se crea un balanceador de carga de ejemplo.
Crea tu implementación. Los contenedores de esta implementación escuchan en el puerto 50001. Guarda el siguiente YAML en un archivo llamado
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"
Cree la implementación con
kubectl apply
:kubectl apply -f my-deployment-50001.yaml
Verifique que se estén ejecutando tres Pods:
kubectl get pods --selector=app=products
Cree un servicio de tipo
LoadBalancer
para su implementación.Decide qué tipo de balanceador de carga necesitas:
- Un ELB clásico orientado a Internet
- Un NLB con acceso a Internet
- Un ELB clásico interno
- Un NLB interno
Seleccione la pestaña que coincida con sus requisitos y copie el manifiesto dentro de ella a un archivo llamado
my-lb-service.yaml
.Clásico 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
NLB con acceso a Internet
Para crear un balanceador de carga de red (NLB), configure la anotación
service.beta.kubernetes.io/aws-load-balancer-type
aws-load-balancer-type` comonlb
. El siguiente 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
Clásico interno
Para crear un LoadBalancer interno, configure la anotación
service.beta.kubernetes.io/aws-load-balancer-internal
como"true"
. El siguiente 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
NLB interno
Puedes crear un NLB interno configurando las anotaciones:
-
service.beta.kubernetes.io/aws-load-balancer-internal
en"true"
-
service.beta.kubernetes.io/aws-load-balancer-type
anlb
El siguiente 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
Cree el servicio con
kubectl apply
:kubectl apply -f my-lb-service.yaml
Vea la dirección del servicio con
kubectl get service
.kubectl get service my-lb-service
La salida incluirá una columna
EXTERNAL-IP
con una dirección del balanceador de carga (pública o privada dependiendo de cómo se creó el balanceador de carga).Si ha creado un balanceador de carga con acceso a Internet, puede conectarse al balanceador de carga con
curl
usando el siguiente comando:curl http://EXTERNAL_IP:60000
Reemplace
EXTERNAL_IP
con la dirección de la columna EXTERNAL-IP en el paso anterior.
La salida se parece a la siguiente:
```none
Hello, world!
Version: 2.0.0
Hostname: my-deployment-50001-84b6dc5555-zmk7q
```
Limpiando
Para eliminar el servicio y la implementación, utilice el comando kubectl delete
:
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml
Próximos pasos
Obtenga más información sobre GKE en Google Cloud Documentación sobre la exposición de aplicaciones mediante servicios .
Consulte la lista completa de anotaciones compatibles .