Habilitar el modo de balanceo de cargas manual

Los clústeres de Anthos GKE On-prem (GKE On-prem) pueden ejecutarse con uno de los tres modos de balanceo de cargas: integrado, empaquetado o manual. Con el modo integrado, un clúster de GKE On-Prem usa el balanceador de cargas BIG-IP de F5. Con el modo de paquete, GKE on-prem proporciona y administra el balanceador de cargas. No es necesario que obtengas una licencia para un balanceador de cargas y la configuración que debes hacer es mínima. Con el modo manual, GKE On-Prem usa un balanceador de cargas diferente del que elijas. El modo de balanceo de cargas manual requiere que realices más opciones de configuración que con el modo integrado. En esta página, se describen los pasos que debes seguir si decides usar el modo de balanceo de cargas manual.

El balanceador de cargas de Citrix es un balanceador de cargas de ejemplo que puedes usar con el modo de balanceo de cargas manual.

Para obtener instrucciones sobre cómo usar F5 BIG-IP con el modo de balanceo de cargas manual, consulta Instala F5 BIG-IP ADC para GKE On-Prem mediante el balanceo de cargas manual.

En este tema, se reservan las direcciones IP y los valores nodePort para usarla más adelante. La idea es que elijas las direcciones IP y los valores nodePort que deseas usar para el balanceo de cargas y los nodos de tu clúster. Sin embargo, en este momento, no puedes hacer nada con las direcciones ni los valores nodePort. Más adelante, cuando estés listo para instalar GKE On-Prem, necesitarás las direcciones y los valores nodePort a fin de completar el archivo de configuración del clúster. También necesitarás las direcciones y los valores nodePort cuando configures el balanceador de cargas de forma manual.

Cómo reservar las direcciones IP virtuales

Sin importar si usas el modo de balanceo de cargas integrado, manual o en paquetes, debes reservar varias direcciones IP virtuales (VIP) que quieras usar para el balanceo de cargas. Estos VIP permiten que clientes externos que accedan a tus servidores de API de Kubernetes, tus servicios de entrada y tus servicios de complemento. Para obtener instrucciones para separar los VIP, consulta Reserva las direcciones IP virtuales.

Cómo reservar las direcciones IP de nodo

Con el modo de balanceo de cargas manual, no puedes usar DHCP. Debes especificar direcciones IP estáticas para los nodos del clúster. Debes reservar las direcciones suficientes para los nodos en el clúster de administrador y los nodos en todos los clústeres de usuario que deseas crear. Si deseas obtener más detalles sobre cuántas direcciones IP de nodo se deben separar, consulta Configura IP estáticas.

Cómo reservar los valores nodePort

En un clúster de GKE On-Prem, el servidor de la API de Kubernetes, el servicio de entrada y el servicio de complemento se implementan como servicios de Kubernetes de tipo NodePort. Con el modo de balanceo de cargas manual, debes elegir tus propios valores nodePort para estos servicios. Elige valores en el rango de 30,000 a 32,767. Después de elegir los valores nodePort, resérvalos para más adelante cuando modifiques el archivo de configuración del clúster.

Elige y reserva los siguientes valores de nodePort.

  • En cada VIP que hayas reservado para un servidor de API de Kubernetes, reserva un valor nodePort.

  • En cada VIP que hayas reservado para un servicio de entrada de clúster, reserva dos valores nodePort: uno para el tráfico HTTP y otro para el tráfico HTTPS. Esto solo se aplica al clúster de usuarios.

  • En cada VIP que hayas reservado para un servicio de complemento de clústeres, reserva un valor nodePort. Esto solo se aplica al clúster de administrador.

