Tema representativo de entrevista

Entrevista de diseño de sistemas: ¿Cómo construirías la observabilidad del plano de control de Kubernetes con ComponentStatusz?

Diseño de sistemasDifícil
Equipo editorial de Offer.ccPublicado Actualizado

Pregunta

Kubernetes v1.36 promueve ComponentStatusz a Beta y lo habilita de forma predeterminada. Diseña una observabilidad multiclúster que detecte fallas en el plano de control sin expandir la superficie de ataque.

Planteamiento y alcance

Operas cientos de clústeres de Kubernetes. En v1.36, los componentes principales exponen /statusz, devolviendo texto legible por humanos de forma predeterminada y una API estructurada a través de una negociación de contenido explícita. Diseña la recolección, los permisos, la compatibilidad de versiones, las alertas y el aislamiento de fallas. Algunos clústeres todavía ejecutan versiones anteriores y los endpoints del plano de control no pueden ser públicos.

Qué evalúa el entrevistador

El entrevistador busca que separes las sondas de salud, el estado de los componentes y los SLO de negocio, mientras diseñas la autenticación, los límites de tasa, el análisis sintáctico de versiones y la degradación para muchos clústeres. Una respuesta sólida gestiona los campos sensibles, las tormentas de alertas, las fallas del recolector y un plano de control inaccesible.

Preguntas para aclarar primero

  • ¿Necesitas liveness, estado de dependencias o campos de diagnóstico versionados?
  • ¿Se ejecuta un recolector dentro de cada clúster o un plano central extrae los datos?
  • ¿Qué roles pueden leer statusz y las respuestas pueden exponer topología interna o versiones?
  • ¿Se espera una detección en segundos o son suficientes la capacidad y las tendencias a nivel de minutos?

Respuesta en 30 segundos

«Trataría a statusz como una señal de diagnóstico, no como una señal de salud del negocio. Un recolector dentro del clúster accede a los endpoints a través de la red privada con el privilegio mínimo, solicita una salida estructurada cuando está disponible y conserva el texto para el diagnóstico humano; los clústeres más antiguos usan una sonda de compatibilidad. La plataforma central agrega por clúster, componente y versión con límites de tasa, almacenamiento en caché y desduplicación de alertas. Un plano de control inaccesible es una falla en la ruta de recolección, no automáticamente una falla interna del componente».

Solución paso a paso

1. Definir señales y contratos de versiones

Registra la identidad del componente, la versión, el formato de respuesta, las verificaciones y las marcas de tiempo. Analiza sintácticamente los campos estructurados por versión, preservando los campos desconocidos sin depender de ellos; usa texto para visualización y evidencia. Mantén statusz separado de /livez, /readyz y las métricas de negocio.

2. Diseñar la topología de recolección

Ejecuta un recolector ligero dentro de cada clúster y accede al servidor de API, al scheduler y al controller manager a través de la red local. El centro recibe eventos de estado redactados y los agrega, evitando exponer endpoints públicos del plano de control. Proporciona al recolector una cola, backoff y caché local.

3. Aplicar autenticación y autorización

Crea una identidad de recolector de solo lectura con el alcance de recursos más reducido, limitando los endpoints de componentes y las rutas de red. Audita el lector, la frecuencia y el tamaño de la respuesta; nunca reutilices una credencial de administrador. Filtra los campos de versión o topología por inquilino y rol de operaciones cuando sea necesario.

4. Controlar la carga y las fallas

Establece concurrencia por componente, tiempos de espera, duración del caché y tamaño máximo de respuesta. Aplica backoff cuando el plano de control esté ocupado o inaccesible en lugar de amplificar el incidente con reintentos. Modela por separado la falla reportada por el componente, la falla de HTTP, la inaccesibilidad de la red y el trabajo acumulado del recolector.

5. Agregar y alertar

Construye series temporales por clúster, componente, versión y tipo de falla, utilizando huellas digitales de eventos para la desduplicación. Exige una ventana continua y un alcance de impacto, como varios componentes fallando o una concentración en una versión. Un único tiempo de espera agotado es una señal de diagnóstico de baja prioridad.

6. Implementar canary y revertir

Habilita la recolección estructurada primero en un conjunto pequeño de clústeres v1.36. Compara la carga de la API, la estabilidad de los campos, la precisión de las alertas y la latencia de recolección antes de expandir. Si los campos o la carga presentan regresiones, deshabilita el nuevo analizador sintáctico, regresa a la sonda de compatibilidad y retén las respuestas sin procesar y los registros de auditoría.

Respuesta modelo

Estratificaría statusz como diagnósticos del plano de control junto a las sondas de liveness y los SLO de negocio. Cada clúster ejecuta un recolector de solo lectura con privilegios mínimos a través de redes privadas; el centro recibe el estado redactado y lo agrega, mientras que las versiones anteriores usan una sonda de compatibilidad. Analiza sintácticamente las respuestas estructuradas por versión, tolera campos desconocidos y retén el texto para los operadores. Delimita la concurrencia, el tiempo de espera, la caché y el tamaño de respuesta, separando la falla del componente, la falla de red y el trabajo acumulado del recolector. Desduplica alertas por huella digital y ventana de tiempo. Realiza un despliegue canary en unos pocos clústeres v1.36 y deshabilita únicamente el nuevo analizador sintáctico cuando sea necesario.

Errores comunes

  • Tratar statusz como un SLO de negocio → la experiencia del usuario se clasifica erróneamente → estratifícalo con métricas de negocio.
  • Consultar centralizadamente endpoints públicos → la superficie de ataque aumenta → recolecta dentro del clúster y envía el estado de forma centralizada.
  • Reutilizar una credencial de administrador → las lecturas tienen privilegios excesivos → crea una identidad mínima de solo lectura.
  • Fallar toda la canalización ante un campo desconocido → las actualizaciones interrumpen la recolección → analiza sintácticamente de forma permisiva por versión.
  • Alertar ante cada tiempo de espera agotado → tormentas de alertas → separa la falla de ruta de la falla del componente y desduplica.

Preguntas de seguimiento y respuestas

¿Por qué conservar la respuesta de texto?

Los campos estructurados son para la agregación automática por máquinas; el texto ayuda a un operador a leer y preservar rápidamente la evidencia de incidentes. Provienen de un mismo endpoint pero cumplen diferentes propósitos.

¿Cómo evitas un falso positivo cuando el plano de control es inaccesible?

Modela por separado la inaccesibilidad de red, las fallas de autenticación, el trabajo acumulado del recolector y las fallas reportadas por los componentes. Escala una falla de componente solo con evidencia suficiente.

¿Cómo das soporte a clústeres más antiguos?

Sondea primero el endpoint y la versión, luego elige el análisis estructurado, el análisis de texto o una sonda de compatibilidad. Mantén una matriz de capacidades en lugar de asumir que todos los clústeres admiten la interfaz Beta.

¿Cómo evitas que la recolección ralentice el servidor de API?

Limita la frecuencia y la concurrencia, utiliza caché y backoff, restringe el tamaño máximo de respuesta y reduce automáticamente la frecuencia de recolección cuando aumente la carga del servidor de API.

Fuentes públicas

Preguntas relacionadas

Herramienta de entrevista relacionada

Usa Resolver para una respuesta de diseño de sistemas

Aclara primero los requisitos y luego avanza a través de la escala, la arquitectura, la elección de componentes y las compensaciones (trade-offs).

Ver la herramienta