Kubernetes es un software que administra, escala y mantiene automáticamente las cargas de trabajo de varios contenedores en los estados deseados.
El software moderno se ejecuta cada vez más como cargueros de contenedores, a veces llamados microservicios. Una aplicación completa puede comprender muchos contenedores, y todos deben trabajar juntos de formas específicas. Kubernetes es una de las soluciones cloud preferidas por empresas ya que se trata de un software que convierte una colección de hosts físicos o virtuales (servidores) en una plataforma que:
- Aloja cargas de trabajo en contenedores, proporcionándoles recursos informáticos, de almacenamiento y de red, y
- Administra automáticamente una gran cantidad de aplicaciones en contenedores, manteniéndolas en buen estado y disponibles al adaptarse a los cambios y desafíos
¿Cómo funciona Kubernetes?
- Cuando los desarrolladores crean una aplicación de múltiples contenedores, planifican cómo encajan y funcionan juntas todas las partes, cuántos de cada componente deben ejecutarse y, aproximadamente, qué debe suceder cuando se encuentran desafíos (por ejemplo, muchos usuarios inician sesión a la vez).
- Almacenan sus componentes de aplicación en contenedores en un registro contenedor (local o remoto) y capturan este pensamiento en uno o varios archivos de texto que comprenden una configuración. Para iniciar la aplicación, “aplican” la configuración a Kubernetes.
- El trabajo de Kubernetes es evaluar e implementar esta configuración y mantenerla hasta que se indique lo contrario. Eso:
- Analiza la configuración, alineando sus requisitos con los de todas las demás configuraciones de aplicaciones que se ejecutan en el sistema.
- Encuentra recursos apropiados para ejecutar los nuevos contenedores (por ejemplo, algunos contenedores pueden necesitar recursos como GPU que no están presentes en todos los hosts)
- Toma imágenes de contenedores del registro, inicia los nuevos contenedores y los ayuda a conectarse entre sí y a los recursos del sistema (por ejemplo, almacenamiento persistente), para que la aplicación funcione como un todo.
- Luego, Kubernetes monitorea todo, y cuando los eventos reales divergen de los estados deseados, Kubernetes intenta arreglar las cosas y adaptarse. Por ejemplo, si un contenedor falla, Kubernetes lo reinicia. Si un servidor subyacente falla, Kubernetes encuentra recursos en otro lugar para ejecutar los contenedores que alojaba el nodo. Si el tráfico a una aplicación aumenta repentinamente, Kubernetes puede escalar los contenedores para manejar la carga adicional, de conformidad con las reglas y los límites establecidos en la configuración.
¿Por qué usar Kubernetes?
Uno de los beneficios de Kubernetes es que simplifica mucho la creación y ejecución de aplicaciones complejas. Aquí hay un puñado de las muchas características de Kubernetes:
- Servicios estándar como DNS local y balanceo de carga básico que la mayoría de las aplicaciones necesitan y son fáciles de usar.
- Comportamientos estándar (por ejemplo, reiniciar este contenedor si muere) que son fáciles de invocar y hacen la mayor parte del trabajo para mantener las aplicaciones en ejecución, disponibles y con buen rendimiento.
- Un conjunto estándar de «objetos» abstractos (llamados cosas como «vainas», «conjuntos de réplicas» e «implementaciones») que envuelven contenedores y facilitan la creación de configuraciones alrededor de colecciones de contenedores.
- Una API estándar a la que las aplicaciones pueden llamar para habilitar fácilmente comportamientos más sofisticados, lo que facilita mucho la creación de aplicaciones que administran otras aplicaciones.
La respuesta simple a «¿para qué se usa Kubernetes?» es que ahorra a los desarrolladores y operadores una gran cantidad de tiempo y esfuerzo, y les permite concentrarse en crear características para sus aplicaciones, en lugar de descubrir e implementar formas de mantener sus aplicaciones funcionando bien. , a escala.
Al mantener las aplicaciones en funcionamiento a pesar de los desafíos (por ejemplo, servidores fallidos, contenedores colapsados, picos de tráfico, etc.), Kubernetes también reduce los impactos comerciales, reduce la necesidad de simulacros de incendio para volver a poner en línea las aplicaciones dañadas y protege contra otras responsabilidades, como los costos de no cumplir con los acuerdos de nivel de servicio (SLA).