Habilitar el modo manual del balanceo de carga

Te recomendamos que configures uno de los siguientes modos de balanceo de carga:

  • En el modo agrupado, Google Distributed Cloud proporciona y gestiona el balanceador de carga. No tienes que obtener una licencia para un balanceador de carga y la configuración que tienes que hacer es mínima.

  • En el modo manual, Google Distributed Cloud usa un balanceador de carga de tu elección, como F5 BIG-IP o Citrix. El modo manual del balanceo de carga requiere que hagas más configuraciones que con el modo agrupado.

El balanceo de carga manual se admite en los siguientes tipos de clústeres:

  • Clústeres de usuarios que tienen habilitado Controlplane V2. Con Controlplane V2, los nodos de plano de control de un clúster de usuarios se encuentran en el propio clúster de usuarios.

  • Clústeres de usuarios que usan kubeception. El término kubeception hace referencia al caso en el que el plano de control de un clúster de usuarios se ejecuta en uno o varios nodos del clúster de administrador. Si Controlplane V2 no está habilitado, un clúster de usuario usa kubeception.

En este documento se describen los pasos que debe seguir si decide usar el modo de equilibrio de carga manual.

En este documento, se reservan direcciones IP para los nodos del plano de control y los nodos de trabajo para usarlos más adelante. También reserva direcciones IP para IPs virtuales (VIPs) y decide los valores de NodePort. La idea es que elijas las direcciones IP y los valores de NodePort que quieras usar y, a continuación, los registres en una hoja de cálculo o en otra herramienta. Cuando quieras crear tus clústeres, necesitarás las direcciones IP y los valores de NodePort para rellenar los archivos de configuración de tu clúster de administrador y tu clúster de usuario, así como los archivos de bloque de IPs de tus clústeres.

También necesitará las direcciones IP y los valores de NodePort cuando configure manualmente el balanceador de carga para los clústeres de usuario.

Configurar otro tipo de balanceador de carga para el plano de control

En la versión 1.32 y posteriores, cuando se habilita el clúster avanzado, puedes configurar opcionalmente otro tipo de balanceador de carga para el plano de control al crear un clúster. Para obtener más información, consulta las siguientes secciones:

Reservar direcciones IP de nodos

En el modo de balanceo de carga manual, no puedes usar DHCP. Debes especificar direcciones IP estáticas para los nodos de tu clúster. Debes reservar suficientes direcciones para los nodos del clúster de administrador y los nodos de todos los clústeres de usuarios que quieras crear. Para obtener información sobre cuántas direcciones IP de nodo debes reservar, consulta Planificar tus direcciones IP (Controlplane V2) y Planificar tus direcciones IP (kubeception).

Configurar direcciones IP

El lugar en el que configures las direcciones IP estáticas que hayas reservado depende del tipo de clúster y de si Controlplane V2 está habilitado en tus clústeres de usuario.

Clúster de administradores de alta disponibilidad

En la siguiente tabla se describe para qué sirven las direcciones IP y dónde se configuran en los clústeres de administrador de alta disponibilidad.

IPs estáticas Configuración
Nodos del plano de control

Si el clúster usa dominios de topología, añade las direcciones IP en un archivo de bloque de IP para el clúster de administrador y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administrador.

Si el clúster no usa dominios de topología, añada las direcciones IP en la sección network.controlPlaneIPBlock.ips del archivo de configuración del clúster de administrador.

1.16 y versiones anteriores: nodos de complementos Archivo de bloque de IPs del clúster de administradores y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administradores

En la versión 1.28 y posteriores, los nuevos clústeres de administrador de alta disponibilidad no tienen nodos de complementos, por lo que no es necesario reservar direcciones IP para los nodos de complementos como en versiones anteriores.

Clúster de administrador sin alta disponibilidad

En la siguiente tabla se describe para qué sirven las direcciones IP y dónde se configuran en los clústeres de administrador que no son de alta disponibilidad.

IPs estáticas Configuración
Nodo del plano de control Archivo de bloque de IPs del clúster de administradores y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administradores
Nodos complementarios Archivo de bloque de IP del clúster de administrador

En la versión 1.28 y posteriores, todos los clústeres de administrador nuevos deben ser clústeres de alta disponibilidad (HA) con 3 nodos de plano de control.

Clúster de usuarios de CP V2

