¿Qué son los controladores y operadores de Kubernetes?

Foto de una lupa frente al logotipo de Kubernetes en la pantalla de una computadora Foto de una lupa frente al logotipo de Kubernetes en la pantalla de una computadora
dennizn / Shutterstock.com

Los términos "controlador" y "operador" de Kubernetes se refieren a dos modelos diferentes que hacen que un clúster pase al estado deseado. Los controladores son un concepto establecido, mientras que los operadores han surgido más recientemente para describir controladores específicos de la aplicación.

→ Índice de contenidos

El circuito de control

Los clústeres de Kubernetes funcionan en un bucle de control. Defina lo que debe hacer el clúster escribiendo y aplicando el manifiesto YAML. Los controladores dentro del clúster detectan los cambios necesarios y toman medidas para ajustar el estado. Esto ocurre de forma asincrónica, después de enviar su nuevo manifiesto.

Los controladores son responsables de monitorear los recursos del clúster, evaluar si se han desviado del estado definido y realizar los cambios necesarios para volver a alinearlos. Son componentes totalmente automatizados que funcionan sin intervención.

Hay varios tipos de controladores dentro del ecosistema. Algunos operan a nivel de clúster, mientras que otros administran sus cargas de trabajo. Los recursos diarios de Kubernetes que defina en su manifiesto pueden ser controladores: Deployment, ReplicaSet, y ejemplos similares satisfacen la definición de controlador. Se encargan de los objetos anidados para mantener un recuento de réplicas definido por el usuario.

¿Qué hace a un controlador?

Un controlador es cualquier cosa dentro de su clúster que rastrea al menos otro tipo de recurso de Kubernetes. Los controladores pueden ser pasivos o activos. Un controlador activo realizará las acciones necesarias por sí mismo; los pasivos comunicarán los cambios a otros componentes o al servidor API del clúster.

Dado que el papel de un controlador es intencionalmente abstracto, no tienen ninguna funcionalidad común que no sea la de monitorear objetos específicos. Es posible que tenga un controlador que borre automáticamente Pods con un eligible-for-autodelete anotación.

En Kubernetes, los controladores son solo un modelo para implementar la funcionalidad de bucle de control automatizado. Los controladores individuales tendrán propósitos y características únicos, pero siempre monitorearán los objetos o la configuración del clúster.

¿Y los operadores?

Un operador es una forma especializada de controlador. Los operadores implementan el patrón de controlador, lo que significa que mueven el clúster a un estado definido, pero también tienen algunas características adicionales. El término fue acuñado originalmente por CoreOS, pero ahora también ha sido adoptado de manera más amplia por Kubernetes.

Los operadores están personalizados para aplicaciones específicas. Agregan extensiones de API de Kubernetes a través de definiciones de recursos personalizadas, creando nuevos tipos de objetos que son utilizados por la aplicación que administran.

Varias aplicaciones populares de la comunidad ahora tienen sus propios operadores. Estos simplifican la instalación, configuración y mantenimiento del software administrado en el clúster. Hay operadores para etcd, Fluentd, Prometheus y muchos otros proyectos críticos que comúnmente se lanzan en clústeres.

Estas cargas de trabajo pueden ser complejas y estar formadas por varios componentes individuales. Es probable que incluyan lógica específica de la aplicación que debe administrarse durante el ciclo de vida de la instalación.

El concepto de operador proporciona una forma de monitorear estas aplicaciones utilizando los mismos principios que los controladores regulares. Un operador es simplemente un controlador especializado que utiliza recursos personalizados para mover una aplicación específica al estado correcto definido por el usuario.

Normalmente, los operadores se configuran proporcionando datos de configuración en un recurso personalizado. El operador usa su conocimiento de la aplicación para convertir esos datos en acciones específicas en el clúster. Estas acciones ensamblarán una instalación de aplicación funcional que coincida con el estado definido en el recurso de configuración.

¿Para qué sirven los operadores?

