Kubernetes es una poderosa herramienta de administración de contenedores que automatiza la implementación y administración de contenedores. Kubernetes (k8) es la próxima gran ola en la computación en la nube y es fácil ver por qué, a medida que las empresas migran su infraestructura y arquitectura para reflejar una era basada en datos y nativa de la nube.
¿Empezando con Kubernetes? Pruebe la Guía práctica de Kubernetes y comience a ejecutar clústeres de grado de producción.
En esta publicación se describen algunas de las principales razones por las que debe usar Kubernetes y cuándo debe/no debe usarlo.
Los contenedores son geniales. Le brindan una manera fácil de empaquetar e implementar servicios, permiten el aislamiento de procesos, la inmutabilidad, la utilización eficiente de recursos y son de creación liviana.
Pero cuando se trata de ejecutar contenedores en producción, puede terminar con docenas, incluso miles de contenedores a lo largo del tiempo. Estos contenedores deben implementarse, administrarse, conectarse y actualizarse; si tuviera que hacer esto manualmente, necesitaría un equipo completo dedicado a esto.
No es suficiente ejecutar contenedores; necesitas ser capaz de:
Podría preguntarse: ¿no se supone que los contenedores hacen todo eso? La respuesta es que los contenedores son solo una pieza de bajo nivel del rompecabezas. Los beneficios reales se obtienen con herramientas que se ubican sobre contenedores, como Kubernetes. Estas herramientas se conocen hoy como programadores de contenedores.
Dado que muchas de las empresas actuales se orientan hacia la arquitectura de microservicios, no sorprende que los contenedores y las herramientas utilizadas para administrarlos se hayan vuelto tan populares. La arquitectura de microservicios facilita la división de su aplicación en componentes más pequeños con contenedores que luego se pueden ejecutar en diferentes entornos de nube, lo que le brinda la opción de elegir el mejor host para sus necesidades. Lo bueno de Kubernetes es que está diseñado para usarse en cualquier lugar, por lo que puede implementarse en nubes públicas/privadas/híbridas, lo que le permite llegar a los usuarios donde están, con mayor disponibilidad y seguridad. Puede ver cómo Kubernetes puede ayudarlo a evitar peligros potenciales con el "bloqueo del proveedor".
Kubernetes permite a los equipos seguir el ritmo de los requisitos del desarrollo de software moderno. Sin Kubernetes, los equipos grandes tendrían que escribir manualmente sus propios flujos de trabajo de implementación. Los contenedores, combinados con una herramienta de orquestación, le brindan administración de máquinas y servicios, lo que mejora la confiabilidad de su aplicación y reduce la cantidad de tiempo y recursos dedicados a DevOps.
Kubernetes tiene algunas características excelentes que le permiten implementar aplicaciones más rápido teniendo en cuenta la escalabilidad:
“Antes de Kubernetes, nuestra infraestructura era tan anticuada que tardamos más de seis meses en implementar un nuevo microservicio. Hoy en día, un nuevo microservicio tarda menos de cinco días en implementarse. Y estamos trabajando para que llegue a una hora”. - Caja
Los contenedores permiten que las aplicaciones se dividan en partes más pequeñas que luego se pueden administrar a través de una herramienta de orquestación como Kubernetes. Esto facilita la administración de bases de código y la prueba de entradas y salidas específicas.
Como se mencionó anteriormente, Kubernetes tiene características integradas como la recuperación automática y los lanzamientos/retrocesos automáticos, que administran los contenedores de manera efectiva.
Para ir aún más lejos, Kubernetes permite expresiones declarativas del estado deseado en lugar de la ejecución de un script de implementación, lo que significa que un programador puede monitorear un clúster y realizar acciones siempre que el estado real no coincida con el deseado. Puede pensar en los planificadores como operadores que supervisan continuamente el sistema y corrigen las discrepancias entre el estado deseado y el real.
**Si su aplicación usa una arquitectura de microservicios**Si ha hecho la transición o está buscando hacer la transición a una arquitectura de microservicios, entonces Kubernetes le conviene porque es probable que ya esté usando un software como Docker para contener su aplicación.
**Si sufre un desarrollo e implementación lentos**Si no puede cumplir con las demandas de los clientes debido a un tiempo de desarrollo lento, entonces Kubernetes podría ayudarlo. En lugar de que un equipo de desarrolladores dedique su tiempo a concentrarse en el ciclo de vida de desarrollo e implementación, Kubernetes (junto con Docker) puede administrarlo de manera efectiva para que el equipo pueda dedicar su tiempo a un trabajo más significativo que saca los productos a la venta.
“Nuestros equipos internos tienen menos necesidad de concentrarse en el aprovisionamiento de capacidad manual y más tiempo para concentrarse en ofrecer funciones para Spotify”.—Spotify
**Costos de infraestructura más bajos** Kubernetes utiliza un modelo de administración de recursos eficiente a nivel de contenedor, pod y clúster, lo que lo ayuda a reducir los costos de infraestructura en la nube al garantizar que sus clústeres siempre tengan recursos disponibles para ejecutar aplicaciones.
**Aplicaciones simples y livianas**Si su aplicación utiliza una arquitectura monolítica, puede ser difícil ver los beneficios reales de los contenedores y una herramienta utilizada para organizarlos. Esto se debe a que la naturaleza misma de una arquitectura monolítica es tener cada parte de la aplicación entrelazada, desde IO hasta el procesamiento de datos y la representación, mientras que los contenedores se utilizan para separar su aplicación en componentes individuales.
**La cultura no refleja los cambios que se avecinan**Kubernetes notoriamente tiene una curva de aprendizaje pronunciada, lo que significa que pasará una buena cantidad de tiempo educando a los equipos y abordando los desafíos de una nueva solución, etc. Si no tiene un equipo que está dispuesto a experimentar y asumir riesgos, entonces probablemente no sea la opción para ti.
En general, Kubernetes cuenta con algunas características bastante buenas que pueden tener un impacto positivo en sus equipos de desarrollo/DevOps y para el negocio en general. Si desea comenzar con Kubernetes, puede consultar Una guía práctica de Kubernetes , escrita por Viktor Farcic, promotor de desarrolladores en CloudBees, miembro de los grupos de expertos en desarrolladores de Google y de capitanes de Docker, y autor publicado.