En la siguiente tabla se describe para qué sirven las direcciones IP y dónde se configuran en los clústeres de usuarios con Controlplane V2 habilitado.

IPs estáticas Configuración
Nodos del plano de control

Si el clúster usa dominios de topología, añade las direcciones IP en un archivo de bloque de IPs del clúster de usuario y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de usuario.

Si el clúster no usa dominios de topología, añada las direcciones IP en la sección network.controlPlaneIPBlock.ips del archivo de configuración del clúster de usuario.

Nodos de trabajador Archivo de bloque de IPs del clúster de usuarios y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de usuarios.

Clúster de usuarios de Kubeception

En la siguiente tabla se describe para qué sirven las direcciones IP y dónde se configuran para los clústeres de usuarios que usan kubeception.

IPs estáticas Configuración
Nodos del plano de control Archivo de bloque de IPs del clúster de administradores y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administradores
Nodos de trabajador Archivo de bloque de IPs del clúster de usuarios y añade la ruta en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de usuarios.

En la versión 1.30 y posteriores, se requiere Controlplane V2 para los clústeres de usuarios nuevos.

Reservar direcciones IP para VIPs

Independientemente de si usas el modo de balanceo de carga integrado, agrupado o manual, debes reservar varias direcciones IP que quieras usar como IPs virtuales (VIPs) para el balanceo de carga. Estas IPs virtuales permiten que los clientes externos accedan a los servidores de la API de Kubernetes y a tu servicio de entrada en los clústeres de usuario.

Configurar contactos VIP

El lugar donde configures las IPs virtuales depende del tipo de clúster.

Clúster de administradores de alta disponibilidad

En la siguiente tabla se describe para qué sirve la IP virtual y dónde se configura en los clústeres de administrador de alta disponibilidad.

VIP Configuración
VIP del servidor de la API de Kubernetes del clúster de administrador Archivo de configuración del clúster de administrador en el campo loadBalancer.vips.controlPlaneVIP
1.15 y versiones anteriores: VIP de complementos Archivo de configuración del clúster de administrador en el campo loadBalancer.vips.addonsVIP

Ten en cuenta las siguientes diferencias entre las versiones:

  • En la versión 1.16 y posteriores, no es necesario configurar un VIP de complementos para los clústeres de administración de alta disponibilidad.

  • En la versión 1.28 y posteriores, los nuevos clústeres de administrador de alta disponibilidad no tienen nodos de complementos.

Clúster de administrador sin alta disponibilidad

En la siguiente tabla se describe para qué sirve la IP virtual y dónde se configura en clústeres de administrador que no son de alta disponibilidad.

VIP Configuración
VIP del servidor de la API de Kubernetes del clúster de administrador Archivo de configuración del clúster de administrador en el campo loadBalancer.vips.controlPlaneVIP
1.15 y versiones anteriores: VIP de complementos Archivo de configuración del clúster de administrador en el campo loadBalancer.vips.addonsVIP

Ten en cuenta las siguientes diferencias entre las versiones:

En la versión 1.16 y posteriores, no es necesario configurar un VIP de complementos para clústeres de administrador que no sean de alta disponibilidad.

Clúster de usuarios de CP V2

En la siguiente tabla se describe para qué sirven las IPs virtuales y dónde se configuran en los clústeres de usuarios con Controlplane V2 habilitado.

VIPs Configuración
VIP del servidor de la API de Kubernetes del clúster de usuario Archivo de configuración del clúster de usuarios en el campo loadBalancer.vips.controlPlaneVIP
VIP del servicio de entrada en el clúster de usuario Archivo de configuración del clúster de usuarios en el campo loadBalancer.vips.ingressVIP

Clúster de usuarios de Kubeception

En la siguiente tabla se describe para qué sirven los VIPs y dónde se configuran para los clústeres de usuarios que usan kubeception.

VIPs Configuración
VIP del servidor de la API de Kubernetes del clúster de usuario Archivo de configuración del clúster de usuarios en el campo loadBalancer.vips.controlPlaneVIP
VIP del servicio de entrada en el clúster de usuario Archivo de configuración del clúster de usuarios en el campo loadBalancer.vips.ingressVIP

Reservar valores de NodePort

En Google Distributed Cloud, el servidor de la API de Kubernetes y el servicio de entrada se exponen mediante servicios de Kubernetes. En el modo de balanceo de carga manual, debes elegir tus propios valores de NodePort para estos servicios. Elige valores entre 30.000 y 32.767.