Dado que los operadores son específicos del dominio, cada uno incluirá una funcionalidad diferente. En general, puede esperar que un operador ofrezca algunas de las siguientes características:

  • Monitoreo y alertas automáticos - Los operadores generalmente saben cuándo sus aplicaciones no funcionan correctamente y generan las alertas adecuadas.
  • Actualizaciones automáticas de versiones a lo largo del tiempo - Los operadores a menudo pueden aplicar automáticamente cambios en el clúster para instalar nuevas actualizaciones de aplicaciones a medida que estén disponibles. Esto reduce significativamente la carga de mantenimiento para los equipos de operaciones.
  • Instalación de recursos personalizados - Los operadores agregarán los recursos personalizados de la aplicación al servidor API de Kubernetes, preparando el clúster para alojar la carga de trabajo.
  • Proporcionar escalado automático - Un operador con conocimientos específicos del dominio puede reconocer cuando el recuento de réplicas configuradas es demasiado bajo para atender cómodamente el tráfico actual y lanzar nuevas instancias para mantener el rendimiento.
  • Gestión del ciclo de vida - Los operadores se aseguran de que se inicien nuevas instancias de aplicaciones en un entorno en el que ya se cumplen todos los requisitos previos. También realizarán cualquier limpieza necesaria después de que se detenga una replicación.
  • Gestión de archivos y copias de seguridad - Algunos operadores ayudan a configurar un almacenamiento permanente. Debido a que comprenden su aplicación, también pueden realizar copias de seguridad antes de aplicar una acción potencialmente destructiva.

Reunir todas estas funciones desde cero antes de implementar una nueva carga de trabajo sería complicado y difícil de mantener. Los operadores le permiten lanzar sistemas complejos en su clúster mediante una estrategia de Kubernetes nativa, autogestionada y aprobada por el proveedor.

Los beneficios de los operadores se pueden ver claramente en algunas de las aplicaciones que los ofrecen. El software de control de versiones de GitLab es una pila compleja de componentes, pero su operador proporciona escalado automático, actualizaciones continuas y copias de seguridad totalmente automatizadas, así como una pila de vista de métricas utilizando Prometheus y Grafana. Todo está listo para usar cuando agrega el operador a su clúster.

Otro operador es MongoDB: ofrece una forma totalmente administrada de aprovisionar almacenamiento, bases de datos, usuarios y configuraciones de Mongo a partir de un único conjunto de especificaciones definidas por el usuario. Luego, el operador configura el clúster en consecuencia para admitir la carga de trabajo de la base de datos.

Puede escribir sus propios operadores creando un controlador con una de las bibliotecas cliente de Kubernetes. Los operadores se desarrollan utilizando la API REST de Kubernetes para consultar e interactuar con el clúster y sus objetos.

Conclusión

Los controladores y los operadores son términos de Kubernetes para describir los componentes del plano de control que monitorean los recursos y aplican acciones para cambiar el estado del clúster. Mientras que los controladores se encargan de las operaciones en el nivel de Kubernetes, los operadores tienen una lógica específica de dominio y están personalizados para aplicaciones individuales.

Si está utilizando un operador para instalar una aplicación, significa que está agregando un componente que verificará la instalación, verificará que funciona normalmente y automatizará las transiciones de estado para actualizaciones o cambios de configuración. Aunque los gráficos de Helm ya han resuelto el desafío de implementar una aplicación y sus dependencias, los operadores van un paso más allá: son proporcionados por el proveedor de la aplicación, tienen un conocimiento profundo de los requisitos de la carga de trabajo y son responsables de la instalación durante toda su vida útil. ciclo.

Es probable que los operadores continúen creciendo en visibilidad a medida que las aplicaciones con estado más complejas comiencen a ofrecerlos. La automatización del mantenimiento, las actividades del "segundo día" y las actualizaciones ayuda a reducir la carga de los equipos de operaciones extendidos y facilita a los recién llegados comenzar y trabajar con implementaciones listas para producción.

Subir Change privacy settings