Por ejemplo, supongamos que deseas tener dos clústeres de usuario y quieres usar complementos. Deberás elegir y reservar los siguientes valores de nodePort:

  • Un valor nodePort para el servidor de la API de Kubernetes en el clúster del administrador.

  • En cada uno de los dos clústeres de usuarios, un valor nodePort para el servidor de la API de Kubernetes.

  • En cada uno de los dos clústeres de usuarios, un valor nodePort para el tráfico HTTP al servicio de entrada.

  • En cada uno de los dos clústeres de usuario, un valor nodePort para el tráfico HTTPS al servicio de entrada.

  • Un valor nodePort para el servicio de complemento en el clúster de administrador.

Por lo tanto, en el ejemplo anterior, tendrías que separar 8 valores nodePort.

Modifica el archivo de configuración de GKE local

Prepara un archivo de configuración para cada uno de los clústeres: clúster de administrador y clúster de usuario.

  • Configura loadBalancer.kind en ManualLB.

  • Configura network.ipMode en static.

  • Configura network.ipBlockFilePath en la ruta del archivo YAML de IP estática para tu clúster. Esto se documenta en Configura direcciones IP estáticas. DHCP no es una opción para el modo de balanceo de cargas manual.

  • Actualiza el campo loadBalancer.manualLB con los valores nodePort que elegiste para el clúster.

En el siguiente ejemplo, se muestra una parte de un archivo de configuración actualizado:

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879
    controlPlaneNodePort: 30562:
    addonsnodeport: 31405

Configura tu balanceador de cargas

Ahora que actualizaste el archivo de configuración, accede a la consola de administración del balanceador de cargas y configura los VIP:

  • Un plano de control del clúster para clústeres de administrador y de usuarios, puerto TCP 443
  • Un administrador de complementos para el clúster de administrador si se usa, puerto TCP 8443
  • Un controlador de entrada del clúster de usuario, puerto TCP 80
  • Un controlador de entrada del clúster de usuario, puerto TCP 443

Ejemplo de balanceo de cargas

Un servicio tiene un campo ports, que es un arreglo de objetos ServicePort. En un servicio de tipo NodePort, cada objeto ServicePort tiene un protocol, un port, un nodePort y un targetPort. Por ejemplo, continuación, se muestra parte de un manifiesto para un servicio que tiene dos objetos ServicePort en su arreglo ports:

...
kind: Service
...
spec:
  ...
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    nodePort: 32676
    targetPort: 8080
  - protocol: TCP
    port: 443
    nodePort: 32677
    targetPort: 443
...

Supongamos que el servicio anterior representa el servicio de entrada para uno de tus clústeres de usuarios. También supongamos que tomaste las siguientes decisiones:

  • 203.0.113.5 es la VIP para el servicio de entrada de tu clúster de usuario.

  • Las direcciones de nodo de tu clúster de usuario son 192.168.0.10192.168.0.11192.168.0.12.

Después de configurar tu balanceador de cargas, el tráfico se enruta de la siguiente manera:

  • Un cliente envía una solicitud a 203.0.113.5 en el puerto TCP 80. El balanceador de cargas elige un nodo de clúster de usuario. Para este ejemplo, supongamos que la dirección del nodo es 192.168.0.11. El balanceador de cargas reenvía la solicitud a 192.168.0.11 en el puerto TCP 32676. Las reglas iptables del nodo reenvían la solicitud a un Pod apropiado en el puerto TCP 8080.

  • Un cliente envía una solicitud a 203.0.113.5 en el puerto TCP 443. El balanceador de cargas elige un nodo de clúster de usuario. Para este ejemplo, supongamos que la dirección del nodo es 192.168.0.10. El balanceador de cargas reenvía la solicitud a 192.168.0.10 en el puerto TCP 32677. Las reglas de iptables en el nodo reenvían la solicitud a un Pod apropiado en el puerto TCP 443.

Obtén asistencia para el balanceo de cargas manual

Google no proporciona asistencia a balanceadores de cargas configurados con el modo de balanceo de cargas manual. Si tienes problemas con el balanceador de cargas, comunícate con el proveedor del balanceador de cargas.

Qué sigue

Soluciona problemas

Para obtener más información, consulta Solución de problemas.