Configurar valores de NodePort

El lugar en el que configures los valores de NodePort depende de si el clúster de usuario tiene habilitado ControlPlane V2.

Clúster de administradores de alta disponibilidad

En la siguiente tabla se describe para qué sirve NodePort y dónde se configura en los clústeres de administración de alta disponibilidad.

nodePort Configuración
1.15 y versiones anteriores: nodePort para nodos de complementos Archivo de configuración del clúster de administrador en el campo loadBalancer.manualLB.addonsNodePort

En la versión 1.16 y posteriores, no es necesario configurar un NodePort para los nodos complementarios de los clústeres de administradores de alta disponibilidad.

Clúster de administrador sin alta disponibilidad

En la siguiente tabla se describe para qué sirven los valores de NodePort y dónde se configuran en los clústeres de administrador que no son de alta disponibilidad.

nodePort Configuración
1.16 y versiones anteriores: nodePort para el servidor de la API de Kubernetes del clúster de administrador 1.15 y versiones anteriores: archivo de configuración del clúster de administrador en el campo loadBalancer.vips.controlPlaneNodePort
1.15 y versiones anteriores: nodePort para nodos de complementos Archivo de configuración del clúster de administrador en el campo loadBalancer.manualLB.addonsNodePort

En la versión 1.16 y posteriores, no es necesario configurar un NodePort para los nodos complementarios de los clústeres de administradores que no sean de alta disponibilidad.

Clúster de usuarios de CP V2

En la siguiente tabla se describe para qué sirven los NodePorts y dónde se configuran en los clústeres de usuario con Controlplane V2 habilitado. En la versión 1.30 y posteriores, no es necesario configurar valores para los NodePorts de entrada.

nodePorts Configuración
HTTP nodePort para el servicio de entrada del clúster de usuario Archivo de configuración de clúster de usuarios en el loadBalancer.manualLB.ingressHTTPNodePort
HTTPS nodePort para el servicio de entrada del clúster de usuario Archivo de configuración de clúster de usuarios en el loadBalancer.manualLB.ingressHTTPSNodePort

Clúster de usuarios de Kubeception

En la siguiente tabla se describe para qué sirven los valores de NodePort y dónde se configuran en los clústeres de usuario que usan kubeception.

nodePort Configuración
nodePort para el servidor de la API de Kubernetes del clúster del usuario Archivo de configuración del clúster de usuarios en el campo loadBalancer.manualLB.controlPlaneNodePort
nodePort para el servidor Konnectivity del clúster de usuarios (el servidor Konnectivity usa el VIP del plano de control) Archivo de configuración del clúster de usuarios en el campo loadBalancer.manualLB.konnectivityServerNodePort
HTTP nodePort para el servicio de entrada del clúster de usuario Archivo de configuración de clúster de usuarios en el loadBalancer.manualLB.ingressHTTPNodePort
HTTPS nodePort para el servicio de entrada del clúster de usuario Archivo de configuración de clúster de usuarios en el loadBalancer.manualLB.ingressHTTPSNodePort

Ejemplo de archivo de configuración de clúster

En el siguiente ejemplo se muestra una parte de un archivo de configuración de clúster de administrador y de usuario:

Clúster de administradores de alta disponibilidad

  • Versión 1.16 y posteriores:

    network:
      controlPlaneIPBlock:
        netmask: "255.255.248.0"
        gateway: "21.0.143.254"
        ips:
        - ip: "21.0.140.226"
          hostname: "admin-cp-vm-1"
        - ip: "21.0.141.48"
          hostname: "admin-cp-vm-2"
        - ip: "21.0.141.65"
          hostname: "admin-cp-vm-3"
    loadBalancer:
      vips:
        controlPlaneVIP: "172.16.21.40"
      kind: ManualLB
    
  • Las versiones 1.15 y anteriores requieren un VIP y un NodePort para los nodos complementarios.

    network:
      controlPlaneIPBlock:
        netmask: "255.255.248.0"
        gateway: "21.0.143.254"
        ips:
        - ip: "21.0.140.226"
          hostname: "admin-cp-vm-1"
        - ip: "21.0.141.48"
          hostname: "admin-cp-vm-2"
        - ip: "21.0.141.65"
          hostname: "admin-cp-vm-3"
    loadBalancer:
      vips:
        controlPlaneVIP: "172.16.21.40"
        addonsVIP: "203.0.113.4"
      kind: ManualLB
      manualLB:
        addonsNodePort: 31405
    

