Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, la gestión y el escalamiento de aplicaciones. Descubra cómo Kubernetes permite un desarrollo rentable y nativo de la nube.
Kubernetes, también conocido como "k8s" o "kube", es una plataforma de orquestación de contenedores para planificar y automatizar la implementación, la gestión y el escalamiento de aplicaciones contenedorizadas.
Kubernetes fue desarrollado por primera vez por ingenieros en Google antes de pasarse a código abierto en 2014. Es un descendiente de "Borg", una plataforma de orquestación de contenedores utilizada internamente en Google. Kubernetes es griego para timonel o piloto, de ahí el timón en el Logotipo de Kubernetes (el enlace se encuentra fuera de ibm.com).
Hoy, Kubernetes y el ecosistema de contenedores más amplio están madurando hacia una plataforma de computación de uso general y un ecosistema que rivaliza, si no supera, a las máquinas virtuales (VM) como los componentes básicos de la moderna infraestructura y aplicaciones en la nube. Esta ecosistema permite a las organizaciones ofrecer una alta productividad Plataforma como servicio (PaaS) que aborde múltiples tareas y problemas relacionados con la infraestructura y las operaciones nativo de la nube desarrollo para que los equipos de desarrollo puedan centrarse únicamente en la codificación y la innovación.
El siguiente video proporciona una excelente introducción a los conceptos básicos de Kubernetes:
Lea el libro electrónico (1,4 MB)
Contenedores son componentes de aplicaciones ejecutables y ligeros que combinan el código fuente de la aplicación con todas las sistema operativo (SO) bibliotecas y dependencias necesario para ejecutar el código en cualquier entorno.
Los contenedores aprovechan una forma de Virtualización de sistema operativo (OS) que permite a varias aplicaciones compartir el sistema operativo aislando procesos y controlando la cantidad de CPU, memoria y disco a los que pueden acceder dichos procesos. Porque son más pequeños, más eficientes en recursos y más portátiles que maquinas virtuales (VM), los contenedores se han convertido en de facto calcular unidades de moderno nativo de la nube aplicaciones.
En unestudio reciente de IBM (PDF, 1,4 MB) Los usuarios informaron sobre varios beneficios técnicos y comerciales específicos que resultan de la adopción de contenedores y tecnologías relacionadas.
Puede ser más fácil o útil entender los contenedores como el último punto en la escala continua de automatización y abstracción de la infraestructura de TI.
En la infraestructura tradicional, las aplicaciones se ejecutan en un servidor físico y consumen todos los recursos que pueden obtener. Esto le deja la opción de ejecutar varias aplicaciones en un solo servidor y esperar que uno no consuma recursos a expensas de los demás o dedique un servidor por aplicación, lo que desperdicia recursos y no permite escalar.
Las máquinas virtuales (VM) son servidores abstraídos del hardware del sistema real, lo que le permite ejecutar varias máquinas virtuales en un servidor físico o una única máquina virtual que se extiende en más de un servidor físico. Cada VM ejecuta su propia instancia del sistema operativo, y usted puede aislar cada aplicación en su propia VM, reduciendo la posibilidad de que las aplicaciones que se ejecuten en el mismo hardware físico subyacente afecten unas a otras. Las máquinas virtuales hacen un mejor uso de los recursos y son mucho más fáciles y rentables de escalar que la infraestructura tradicional. Además, son desechables. Cuando ya no necesite ejecutar la aplicación, puede retirar la máquina virtual.
Para obtener más información sobre máquinas virtuales, consulte "Máquinas virtuales: una guía esencial . "
Los contenedores llevan esta abstracción a un nivel superior: específicamente, además de compartir el hardware virtualizado subyacente, también comparten un núcleo de SO virtualizado subyacente. Los contenedores ofrecen el mismo aislamiento, escalabilidad y capacidad de disposición que las máquinas virtuales, pero debido a que no llevan la carga útil de su propia instancia del sistema operativo, son más ligeros (es decir, ocupan menos espacio) que las máquinas virtuales. Sus recursos son más eficientes: permiten ejecutar más aplicaciones en menos máquinas (virtuales y físicas), con menos instancias de SO. Los contenedores son más fácilmente portables en entornos de desktop, centro de datos y nube. Y son una excelente opción para las prácticas de desarrollo de Agile y DevOps.
"Contenedores: una guía esencial"ofrece una explicación completa de los contenedores ycontenedorización. Y la publicación del blog "Contenedores frente a máquinas virtuales: ¿cuál es la diferencia? "ofrece un resumen completo de las diferencias.
Docker es la herramienta más popular para crear y ejecutar contenedores Linux®. Mientras que las primeras formas de contenedores se introdujeron hace décadas (con tecnologías como FreeBSD Jails y AIX Workload Partitions), los contenedores se democratizaron en 2013 cuando Docker los llevó a las masas con una nueva implementación apta para desarrolladores y la nube.
Docker comenzó como un proyecto de código abierto, pero hoy también se refiere a Docker Inc., la empresa que produce Docker, un kit de herramientas de contenedores comerciales que se basa en el proyecto de código abierto (y contribuye a las mejoras en la comunidad de código abierto).
Docker se construyó en la tecnología tradicional de contenedor Linux (LXC), pero permite una virtualización más granular de los procesos de kernel de Linux y añade funciones para facilitar a los desarrolladores la creación, la implementación, la gestión y la seguridad de los desarrolladores.
Si bien actualmente existen otras plataformas de contenedores alternativas (como Open Container Initiative [OCI], CoreOS y Canonical [Ubuntu] LXD), el uso de Docker es tan predominante que es prácticamente sinónimo de contenedores y a veces se confunde como competidor de tecnologías gratuitas como Kubernetes (vea el video "Kubernetes frente a Docker: no es una pregunta de si ambos o de si” a continuación).
Conozca más
La proliferación actual de los contenedores (una organización puede tener cientos o miles de ellos), intensifica la necesidad de los equipos de operaciones de planificar y automatizar la implementación de contenedores, las redes, la escalabilidad y la disponibilidad. Y así, el mercado de orquestación de contenedores nació.
Mientras que otras opciones de orquestación de contenedores, sobre todo Docker Swarm y Apache Mesos, ganaron algo de impulso antes, Kubernetes rápidamente se convirtió en el más ampliamente adoptado (de hecho, en un momento, fue el proyecto de más rápido crecimiento en la historia del software de código abierto).
Los desarrolladores eligieron y continúan eligiendo Kubernetes por su amplitud de funcionalidad, su vasto y creciente ecosistema de código abierto herramientas de apoyo, y su soporte y portabilidad a lo largo de proveedores de servicio de almacenamiento en la nube. Todo el público líder proveedores en la nube - incluidos Amazon Web Services (AWS), Google Cloud, IBM Cloud y Microsoft Azur - ofrecer completamente administrado Kubernetes Services.
Para obtener más información sobre la orquestación de contenedores, vea el video "Orquestación de contenedores explicada":
Kubernetes programa y automatiza tareas relacionadas con el contenedor en toda la aplicación ciclo de vida, que incluye:
Si ha leído hasta aquí, ya comprende que mientras Kubernetes es una alternativa a Docker Swarm, no es (contrariamente a la persistente creencia popular) una alternativa o un competidor del propio Docker.
De hecho, si ha adoptado con entusiasmo a Docker y está creando implementaciones de contenedores basados en Docker a gran escala, la orquestación de Kubernetes es un paso lógico para gestionar estas cargas de trabajo. Para obtener más información, vea "Kubernetes frente a Docker: no es una cuestión de lo uno o lo otro":
Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite
IBM Cloud Code Engine
IBM Cloud Kubernetes Service
Los componentes principales de la arquitectura de Kubernetes incluyen los siguientes:
Los clústeres son los bloques de construcción de la arquitectura de Kubernetes. Los clústeres se componen de nodos, cada uno de los cuales representa un único host de computación (máquina virtual o física).
Cada grupo consta de un nodo maestro que sirve como plan de control para el clúster, y múltiples nodos trabajadores que implementan, ejecutan y administran contenerizado aplicaciones. El nodo maestro ejecuta un servicio de planificador que automatiza cuándo y dónde se implementan los contenedores basándose en los requisitos de implementación del conjunto de desarrolladores y en la capacidad de computación disponible. Cada nodo de trabajo incluye la herramienta que se está utilizando para gestionar los contenedores, como Docker — y un agente de software llamado Kubelet que recibe y ejecuta órdenes del nodo maestro.
Los desarrolladores administran las operaciones del clúster mediante kubectl, a línea de comando interfaz (cli) que se comunica directamente con Kubernetes API.
Para una inmersión más profunda en Clústeres de Kubernetes, consulte esta publicación de blog: "Clústeres de Kubernetes: arquitectura para una entrega rápida y controlada de aplicaciones en la nube. "
Pods son grupos de contenedores que comparten los mismos recursos de computación y la misma red. También son la unidad de escalabilidad en Kubernetes: si un contenedor en un pod recibe más tráfico del que puede manejar, Kubernetes replicará el pod en otros nodos del clúster. Por esta razón, es una buena práctica mantener los pods compactos para que contengan solo contenedores que deben compartir recursos.
La implementación controla la creación y el estado de la aplicación en contenedores y la mantiene en ejecución. Especifica cuántas réplicas de un pod deben ejecutarse en el clúster. Si falla un pod, la implementación creará uno nuevo.
Para obtener más información sobre las implementaciones de Kubernetes, consulte "Implementaciones de Kubernetes: comience rápidamente":
IBM Cloud Paks
Kubernetes puede implementar y escalar pods, pero no puede gestionar ni automatizar el enrutamiento entre ellos y no proporciona ninguna herramienta para supervisar, proteger o depurar estas conexiones. A medida que crece el número de contenedores en un clúster, el número de posibles vías de acceso de conexión entre ellos aumenta exponencialmente (por ejemplo, dos contenedores tienen dos conexiones potenciales, pero 10 pods tienen 90), lo cual podría representar una configuración y gestión problemáticas.
Ingrese a Istio, una fuente abiertamalla de servicio capa para clústeres de Kubernetes. Para cada clúster de Kubernetes, Istio añade un contenedor sidecar, básicamente invisible para el programador y el administrador, que configura, supervisa y gestiona las interacciones entre los otros contenedores.
Con Istio, se establece una única política que configura las conexiones entre contenedores para que no tenga que configurar cada conexión individualmente. Esto hace que las conexiones entre contenedores sean más fáciles de depurar.
Istio también proporciona un panel de control que los equipos y administradores de DevOps pueden utilizar para supervisar la latencia, los errores de tiempo en servicio y otras características de las conexiones entre contenedores. Además, integra seguridad (específicamente, la gestión de identidades que impide que usuarios no autorizados suplanten una llamada de servicio entre contenedores) y funcionalidades de autenticación, autorización y auditoría (AAA) que los profesionales de seguridad pueden utilizar para supervisar el clúster.
Vea el artículo “¿Qué es?” para más detalles, incluyendo un video y algunos ejemplos de Istio en uso.
Knative (pronunciado "kay-native") es una plataforma de código abierto que reside sobre Kubernetes y proporciona dos tipos de ventajas importantes para el desarrollo nativo de la nube:
La computación sin servidor es una forma relativamente nueva de implementar código que hace que las aplicaciones nativas de la nube sean más eficientes y rentables. En lugar de implementar una instancia de código en curso que se encuentra inactivo mientras espera solicitudes, la computación sin servidor trae el código "cuando se necesita", escalándolo a medida que la demanda fluctúa, y luego remueve el código cuando no está en uso. La computación sin servidor evita la pérdida de capacidad de computación y potencia y reduce los costos, porque usted solo paga para ejecutar el código cuando se ejecuta realmente.
Knative permite a los desarrolladores crear un contenedor una vez y ejecutarlo como un serviciode software o como una función sin servidor. Todo es transparente para el desarrollador: Knative maneja los detalles en segundo plano y el desarrollador puede concentrarse en el código.
Para los desarrolladores, el código contenedorizado requiere demasiados pasos repetitivos, y la orquestación de contenedores requiere mucha configuración y scripts (como generar archivos de configuración, instalar dependencias, gestionar el registro y el rastreo, y escribir scripts de integración continua/implementación continua (CI/CD).
Knative facilita estas tareas automatizándolas por medio de tres componentes:
Puede obtener más información sobre Knative leyendo "Knative: una guía esencial".
Kubernetes es uno de los proyectos de código abierto de mayor crecimiento en la historia, y su crecimiento se está acelerando. La adopción sigue aumentando entre los desarrolladores y las empresas que la emplean. Algunos puntos de datos que vale la pena señalar:
Si está preparado para empezar a trabajar con Kubernetes o quiere desarrollar sus habilidades con Kubernetes y las herramientas del ecosistema de Kubernetes, pruebe uno de estos tutoriales:
Los contenedores son ideales para modernizando sus aplicaciones y optimizando su infraestructura de TI . Construida sobre Kubernetes y otras herramientas en el ecosistema de Kubernetes de código abierto, los servicios de contenedor de IBM Cloud pueden facilitar y acelerar su recorrido hacia el desarrollo de aplicaciones nativo de la nube y a un enfoque de nube híbrida abierta que integre las mejores características y funciones de la nube privada, nube publica e infraestructura de TI on-premises.
Dé el siguiente paso:
Para empezar de inmediato, inscríbase para tener una cuenta en IBM Cloud.
Cree, modernice y gestione aplicaciones de forma segura en cualquier nube, con confianza.
Una estrategia en la nube híbrida abierta le permite crear y gestionar cargas de trabajo desde cualquier lugar, sin dependencia de un proveedor
Aproveche las soluciones de infraestructura local abiertas, flexibles y seguras para desbloquear su estrategia de nube híbrida
Implemente clústeres altamente disponibles y completamente gestionados con un clic
Descubra insights extraídos de los datos que pueden ayudar a resolver problemas de negocios y de investigación.
Ejecute su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor completamente administrado.