Descubriendo Kubernetes

Explicación de los conceptos básicos de Kubernetes

Objectives

After completing this lesson, you will be able to:
  • Definir Kubernetes
  • Describir los desafíos que aborda y resuelve Kubernetes
  • Lista de seis características principales de Kubernetes

Escenario de uso: Conceptos básicos de Kubernetes

Una empresa opera una variedad de aplicaciones en sus propios sistemas autogestionados. El problema que tienen es que están ejecutando una carga de trabajo masiva de aplicaciones sin utilizar eficientemente sus recursos. Buscan una solución para gestionar sus aplicaciones y recursos de manera más eficiente en una plataforma escalable y confiable.

La empresa está considerando la Kubernetes gestionada por SAP que ofrece SAP BTP, tiempo de ejecución de Kyma, como una solución a su problema. Pueden seguir este recorrido de aprendizaje para obtener más información sobre la solución y sus capacidades. Si el equipo decide adoptar Kyma, también puede recomendarlo para incorporar nuevos desarrolladores que se unan a sus equipos.

¿Qué es Kubernetes?

Antes de explorar Kyma, veamos Kubernetes, la tecnología subyacente sobre la que Kyma está construida. Esencialmente, Kyma es una colección de extensiones para Kubernetes.

"Kubernetes, también conocido como K8s, es un sistema de código abierto para automatizar el despliegue, escalado y gestión de aplicaciones contenerizadas" (Kubernetes.io). Kubernetes es altamente portátil y puede ejecutarse casi en cualquier lugar, ya sea en una nube pública, privada o local. Todos los principales proveedores de nube ofrecen Kubernetes como un servicio gestionado (Kubernetes como servicio, o KaaS). SAP BTP, tiempo de ejecución de Kyma es uno de estos servicios gestionados de Kubernetes.

Kubernetes fue desarrollado inicialmente por Google en 2014 para manejar su enorme carga de trabajo de contenedores en funcionamiento en producción y se basa en muchos años de experiencia ejecutando cargas de trabajo de producción internamente. Dos años más tarde, fue donada a la Fundación de Computación Nativa en la Nube (CNCF). La Cloud Native Computing Foundation es una organización proveedora neutral fundada en 2015 para avanzar en el desarrollo de tecnologías nativas de la nube. Este consorcio y sus miembros (por ejemplo, SAP, Google, IBM, Red Hat, Docker, Microsoft, etc.) están trabajando juntos para definir el futuro de tecnologías nativas de la nube como Kubernetes.

Desafíos que aborda Kubernetes

Uno de los desafíos críticos que aborda Kubernetes es la gestión eficiente de las cargas de trabajo de las aplicaciones.

Muchas organizaciones suelen tener una amplia gama de aplicaciones que se ejecutan en sus servidores de producción, ya sea de metal desnudo o máquinas virtuales. Estas aplicaciones a menudo están estrechamente acopladas a la infraestructura subyacente y no son portátiles en diferentes entornos (por ejemplo, una instalación de software en un servidor Linux configurado específicamente). Esto dificulta el traslado de aplicaciones de un entorno a otro, por ejemplo, de un entorno de prueba a un entorno de producción o de un servidor fallido a uno saludable.

Al utilizar contenedores para enviar y operar aplicaciones, puede gestionar las aplicaciones de una manera más portátil y eficiente. Los contenedores empaquetan aplicaciones con todas sus dependencias como una unidad portátil y ejecutable (imagen del contenedor). La aplicación se puede enviar y ejecutar en casi cualquier entorno con un motor o tiempo de ejecución de contenedor instalado.

Además, desde un punto de vista económico, la mayoría de los servidores a menudo están sobreaprovisionados. En consecuencia, las empresas pagan un precio fijo por las capacidades asignadas de forma permanente (por ejemplo, potencia informática, capacidad de almacenamiento), que no se utilizan completamente. Esto también se conoce comúnmente como costes inactivos o costes de capacidad no utilizados y es particularmente cierto para servidores que operan cargas de trabajo que no se ejecutan a plena capacidad en todo momento (por ejemplo, durante noches o fines de semana).

Especialmente, si desea operar cientos o incluso miles de contenedores en producción simultáneamente, definitivamente necesita una manera de gestionarlos de manera eficiente.