Clúster de administrador sin alta disponibilidad

  • Versión 1.16 y posteriores:

    network:
      ipMode:
        type: static
        ipBlockFilePath: "ipblock-admin.yaml"
    loadBalancer:
      vips:
        controlPlaneVIP: "172.16.21.40"
      kind: ManualLB
      manualLB:
        controlPlaneNodePort: 30562
    
  • Las versiones 1.15 y anteriores requieren un VIP y un NodePort para los nodos complementarios.

    network:
    ipMode:
      type: static
      ipBlockFilePath: "ipblock-admin.yaml"
    loadBalancer:
    vips:
      controlPlaneVIP: "172.16.21.40"
      addonsVIP: "172.16.21.41"
    kind: ManualLB
    manualLB:
      controlPlaneNodePort: 30562
      addonsNodePort: 30563
    

Clúster de usuarios de CP V2

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.6"
      hostname: "cp-vm-1"
    - ip: "172.16.21.7"
      hostname: "cp-vm-2"
    - ip: "172.16.21.8"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879

Clúster de usuarios de Kubeception

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879
    konnectivityServerNodePort: 30563
    controlPlaneNodePort: 30562

Configurar el balanceador de carga

Usa la consola o las herramientas de gestión de tu balanceador de carga para configurar las siguientes asignaciones en él. La forma de hacerlo depende del balanceador de carga.

Clúster de administradores de alta disponibilidad

Tráfico a los nodos del plano de control

La asignación que debe configurar depende de si ha habilitado los clústeres avanzados al crear el clúster de administrador.

  • Si los clústeres avanzados no están habilitados: Google Distributed Cloud gestiona automáticamente el balanceo de carga del tráfico del plano de control de los clústeres de administrador de alta disponibilidad. Aunque no es necesario que configure una asignación en el balanceador de carga, debe especificar una dirección IP en el campo loadBalancer.vips.controlPlaneVIP.

  • Si los clústeres avanzados están habilitados, debes configurar el balanceador de carga de la siguiente manera:

    1. Especifica una dirección IP en el campo loadBalancer.vips.controlPlaneVIP.

    2. Configura la siguiente asignación:

      • (controlPlaneVIP:443) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433)
    3. Comprueba que la comprobación del estado del backend esté configurada correctamente. La comprobación del estado debe usar HTTPS y comprobar el endpoint /readyz en el puerto 6443. La comprobación de estado debe verificar que este endpoint devuelve el código de estado 200 para considerar que el nodo está en buen estado.

Tráfico a los servicios de los nodos del complemento

1.15 y versiones anteriores: a continuación se muestra la asignación a las direcciones IP y los valores de NodePort del tráfico a los servicios de los nodos complementarios:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

Añade esta asignación a todos los nodos del clúster de administrador, tanto a los nodos del plano de control como a los nodos de complementos.

En la versión 1.16 y posteriores, no es necesario configurar esta asignación para los nodos complementarios de los clústeres de administrador de alta disponibilidad.

Clúster de administrador sin alta disponibilidad

Tráfico del plano de control

A continuación, se muestra la asignación a la dirección IP y al valor de NodePort del nodo del plano de control:

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)

Añade esta asignación a todos los nodos del clúster de administración, tanto al nodo del plano de control como a los nodos de complementos.

Tráfico a los servicios de los nodos del complemento

1.15 y versiones anteriores: a continuación se muestra la asignación a las direcciones IP y los valores de NodePort de los servicios que se ejecutan en nodos complementarios:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

Añade esta asignación a todos los nodos del clúster de administración, tanto al nodo del plano de control como a los nodos de complementos.

En la versión 1.16 y posteriores, no es necesario configurar esta asignación para los nodos complementarios de los clústeres de administrador que no sean de alta disponibilidad.

Clúster de usuarios de CP V2

Tráfico del plano de control

