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:
- Clústeres de administrador:
adminMaster.controlPlaneLoadBalancer
- Clústeres de usuarios:
masterNode.controlPlaneLoadBalancer
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
Si el clúster no usa dominios de topología, añada las direcciones IP en la sección |
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
Si el clúster no usa dominios de topología, añada las direcciones IP en la sección |
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:
Especifica una dirección IP en el campo
loadBalancer.vips.controlPlaneVIP
.Configura la siguiente asignación:
- (
controlPlaneVIP
:443
) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433
)
- (
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 puerto6443
. La comprobación de estado debe verificar que este endpoint devuelve el código de estado200
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:
Especifica una dirección IP en el campo
loadBalancer.vips.controlPlaneVIP
.Configura la siguiente asignación:
- (
controlPlaneVIP
:443
) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433
)
- (
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 puerto6443
. La comprobación de estado debe verificar que este endpoint devuelve el código de estado200
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:
En el archivo de configuración del clúster de usuarios, configura
loadBalancer.vips.ingressVIP
,loadBalancer.manualLB.ingressHTTPNodePort
yloadBalancer.manualLB.ingressHTTPSNodePort
.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:
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.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.
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.
Restablecer las conexiones a los nodos fallidos (recomendado)
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.