¿OpenShift se volvió loco? 💣 Presentamos la arquitectura del plano de control de 4 y 5 nodos de OpenShift

Aumentando la resiliencia en clústeres activos-activos bare-metal: arquitectura del plano de control de 4 y 5 nodos (  versión 4.17 ⬆ )

Las organizaciones que ejecutan implementaciones activo-activo en dos ubicaciones , especialmente aquellas que alojan cargas de trabajo con estado, como las máquinas virtuales de OpenShift Virtualization que ejecutan una sola instancia , dependen en gran medida de la infraestructura subyacente para garantizar la disponibilidad.
Si bien las plataformas de virtualización tradicionales manejan esto de forma nativa, ejecutar estas cargas de trabajo en OpenShift bare metal introduce nuevas consideraciones arquitectónicas.

 

El desafío: ¿Qué sucede cuando falla el sitio principal? ⚠️

En los clústeres de OpenShift extendidos típicos, el plano de control a menudo se implementa en una topología 2+1 o 1+1+1 .
Pero si el centro de datos que aloja la mayoría de los nodos del plano de control se cae:

  • El nodo del plano de control superviviente se convierte en la única fuente de información veraz para el clúster.
  • Ese único nodo debe cambiar al modo de lectura y escritura y actuar como la copia exclusiva de etcd.
  • Si ese nodo falla… la recuperación se vuelve catastrófica , especialmente al ejecutar máquinas virtuales con estado.

Este riesgo se vuelve aún más crítico en entornos que aprovechan OpenShift Virtualization para cargas de trabajo de producción

 

La solución: Plano de control de 4 y 5 nodos para clústeres extendidos 🚀

Para aumentar la resiliencia durante fallas a nivel de centro de datos, OpenShift puede aprovechar implementaciones de plano de control de 4 o 5 nodos , como:

  • 2+2
  • 3+2

Con estos diseños, incluso si se pierde un sitio completo, la ubicación restante conserva dos copias de solo lectura de etcd , lo que aumenta significativamente la capacidad de recuperación del clúster y reduce el riesgo de perder el quórum

Actualmente, el operador cluster-etcd ya admite hasta cinco miembros etcd , con escalado automático en entornos que utilizan MachineSets.
Sin embargo, en instalaciones bare-metal o basadas en agentes , MachineSets no está disponible, lo que significa que el operador no escalará automáticamente, sino que ajustará los pares etcd cuando se agreguen manualmente nodos del plano de control .

Este es exactamente el flujo de trabajo que pretendemos validar y admitir oficialmente.

🔧 Nota: Esta capacidad está específicamente dirigida a clústeres bare-metal , con un fuerte enfoque en los casos de uso de virtualización de OpenShift .

 

Objetivos 🎯

Validar y admitir arquitecturas de plano de control de 4 y 5 nodos para clústeres bare-metal extendidos, bajo las siguientes restricciones:

  • Nodos de plano de control bare-metal
  • Instalado mediante el instalador asistido o el instalador basado en agentes
  • Red de capa 3 compartida entre ubicaciones
  • Latencia < 10 ms entre todos los nodos del plano de control
  • Ancho de banda mínimo de 10 Gbps
  • etcd almacenado en SSD o NVMe

 

Criterios de aceptación ✔️

📌 Rendimiento

El rendimiento y la escalabilidad del plano de control deben mostrar una degradación inferior al 10 % en comparación con los clústeres HA estándar.

📌 Procedimientos de recuperación

La documentación debe validarse y actualizarse para la recuperación manual del plano de control en casos de pérdida de quórum.

🧠 Mapeo de Redes de VMware — De vSphere a OpenShift Virtualization

Todo lo mostrado aquí está incluido en todas las suscripciones de OpenShift.

Al migrar desde VMware, una de las primeras dudas es cómo se trasladan los conceptos de red. Este post lo explica visualmente.

Figure 1: Virtual Machine Networking in OpenShift

Las VMs pueden conectarse a:

  • La SDN de OpenShift (red de pods/servicios)
  • Redes externas usando Multus + nmstate

Interfaces soportadas:

  • Linux Bridge
  • VLAN
  • Bond
  • Ethernet

Esto permite emular redes como las de VMware a nivel de nodo.

Figure 2: Core VMware to OpenShift Mapping

NIC física (vmnic) → Se configura con NodeNetworkConfigurationPolicy (NNCP)

VM Network → NetworkAttachmentDefinition (NAD)

Virtual Machine → Recurso VirtualMachine en OpenShift

Figure 3 & 4: OVS-Bridges and NADs

  • OVS-bridges son equivalentes a port groups distribuidos.
  • Las NADs representan esos port groups dentro de un proyecto OpenShift.!

Ejemplo: airgap-VLAN999 es una NAD dentro del proyecto, conectada al bridge definido por NNCP.

Figure 5: Micro-segmentation with OpenShift SDN

OpenShift supports NetworkPolicies to enable true micro-segmentation, even for VMs.

✅ Tu Puedes:

Gracias a las NetworkPolicies, OpenShift permite aislar tráfico:

  • Entre proyectos
  • Entre pods y VMs
  • Según puertos o etiquetas!

Ejemplos:

  • Permitir tráfico solo a la VM violeta en el puerto 8080
  • Bloquear tráfico del proyecto B al A
  • Permitir solo conexiones internas!

Todo esto también se aplica a VMs, sin costo adicional ni extensiones extra.

OpenShift permite crear una red virtualizada robusta y segura, compatible con prácticas de VMware — y todo está incluido con tu suscripción.

¿Cómo medir CPU Ready en OpenShift Virtualization? 🚀🤓