La asignación que debes configurar depende de si vas a habilitar clústeres avanzados al crear el clúster de usuarios.

  • Si los clústeres avanzados no están habilitados, Google Distributed Cloud gestiona automáticamente el balanceo de carga del tráfico del plano de control de los clústeres de usuarios. Aunque no es necesario que configure una asignación en el balanceador de carga, debe especificar una dirección IP en el campo loadBalancer.vips.controlPlaneVIP.

  • Si los clústeres avanzados están habilitados, debes configurar el balanceador de carga de la siguiente manera:

    1. Especifica una dirección IP en el campo loadBalancer.vips.controlPlaneVIP.

    2. Configura la siguiente asignación:

      • (controlPlaneVIP:443) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433)
    3. Comprueba que la comprobación del estado del backend esté configurada correctamente. La comprobación del estado debe usar HTTPS y comprobar el endpoint /readyz en el puerto 6443. La comprobación de estado debe verificar que este endpoint devuelve el código de estado 200 para considerar que el nodo está en buen estado.

Tráfico del plano de datos

La asignación que debes configurar depende de si vas a habilitar clústeres avanzados al crear el clúster de usuarios.

  • Si los clústeres avanzados no están habilitados, sigue estos pasos antes de crear el clúster:

    1. En el archivo de configuración del clúster de usuarios, configura loadBalancer.vips.ingressVIP, loadBalancer.manualLB.ingressHTTPNodePort y loadBalancer.manualLB.ingressHTTPSNodePort.

    2. En el balanceador de carga, configura las asignaciones de direcciones IP a puertos para cada NodePort de entrada:

      • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
      • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)
  • Si los clústeres avanzados están habilitados, sigue estos pasos:

    1. Antes de crear el clúster, configura loadBalancer.vips.ingressVIP en el archivo de configuración del clúster de usuario. No es necesario que configure valores para cada NodePort de entrada, ya que no tienen ningún efecto cuando los clústeres avanzados están habilitados.

    2. Una vez creado el clúster, recupera los valores de cada NodePort de entrada:

      kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n gke-system get service istio-ingress -oyaml
      

      Busca HTTP y HTTPS en la sección de puertos de ServiceSpec y anota los valores de NodePort.

    3. En el balanceador de carga, configura las asignaciones de direcciones IP a puertos para cada NodePort de entrada:

      • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
      • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

    En ambos casos, añade estas asignaciones para todos los nodos del plano de control y los nodos de trabajo del clúster de usuarios. Como has configurado NodePorts en el clúster, Kubernetes abre los NodePorts en todos los nodos del clúster. Esta configuración permite que cualquier nodo del clúster gestione el tráfico del plano de datos.

    Una vez que hayas configurado las asignaciones, el balanceador de carga escuchará el tráfico en la dirección IP que hayas configurado para el VIP de entrada del clúster de usuarios en los puertos HTTP y HTTPS estándar. El balanceador de carga enruta las solicitudes a cualquier nodo del clúster. Una vez que se ha enrutado una solicitud a uno de los nodos del clúster, la red interna de Kubernetes toma el control y enruta la solicitud al pod de destino.

Clúster de usuarios de Kubeception

Tráfico del plano de control

A continuación, se muestra la asignación a las direcciones IP y los valores de NodePort del tráfico del plano de control:

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)
  • (controlPlaneVIP:8132) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort)

Añade esta asignación a todos los nodos del clúster admin, tanto al clúster de administrador como a los nodos de plano de control del clúster de usuario.

Tráfico del plano de datos

A continuación, se muestra la asignación a las direcciones IP y los valores de NodePort del tráfico del plano de datos:

  • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

Añade estas asignaciones a todos los nodos del clúster de usuarios. Con los clústeres de usuarios que usan kubeception, todos los nodos del clúster son nodos de trabajo.

Además de los requisitos anteriores, te recomendamos que configures el balanceador de carga para que restablezca las conexiones de los clientes cuando detecte un fallo en un nodo backend. Sin esta configuración, los clientes del servidor de la API de Kubernetes pueden dejar de responder durante varios minutos cuando una instancia del servidor deja de funcionar, lo que puede provocar inestabilidad en el plano de control de Kubernetes.

  • En F5 BIG-IP, este ajuste se denomina "Action On Service Down" (Acción cuando el servicio no funciona) en la página de configuración del grupo de backend.
  • En HAProxy, esta opción se llama on-marked-down shutdown-sessions en la configuración del servidor backend.
  • Si usas otro balanceador de carga, consulta la documentación para encontrar el ajuste equivalente.

Obtener asistencia para el balanceo de carga manual

Google no ofrece asistencia para los balanceadores de carga configurados con el modo de balanceo de carga manual. Si tienes problemas con el balanceador de carga, ponte en contacto con el proveedor del balanceador de carga.

Siguientes pasos