Temas Avanzados de Kubernetes y Arquitectura
Explica el concepto de un Operador de Kubernetes y proporciona un ejemplo de cuándo usarías uno.
Respuesta:
Un Operador de Kubernetes es un método para empaquetar, desplegar y gestionar una aplicación nativa de Kubernetes. Extiende la API de Kubernetes para crear, configurar y gestionar instancias de aplicaciones complejas. Usarías un Operador para aplicaciones con estado (stateful) como bases de datos (por ejemplo, Cassandra, MySQL) para automatizar tareas como copias de seguridad, actualizaciones y escalado.
Describe el propósito de una Definición de Recurso Personalizado (CRD) en Kubernetes.
Respuesta:
Una Definición de Recurso Personalizado (CRD) te permite definir tus propios recursos personalizados en Kubernetes, extendiendo la API de Kubernetes. Esto te permite almacenar y recuperar datos estructurados que Kubernetes puede gestionar. Las CRDs son fundamentales para construir Operadores y definir objetos específicos de la aplicación.
¿Cómo maneja el API Server de Kubernetes la autenticación y autorización de las solicitudes?
Respuesta:
El API Server maneja la autenticación a través de varios métodos como certificados de cliente, tokens de portador (bearer tokens) o tokens de cuentas de servicio. Después de la autenticación, la autorización se realiza utilizando módulos como RBAC (Role-Based Access Control), autorización de Nodos o ABAC (Attribute-Based Access Control). RBAC es el más común, definiendo roles con permisos y vinculándolos a usuarios o cuentas de servicio.
¿Cuál es la diferencia entre un DaemonSet y un Deployment en Kubernetes?
Respuesta:
Un Deployment gestiona un conjunto de pods idénticos, asegurando que un número deseado de réplicas estén en ejecución en todo el clúster, típicamente para aplicaciones sin estado (stateless). Un DaemonSet asegura que todos (o algunos) nodos ejecuten una copia de un pod, útil para servicios a nivel de clúster como recolectores de logs (por ejemplo, Fluentd) o agentes de monitorización (por ejemplo, Node Exporter) que necesitan ejecutarse en cada nodo.
Explica el concepto de Políticas de Seguridad de Pods (PSPs) y por qué están siendo deprecadas.
Respuesta:
Las Políticas de Seguridad de Pods (PSPs) eran un controlador de admisión que aplicaba estándares de seguridad a pods y contenedores. Permitían a los administradores del clúster controlar aspectos sensibles de seguridad como el modo privilegiado, el acceso a la red del host y los tipos de volúmenes. Las PSPs están siendo deprecadas en favor de la Admisión de Seguridad de Pods (PSA) y motores de políticas como OPA Gatekeeper, que ofrecen un control más flexible y granular.
¿Cómo se logra la alta disponibilidad para el plano de control de Kubernetes?
Respuesta:
La alta disponibilidad para el plano de control se logra ejecutando múltiples instancias del API Server, etcd, Controller Manager y Scheduler. etcd típicamente se ejecuta como un clúster basado en quórum (por ejemplo, 3 o 5 nodos). Se coloca un balanceador de carga delante de los API Servers para distribuir el tráfico y proporcionar failover.
¿Qué es un webhook de admisión mutador (mutating admission webhook) y cómo se puede utilizar?
Respuesta:
Un webhook de admisión mutador es una devolución de llamada HTTP que puede modificar las solicitudes al servidor de la API de Kubernetes antes de que se persistan. Puede inyectar contenedores sidecar, añadir etiquetas/anotaciones o establecer valores predeterminados para los campos. Por ejemplo, puede inyectar automáticamente un sidecar istio-proxy en los pods para la integración de service mesh.
Describe el rol de etcd en un clúster de Kubernetes.
Respuesta:
etcd sirve como el almacén de clave-valor consistente y altamente disponible de Kubernetes. Almacena todos los datos del clúster, incluyendo la configuración, el estado y los metadatos de todos los objetos de Kubernetes (pods, deployments, services, etc.). Es crítico para la operación del clúster, y su disponibilidad impacta directamente en la salud del clúster.
¿Cómo aplica Kubernetes la política de red?
Respuesta:
Las Políticas de Red de Kubernetes son especificaciones que definen cómo los grupos de pods pueden comunicarse entre sí y con puntos finales externos. Son implementadas por un plugin de red (CNI) que soporta NetworkPolicy, como Calico, Cilium o Weave Net. El plugin CNI traduce estas políticas en reglas de firewall.
¿Qué son Taints y Tolerations, y cómo se utilizan para la programación de pods?
Respuesta:
Los Taints se aplican a los nodos, marcándolos como 'no aptos' para ciertos pods a menos que esos pods tengan Tolerations coincidentes. Las Tolerations se aplican a los pods, permitiéndoles ser programados en nodos con taint. Este mecanismo se utiliza para reservar nodos para cargas de trabajo específicas (por ejemplo, nodos GPU) o para desalojar pods de nodos no saludables.