Te recomendamos que configures uno de los siguientes modos de balanceo de cargas:
Con el modo de paquete, Google Distributed Cloud 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 realizar es mínima.
Con el modo manual, Google Distributed Cloud usa un balanceador de cargas de tu elección, como F5 BIG-IP o Citrix. El modo de balanceo de cargas manual requiere que implementes más opciones de configuración que el modo integrado.
El balanceo de cargas manual es compatible con los siguientes tipos de clústeres:
Clústeres de usuario que tienen habilitado Controlplane V2 Con Controlplane V2, los nodos del plano de control de un clúster de usuario se encuentran en el propio clúster de usuario.
Clústeres de usuario que usan kubeception El término kubeception hace referencia al caso en el que el plano de control de un clúster de usuario se ejecuta en uno o más 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 debes seguir si decides usar el modo de balanceo de cargas manual.
En este documento, reservarás las direcciones IP para los nodos del plano de control y los nodos de trabajo para usarlas más adelante. También reservas direcciones IP para las IP virtuales (VIP) y decides los valores de NodePort. La idea es que elijas las direcciones IP y los valores de NodePort que deseas usar y, luego, los registres en una hoja de cálculo o alguna otra herramienta. Cuando estés listo para crear los clústeres, necesitarás las direcciones IP y los valores de NodePort para completar los archivos de configuración de tu clúster de administrador y tu clúster de usuario, así como los archivos de bloque de IP para tus clústeres.
También necesitarás las direcciones IP y los valores de NodePort cuando configures manualmente el balanceador de cargas para los clústeres de usuario.
Configura un tipo diferente de balanceador de cargas para el plano de control
En la versión 1.32 y posteriores, cuando se habilita el clúster avanzado, puedes configurar de forma opcional un tipo diferente de balanceador de cargas para el plano de control cuando creas un clúster nuevo. Para obtener más información, consulta lo siguiente:
- Clústeres de administrador:
adminMaster.controlPlaneLoadBalancer
- Clústeres de usuarios:
masterNode.controlPlaneLoadBalancer
Reserva las direcciones IP de los nodos
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 direcciones suficientes para los nodos del clúster de administrador y los nodos de todos los clústeres de usuario que deseas crear. Para obtener más detalles sobre cuántas direcciones IP de nodos debes reservar, consulta Planifica tus direcciones IP (plano de control V2) y Planifica tus direcciones IP (kubeception).
Configurar direcciones IP
El lugar en el que configures las direcciones IP estáticas que reservaste depende el tipo de clúster y de si Controlplane V2 está habilitado en tus clústeres de usuario.
Clúster de administrador con alta disponibilidad
En la siguiente tabla, se describe para qué sirven las direcciones IP y dónde las configuras para los clústeres de administrador de HA.
IP estáticas | Configuration |
---|---|
Nodos de plano de control | Si
el clúster usa dominios de topología, agrega las direcciones IP en un
archivo de bloque de IP para el
clúster de administrador y agrega la ruta de acceso en el
campo Si el clúster no usa dominios de topología, agrega las direcciones IP en la sección |
1.16 y versiones anteriores: Nodos de complemento | Archivo de bloque de IP del clúster de administrador y agrega la ruta de acceso en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administrador. |
En la versión 1.28 y versiones posteriores, los clústeres de administrador con HA nuevos no tienen nodos de complementos, por lo que no es necesario que reserves 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 las configuras para clústeres de administrador que no tienen HA.
IP estáticas | Configuration |
---|---|
Nodo del plano de control | Archivo de bloque de IP del clúster de administrador y agrega la ruta de acceso en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administrador. |
Nodos de complemento | Archivo de bloqueo 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 con alta disponibilidad (HA) y 3 nodos del plano de control.
Clúster de usuario de CP V2
En la siguiente tabla, se describe para qué sirven las direcciones IP y dónde las configuras para los clústeres de usuarios con Controlplane V2 habilitado.
IP estáticas | Configuration |
---|---|
Nodos de plano de control | Si
el clúster usa dominios de topología, agrega las direcciones IP en un archivo de bloque de IP para el clúster de usuario y agrega la ruta de acceso en el campo Si el clúster no usa dominios de topología, agrega las direcciones IP en la sección |
Nodos trabajadores | Archivo de bloque de IP del clúster de usuario y agrega la ruta de acceso en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de usuario. |
Clúster de usuario de Kubeception
En la siguiente tabla, se describe para qué sirven las direcciones IP y dónde las configuras para los clústeres de usuarios que usan kubeception.
IP estáticas | Configuration |
---|---|
Nodos de plano de control | Archivo de bloque de IP del clúster de administrador y agrega la ruta de acceso en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administrador. |
Nodos trabajadores | Archivo de bloque de IP del clúster de usuario y agrega la ruta de acceso en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de usuario. |
En la versión 1.30 y versiones posteriores, se requiere Controlplane V2 para los clústeres de usuarios nuevos.
Reserva direcciones IP para las VIPs
Ya sea que uses el modo de balanceo de cargas integrado, por paquetes o manual, debes reservar varias direcciones IP que desees usar para las IPs virtuales (VIP) para el balanceo de cargas. Estas VIPs permiten que los clientes externos accedan a los servidores de la API de Kubernetes y al servicio de entrada en los clústeres de usuarios.
Configura VIPs
El lugar donde configures las VIPs depende del tipo de clúster.
Clúster de administrador con alta disponibilidad
En la siguiente tabla, se describe para qué sirve la VIP y dónde la configuras para los clústeres de administrador de alta disponibilidad.
VIP | Configuration |
---|---|
Es la VIP para el 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 versiones posteriores, no necesitas configurar una VIP de complementos para clústeres de administrador con HA.
En la versión 1.28 y versiones posteriores, los clústeres de administrador con HA nuevos no tienen nodos de complementos.
Clúster de administrador sin alta disponibilidad
En la siguiente tabla, se describe para qué sirve la VIP y dónde la configuras para los clústeres de administrador que no tienen HA.
VIP | Configuration |
---|---|
Es la VIP para el 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 versiones posteriores, no necesitas configurar una VIP de complementos para clústeres de administrador que no tengan HA.
Clúster de usuario de CP V2
En la siguiente tabla, se describe para qué sirven las VIPs y dónde las configuras para los clústeres de usuarios con Controlplane V2 habilitado.
VIP | Configuration |
---|---|
VIP para el servidor de la API de Kubernetes del clúster de usuario | Archivo de configuración del clúster de usuario en el campo loadBalancer.vips.controlPlaneVIP |
VIP para el servicio de entrada en el clúster de usuario | Archivo de configuración del clúster de usuario en el campo loadBalancer.vips.ingressVIP |
Clúster de usuario de Kubeception
En la siguiente tabla, se describe para qué sirven las VIPs y dónde las configuras para los clústeres de usuarios que usan kubeception.
VIP | Configuration |
---|---|
VIP para el servidor de la API de Kubernetes del clúster de usuario | Archivo de configuración del clúster de usuario en el campo loadBalancer.vips.controlPlaneVIP |
VIP para el servicio de entrada en el clúster de usuario | Archivo de configuración del clúster de usuario en el campo loadBalancer.vips.ingressVIP |
Reserva valores de NodePort
En Google Distributed Cloud, los Services de Kubernetes exponen el servidor de la API de Kubernetes y el servicio de entrada. Con el modo de balanceo de cargas manual, debes elegir tus propios valores de NodePort para estos Services. Elige valores en el rango de 30,000 a 32,767.
Configura 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 administrador con alta disponibilidad
En la siguiente tabla, se describe para qué sirve NodePort y dónde lo configuras para los clústeres de administrador de HA.
nodePort |
Configuration |
---|---|
1.15 y versiones anteriores: nodePort para nodos de complemento |
Archivo de configuración del clúster de administrador en el campo loadBalancer.manualLB.addonsNodePort |
En la versión 1.16 y versiones posteriores, no necesitas configurar un NodePort para los nodos de complementos de los clústeres de administrador con HA.
Clúster de administrador sin alta disponibilidad
En la siguiente tabla, se describe para qué sirven los valores de NodePort y dónde los configuras para los clústeres de administrador que no son de alta disponibilidad.
nodePort |
Configuration |
---|---|
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 complemento |
Archivo de configuración del clúster de administrador en el campo loadBalancer.manualLB.addonsNodePort |
En la versión 1.16 y versiones posteriores, no necesitas configurar un NodePort para los nodos de complementos de clústeres de administrador que no tengan HA.
Clúster de usuario de CP V2
En la siguiente tabla, se describe para qué sirven los NodePorts y dónde los configuras para los clústeres de usuarios con Controlplane V2 habilitado. En la versión 1.30 y versiones posteriores, no es necesario que configures valores para los NodePorts de entrada.
nodePorts |
Configuration |
---|---|
nodePort HTTP para el servicio de entrada en el clúster de usuario |
Archivo de configuración del clúster de usuario en loadBalancer.manualLB.ingressHTTPNodePort |
nodePort HTTPS para el servicio de entrada en el clúster de usuario |
Archivo de configuración del clúster de usuario en loadBalancer.manualLB.ingressHTTPSNodePort |
Clúster de usuario de Kubeception
En la siguiente tabla, se describe para qué sirven los valores de NodePort y dónde los configuras para los clústeres de usuarios que usan kubeception.
nodePort |
Configuration |
---|---|
nodePort para el servidor de la API de Kubernetes del clúster de usuario |
Archivo de configuración del clúster de usuario en el campo loadBalancer.manualLB.controlPlaneNodePort |
nodePort para el servidor de Konnectivity del clúster de usuario (el servidor de Konnectivity usa la VIP del plano de control) |
Archivo de configuración del clúster de usuario en el campo loadBalancer.manualLB.konnectivityServerNodePort |
nodePort HTTP para el servicio de entrada en el clúster de usuario |
Archivo de configuración del clúster de usuario en loadBalancer.manualLB.ingressHTTPNodePort |
nodePort HTTPS para el servicio de entrada en el clúster de usuario |
Archivo de configuración del clúster de usuario en loadBalancer.manualLB.ingressHTTPSNodePort |
Ejemplo de archivo de configuración del clúster
En el siguiente ejemplo, se muestra una parte de un archivo de configuración de clúster de usuario y administrador:
Clúster de administrador con alta disponibilidad
Versión 1.16 y versiones 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
La versión 1.15 y versiones anteriores requieren un VIP y NodePort para los nodos de complementos.
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 versiones posteriores:
network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB manualLB: controlPlaneNodePort: 30562
La versión 1.15 y versiones anteriores requieren un VIP y NodePort para los nodos de complementos.
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 usuario 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 usuario 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
Configura el balanceador de cargas
Usa la consola o las herramientas de administración de tu balanceador de cargas para configurar las siguientes asignaciones en tu balanceador de cargas. La forma de hacerlo depende del balanceador de cargas.
Clúster de administrador con alta disponibilidad
Tráfico a los nodos del plano de control
La asignación que debes configurar depende de si habilitaste clústeres avanzados cuando creaste el clúster de administrador.
Si los clústeres avanzados no están habilitados, Google Distributed Cloud controla automáticamente el balanceo de cargas del tráfico del plano de control para los clústeres de administrador con HA. Si bien no es necesario que configures una asignación en el balanceador de cargas, debes especificar una dirección IP en el campo
loadBalancer.vips.controlPlaneVIP
.Si los clústeres avanzados están habilitados, debes configurar el balanceador de cargas 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
)
- (
Asegúrate de que la verificación de estado del backend esté configurada correctamente. La verificación de estado debe usar HTTPS y comprobar el extremo
/readyz
en el puerto6443
. La verificación de estado debe verificar que este extremo muestre el código de estado200
para considerar que el nodo está en buen estado.
Tráfico a los servicios en 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 para el tráfico a los servicios en nodos de complementos:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Agrega esta asignación para todos los nodos del clúster de administrador, tanto los nodos del plano de control como los nodos de complemento.
En la versión 1.16 y versiones posteriores, no necesitas configurar esta asignación para los nodos de complementos de los clústeres de administrador con HA.
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 para el nodo del plano de control:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Agrega esta asignación para todos los nodos del clúster de administrador, tanto el nodo del plano de control como los nodos de complemento.
Tráfico a los servicios en 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 para los servicios que se ejecutan en nodos de complementos:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Agrega esta asignación para todos los nodos del clúster de administrador, tanto el nodo del plano de control como los nodos de complemento.
En la versión 1.16 y versiones posteriores, no necesitas configurar esta asignación para los nodos de complementos de clústeres de administrador que no tengan HA.
Clúster de usuario de CP V2
Tráfico del plano de control
La asignación que debes configurar depende de si habilitarás clústeres avanzados cuando crees el clúster de usuario.
Si los clústeres avanzados no están habilitados, Google Distributed Cloud controla automáticamente el balanceo de cargas del tráfico del plano de control para los clústeres de usuario. Si bien no es necesario que configures una asignación en el balanceador de cargas, debes especificar una dirección IP en el campo
loadBalancer.vips.controlPlaneVIP
.Si los clústeres avanzados están habilitados, debes configurar el balanceador de cargas 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
)
- (
Asegúrate de que la verificación de estado del backend esté configurada correctamente. La verificación de estado debe usar HTTPS y comprobar el extremo
/readyz
en el puerto6443
. La verificación de estado debe verificar que este extremo muestre 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 habilitarás clústeres avanzados cuando crees el clúster de usuario.
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 usuario, configura
loadBalancer.vips.ingressVIP
,loadBalancer.manualLB.ingressHTTPNodePort
yloadBalancer.manualLB.ingressHTTPSNodePort
.En tu balanceador de cargas, 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 configures valores para cada NodePort de entrada, ya que no tienen efecto cuando se habilitan los clústeres avanzados.Después de crear 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 la especificación del servicio y anota los valores de NodePort.
En tu balanceador de cargas, 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, agrega estas asignaciones para todos los nodos del plano de control y los nodos trabajadores del clúster de usuario. Debido a que configuraste 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 controle el tráfico del plano de datos.
Después de configurar las asignaciones, el balanceador de cargas escucha el tráfico en la dirección IP que configuraste para la VIP de entrada del clúster de usuario en los puertos HTTP y HTTPS estándar. El balanceador de cargas enruta las solicitudes a cualquier nodo del clúster. Después de que una solicitud se enruta 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 usuario 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 para el tráfico del plano de control:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
Agrega esta asignación para todos los nodos del clúster de administrador, tanto el clúster de administrador como los nodos del 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 para el tráfico del plano de datos:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
Agrega estas asignaciones para todos los nodos del clúster de usuario. Con los clústeres de usuario que usan kubeception, todos los nodos del clúster son nodos trabajadores.
Restablece conexiones a nodos con errores (recomendado)
Además de los requisitos anteriores, te recomendamos configurar el balanceador de cargas para restablecer las conexiones de los clientes cuando detecte una falla en el nodo de backend. Sin esta configuración, los clientes del servidor de la API de Kubernetes pueden dejar de responder durante varios minutos cuando una instancia de servidor falla, lo que puede causar inestabilidad en el plano de control de Kubernetes.
- Con BIG-IP de F5, esta configuración se llama Action On Service Down en la página de configuración del grupo de backend.
- Con HAProxy, esta configuración se llama on-marked-down shutdown-sessions en la configuración del servidor de backend.
- Si usas un balanceador de cargas diferente, debes consultar la documentación para encontrar la configuración equivalente.
Obtén asistencia para el balanceo de cargas manual
Google no proporciona asistencia para los 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.