paint-brush
Por qué (y cuándo) debería usar Kubernetespor@fahimulhaq
37,681 lecturas
37,681 lecturas

Por qué (y cuándo) debería usar Kubernetes

por Fahim ul Haq2019/07/11
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

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.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Por qué (y cuándo) debería usar Kubernetes
Fahim ul Haq HackerNoon profile picture

Por qué (y cuándo) debería usar Kubernetes

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.

Orquestación de contenedores

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:

  • Integre y organice estas piezas modulares
  • Escalar hacia arriba y hacia abajo en función de la demanda
  • Hágalos tolerantes a fallas
  • Proporcionar comunicación a través de un clúster

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.

Excelente para la adopción de múltiples nubes

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".

Implemente y actualice aplicaciones a escala para agilizar el tiempo de comercialización

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:

  • Escalamiento horizontal de la infraestructura: se pueden agregar o quitar nuevos servidores fácilmente.
  • Escalado automático: cambie automáticamente la cantidad de contenedores en ejecución, según la utilización de la CPU u otras métricas proporcionadas por la aplicación.
  • Escalado manual: Escale manualmente el número de contenedores en ejecución a través de un comando o la interfaz.
  • Controlador de replicación: el controlador de replicación se asegura de que su clúster tenga la misma cantidad de pods en ejecución. Si hay demasiados pods, el controlador de replicación finaliza los pods adicionales. Si hay muy pocos, inicia más pods.
  • Comprobaciones de estado y autorreparación: Kubernetes puede comprobar el estado de los nodos y los contenedores para garantizar que su aplicación no tenga errores. Kubernetes también ofrece reparación automática y reemplazo automático para que no tenga que preocuparse si falla un contenedor o un pod.
  • Enrutamiento de tráfico y equilibrio de carga: el enrutamiento de tráfico envía solicitudes a los contenedores apropiados. Kubernetes también viene con balanceadores de carga incorporados para que pueda equilibrar los recursos para responder a interrupciones o períodos de alto tráfico.
  • Implementaciones y reversiones automatizadas: Kubernetes maneja las implementaciones de nuevas versiones o actualizaciones sin tiempo de inactividad mientras monitorea el estado de los contenedores. En caso de que la implementación no vaya bien, se revierte automáticamente.
  • Implementaciones canarias: las implementaciones canarias le permiten probar la nueva implementación en producción en paralelo con la versión anterior.

“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

Mejor gestión de sus aplicaciones

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.

Descripción general/beneficios adicionales

  • Puede usarlo para implementar sus servicios, implementar nuevas versiones sin tiempo de inactividad y escalar (o reducir la escala) esos servicios.
  • es portátil
  • Puede ejecutarse en una nube pública o privada.
  • Puede ejecutarse en las instalaciones o en un entorno híbrido.
  • Puede mover un clúster de Kubernetes de un proveedor de hospedaje a otro sin cambiar (casi) ninguno de los procesos de implementación y administración.
  • Kubernetes se puede ampliar fácilmente para satisfacer casi cualquier necesidad. Puede elegir qué módulos usará y puede desarrollar características adicionales usted mismo y conectarlas.
  • Kubernetes decidirá dónde ejecutar algo y cómo mantener el estado que especifique.
  • Kubernetes puede colocar réplicas del servicio en el servidor más apropiado, reiniciarlas cuando sea necesario, replicarlas y escalarlas.
  • La autorreparación es una característica incluida en su diseño desde el principio. Por otro lado, la autoadaptación también llegará pronto.
  • Las implementaciones sin tiempo de inactividad, la tolerancia a fallas, la alta disponibilidad, el escalado, la programación y la recuperación automática agregan un valor significativo en Kubernetes.
  • Puede usarlo para montar volúmenes para aplicaciones con estado.
  • Le permite almacenar información confidencial como secretos.
  • Puede usarlo para validar la salud de sus servicios.
  • Puede cargar solicitudes de balance y monitorear recursos.
  • Proporciona detección de servicios y fácil acceso a los registros.

Cuándo debes usarlo


**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.

Cuándo no deberías usarlo


**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.

¿Que sigue?

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.