Todos los que administramos VMware sabemos de lo que hablamos cuando nombramos CPU Ready (%RDY) como Métrica de Rendimiento, entonces explicare que es, y como se mide en Openshift Virtualization.

 

¿Qué es CPU Ready?

El término “CPU Ready” puede dar lugar a malentendidos. Se podría pensar que representa la cantidad de CPU lista para ser usada y que un alto valor es algo positivo. Sin embargo, cuanto mayor sea el CPU Ready, peor será el rendimiento de la infraestructura vSphere y más sufrirán las aplicaciones.

Definición oficial de VMware:

Es el porcentaje de tiempo en que un «world» está listo para ejecutarse y esperando la aprobación del CPU Scheduler.

  • En vSphere, un «Ciclo» es un proceso.
  • Cuanto mayor sea el CPU Ready, más tiempo pasarán las VM sin ejecutar lo que deberían.

En otras palabras, un «Ciclo» es una vCPU esperando su turno para ejecutarse en un CPU físicoCPU Ready mide cuánto tiempo esa vCPU espera para ser programada y ejecutarse en un núcleo físico.

¿Qué causa un alto CPU Ready?

Identificar el alto uso de CPU es sencillo, pero encontrar la causa del CPU Ready puede ser más difícil. Las dos causas principales de un alto CPU Ready son:

  1. Alta sobreasignación de CPU (CPU Oversubscription)
  2. Uso de límites de CPU (CPU Limits)

Sobreasignación de CPU

  • La razón más común de CPU Ready alto es asignar más vCPUs de las que pueden ser manejadas por los CPU físicos.
  • Reglas generales para la relación vCPU:pCPU:
    • 1:1 a 1:3 → No hay problema.
    • 1:3 a 1:5 → Puede empezar a degradarse el rendimiento.
    • 1:5 o mayor → Probable problema de CPU Ready.

¿Cómo ver el CPU Ready en VMware?

  • La mejor manera de analizar CPU Ready es a nivel de VM y por vCPU, no a nivel de host.
  • En vSphere Client, en los gráficos de rendimiento, se puede agregar CPU Ready como métrica.
  • En esxtop, se puede ver el %RDY para cada VM.

¿Cuánto CPU Ready es “normal”?

  • VMware recomienda mantener CPU Ready por debajo del 5% por vCPU.
  • CPU Ready se mide en milisegundos (ms) en la UI de vSphere, pero para calcular el porcentaje real:
    • Si en 20 segundos (20000 ms) una VM tiene 2173 ms de CPU Ready, entonces: (2173 / 20000) = 10.87% → Esto es alto.

¿Cómo medir CPU Ready en OpenShift Virtualization?

En VMware vSphereCPU Ready (%RDY) mide el tiempo que una vCPU pasa esperando ser programada en un CPU físico.
En OpenShift Virtualization, no existe una métrica llamada CPU Ready directamente, pero el equivalente en Kubernetes y OpenShift se mide a través del CPU Throttling.

📌 Métrica equivalente en OpenShift:

  • container_cpu_cfs_throttled_seconds_total
    • Mide el tiempo total (en segundos) que un contenedor (o VM en OpenShift Virtualization) ha estado «throttled», es decir, ha sido limitado en su uso de CPU porque excedió los recursos asignados.

📌 Otras métricas relacionadas:

  • container_cpu_cfs_periods_total
    • Cantidad total de períodos de CPU asignados al contenedor.
  • container_cpu_cfs_throttled_periods_total
    • Número de períodos de CPU en los que la VM fue restringida.
  • Usar Grafana en OpenShift Monitoring
    • Si tenés configurado Prometheus y Grafana, podés crear un dashboard con:
      • Métrica: container_cpu_cfs_throttled_seconds_total
      • Filtro: {pod=~"mi-vm-.*"} (para enfocarse en VMs específicas)
  • Usar oc adm top para obtener CPU en tiempo real
    • Comando:oc adm top pods -n mi-namespace
    • Esto muestra el uso de CPU y memoria en tiempo real para cada VM.

🚀 Recomendaciones para evitar CPU Throttling en OpenShift Virtualization

  1. No usar CPU Limits innecesarios
    • Si una VM tiene un CPU Limit bajo, puede ser constantemente restringida, causando CPU Throttling alto.
    • En su lugar, definir solo CPU Requests y dejar el Limit abierto si el host tiene recursos disponibles.
  2. Monitorear y ajustar los recursos asignados
    • Revisar periódicamente las métricas de CPU Throttling en Prometheus/Grafana.
    • Asegurar que las VMs críticas tengan suficientes recursos.
  3. Evitar la sobreasignación de vCPUs en los nodos físicos
    • En OpenShift, asignar más vCPUs de las que tiene el nodo físico puede causar contención y throttling.
    • Seguir ratios recomendados de vCPU vs. pCPU.

📊 Umbrales para interpretar CPU Throttling en OpenShift

CPU Throttling (%)EstadoImpacto en el rendimiento
0 – 5%🔵 ÓptimoNo hay impacto en el rendimiento.
5 – 10%🟡 AdvertenciaPosible latencia en aplicaciones sensibles a la CPU.
10 – 20%🟠 Problema moderadoPueden aparecer retrasos y degradación en el rendimiento.
> 20%🔴 CríticoLa VM o contenedor está fuertemente limitado, afectando su desempeño.

🛠️ Comparación rápida: VMware vs. OpenShift Virtualization

ConceptoVMware (vSphere)OpenShift Virtualization (KubeVirt)
CPU Ready (%)%RDY en esxtopcontainer_cpu_cfs_throttled_seconds_total
Medición en GUIvSphere ClientOpenShift Grafana Dashboard
Medición CLIesxtopoc adm top pods + Prometheus
Causa principalCPU OversubscriptionCPU Limits o sobrecarga del nodo