Sin embargo, la gestión eficiente de las cargas de trabajo en varios hosts de su entorno de TI puede ser compleja y desafiante.

Ahí es donde entra Kubernetes. Kubernetes puede gestionar y organizar eficientemente las cargas de trabajo programándolas automáticamente en el host adecuado, escalándolas según sea necesario e implementando nuevas versiones de aplicaciones.

Por ejemplo, según la alta demanda actual, Kubernetes puede escalar automáticamente las aplicaciones horizontalmente (es decir, añadiendo más instancias) y equilibrar el tráfico entrante a través de esas instancias. Kubernetes también puede mover automáticamente aplicaciones de un host a otro si el host actual deja de estar disponible o si el host está sobreaprovisionado. Kubernetes reproduce Tetris® con contenedores para asegurarse de que las aplicaciones siempre se ejecutan y que se ejecutan de la manera más eficiente posible.

Por estas razones, Kubernetes también se conoce como Container Orchestrator.

Características de Kubernetes

Kubernetes tiene varias funciones que le permiten gestionar aplicaciones en contenedores de una manera escalable y confiable. Entre las características más importantes se encuentran las siguientes:

Descubrimiento de servicios y equilibrio de carga

Los contenedores se pueden exponer utilizando su nombre DNS o su dirección IP. Adoptando un enfoque de equilibrio de carga, Kubernetes puede distribuir el tráfico de red para estabilizar el despliegue cuando el tráfico de contenedores es demasiado alto.

Orquestación de almacenamiento

El almacenamiento se puede integrar automáticamente con Kubernetes utilizando un sistema de almacenamiento de su elección, como almacenamiento local, proveedores de nube pública o un sistema de almacenamiento en red.

Despliegues y rollbacks automatizados

Kubernetes le permite actualizar contenedores mediante actualizaciones continuas. Kubernetes comienza nuevos contenedores y luego mata a los viejos. Esta función también garantiza un tiempo de inactividad cero durante el despliegue. Si algo sale mal durante el proceso de lanzamiento, Kubernetes revierte el cambio por usted.

Inmutabilidad y autocuración

Todo en Kubernetes se define declarativamente. Especifique el estado deseado de una aplicación o infraestructura, y Kubernetes siempre garantiza que el estado actual coincida con el estado deseado. Cuando un contenedor se estrella, Kubernetes lo reinicia por usted. Cuando un nodo entero baja, Kubernetes mueve los contenedores a un nodo sano y apaga los contenedores que no responden a sus controles de estado personalizados.

Gestión de secretos y configuración

Puede utilizar Kubernetes para almacenar y gestionar información confidencial, como contraseñas, tokens y claves SSH. Puede implementar y actualizar secretos junto con configuraciones de aplicación sin volver a crear sus imágenes de contenedor o revelar información confidencial en aplicaciones.

Nota

Tenga en cuenta que no debe almacenar sus claves secretas en su sistema de control de versiones o código fuente. Como alternativa a los secretos de Kubernetes, también puede utilizar destinos de SAP BTP o un almacén de credenciales.
Extensibilidad y ecosistema

La API de Kubernetes viene con un conjunto estándar de implementaciones y objetos. Kubernetes a menudo define la API pero no la implementación concreta. Esto le permite utilizar y cambiar entre diferentes implementaciones de la misma API. Por ejemplo, puede utilizar diferentes sistemas de almacenamiento para volúmenes persistentes. También puede utilizar diferentes tiempos de ejecución de contenedor, como Docker, rkt y Rocket. Con el tiempo, el ecosistema de Kubernetes ha crecido a un tamaño donde se puede encontrar una solución para casi cualquier problema. Por ejemplo, hay soluciones para la grabación en log, la supervisión, las mallas de servicio, la entrada y muchas más. Trataremos algunos de ellos más adelante en este curso.

Para obtener una lista completa de todas las funciones de Kubernetes, consulte la documentación de Kubernetes.

Resumen

En esta lección, descubriste qué es Kubernetes, qué desafíos resuelve y cómo los resuelve. Además, ahora puede describir algunas de las características principales de Kubernetes.

Lectura adicional sobre conceptos básicos de Kubernetes

Para más información, véanse los siguientes sitios: