Kubernetes
fondo negro y azul
¿Qué es Kubernetes?

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:

Contenedores en la empresa: una nueva investigación de IBM documenta el impulso creciente de la adopción de contenedores y Kubernetes.

Lea el libro electrónico (1,4 MB)


¿Qué son los contenedores?

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. 

Contenedores frente a máquinas virtuales frente a infraestructura tradicional

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.

¿Qué es Docker?

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

TI flexible, resistente y segura para su nube híbrida: los contenedores orquestados con Kubernetes son parte de una estrategia de nube híbrida abierta que le permite crear y administrar cargas de trabajo desde cualquier lugar, sin depender de proveedores.

Conozca más


Orquestación de contenedores con Kubernetes

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

¿Qué hace Kubernetes?

Kubernetes programa y automatiza tareas relacionadas con el contenedor en toda la aplicación  ciclo de vida, que incluye:

  • Implementación: implemente un número especificado de contenedores en un host especificado y manténgalos en ejecución en un estado deseado.
  • Despliegues: Un despliegue es un cambio a una implementación. Kubernetes le permite iniciar, poner en pausa, reanudar o revertir los lanzamientos.
  • Descubrimiento de servicios: Kubernetes puede exponer automáticamente un contenedor a Internet o a otros contenedores mediante un DNS nombre o  Dirección IP.
  • Aprovisionamiento de almacenamiento: configure Kubernetes para montar un almacenamiento persistente local o en la nube para sus contenedores según sea necesario.
  • Balanceo de carga: Basado en UPC utilización o  métricas personalizadas, el balance de cargas de Kubernetes   puede distribuir la carga de trabajo a través de la red para mantener el rendimiento y la estabilidad. 
  • Ajuste de escala automático: Cuando aumenta el tráfico, el autoescalado de Kubernetes puede crear nuevos clústeres según sea necesario para manejar la carga de trabajo adicional.
  • Autocuración por alta disponibilidad: Cuando un contenedor falla, Kubernetes puede reiniciarlo o reemplazarlo automáticamente para evitar  tiempo de inactividad. También puede derribar contenedores que no cumplan con sus requisitos de control de salud.

Kubernetes en comparación con Docker

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

Productos destacados

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite

IBM Cloud Code Engine

IBM Cloud Kubernetes Service


Arquitectura de Kubernetes

Los componentes principales de la arquitectura de Kubernetes incluyen los siguientes:

Clústeres y nodos (computación)

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 e implementaciones (software)

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

Enlaces relacionados

IBM Cloud Paks


Malla de servicio Istio

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.


Computación Knative y sin servidor

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:

Knative proporciona una plataforma para el cambio hacia la computación sin servidor

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.

Knative simplifica el desarrollo y la orquestación del contenedor

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:

  • Build: el componente Build de Knative transforma automáticamente el  código fuente  en un contenedor o función nativo en la nube. Específicamente, extrae el código del repositorio, instala las  dependencias  necesarias, crea la imagen del contenedor y la coloca en un registro de contenedor para que lo utilicen otros desarrolladores. Los desarrolladores necesitan especificar la ubicación de estos componentes para que Knative pueda encontrarlos, pero una vez hecho esto, Knative  automatiza la construcción.
  • Atender: El componente Serve ejecuta contenedores como servicios escalables; puede escalar hasta miles de instancias de contenedor o escalar a ninguna (llamado escalar a cero ). Además, Serve tiene dos funciones muy útiles: configuración, que guarda versiones de un contenedor (llamado instantáneas) cada vez que empuja el contenedor a producción y le permite ejecutar esas versiones al mismo tiempo; y Servicio enrutamiento , que le permite dirigir diferentes cantidades de tráfico a estas versiones. Puede utilizar estas funciones de forma conjunta para lanzar gradualmente una implementación de contenedor o para realizar una prueba canaria de una  aplicación en contenedores  antes de ponerla en producción global.
  • Event: Event habilita los eventos especificados para desencadenar funciones o servicios basados en contenedor. Esto es especialmente integral para las capacidades  sin servidor  de Knative. Algo necesita decirle al sistema que ponga en marcha una función cuando sea necesario. Event permite a los equipos expresar "interés" en los tipos de eventos, y luego se conecta automáticamente al productor de eventos y los envía al contenedor, eliminando la necesidad de programar estas conexiones.

Puede obtener más información sobre Knative leyendo "Knative: una guía esencial".


Confirmaciones de Kubernetes GitHub y más pruebas de su creciente popularidad

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:

  • En el momento de escribir este artículo, se han realizado más de 120.190 confirmaciones Repositorio de Kubernetes en GitHub (el enlace se encuentra fuera de ibm.com) - un aumento de casi 34,000 confirmaciones en los últimos 18 meses - y hay más de 3,100 contribuyentes activos al proyecto. De acuerdo con la Base de computación nativa en la nube (CNCF)  Ha habido más de 148.000 confirmaciones en todos los repositorios relacionados con Kubernetes (incluidos Kubernetes Dashboard y Kubernetes MiniKube). Puedes leer todas las estadísticas aquí (el enlace se encuentra fuera de ibm.com).
  • Más de 1.500 empresas utilizan Kubernetes en sus conjuntos de software de producción. Estas incluyen empresas conocidas mundialmente como AirBnB, Ancestry, Bose, CapitalOne, Intuit, Nordstrom, Philips, Reddit, Slack, Spotify, Tinder y, por supuesto, IBM. Lea estos y otros estudios de caso de adopción (el enlace se encuentra fuera de ibm.com)
  • A 2021 encuesta citada en Diario de contenedores (el enlace se encuentra fuera de ibm.com) descubrió que el 68% de los profesionales de TI aumentaron el uso de Kubernetes durante la pandemia de COVID-19.
  • Según ZipRecruiter (enlace externo a IBM), el salario medio anual (en América del Norte) para un trabajo relacionado con Kubernetes es de USD 147,732. En el momento de escribir este artículo, hay actualmente más de 57.000 Posiciones relacionadas con Kubernetes enumeradas en LinkedIn (el enlace se encuentra fuera de ibm.com), en comparación con las 21.000 posiciones enumeradas hace solo 18 meses.

Kubernetes e IBM Cloud

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:

  • Descubra cómo puede implementar clústeres de Kubernetes totalmente administrados y de alta disponibilidad para su aplicaciones en contenedores con un solo clic usando Red Hat OpenShift en IBM Cloud.
  • Implementar y administrar aplicaciones en contenedores consistentemente a través en las instalaciones, informática de borde y nube publica entornos de cualquier proveedor con IBM Cloud Satellite.
  • Ejecutar imágenes de contenedor, trabajos por lotes o código fuente como una carga de trabajo sin servidor, sin dimensionamiento, implementación, redes o escalación, con IBM Cloud Code Engine.
  • Implemente aplicaciones seguras y de alta disponibilidad en una experiencia nativa de Kubernetes usando IBM Cloud Kubernetes Service.

Para empezar de inmediato, inscríbase para tener una cuenta en  IBM  Cloud.


Soluciones relacionadas

Soluciones de modernización de aplicaciones

Cree, modernice y gestione aplicaciones de forma segura en cualquier nube, con confianza.


Soluciones de infraestructura híbrida

Una estrategia en la nube híbrida abierta le permite crear y gestionar cargas de trabajo desde cualquier lugar, sin dependencia de un proveedor


Soluciones de nube híbrida

Aproveche las soluciones de infraestructura local abiertas, flexibles y seguras para desbloquear su estrategia de nube híbrida


Red Hat OpenShift

Implemente clústeres altamente disponibles y completamente gestionados con un clic


Soluciones de satélite en la nube

Descubra insights extraídos de los datos que pueden ayudar a resolver problemas de negocios y de investigación.


Soluciones de Code Engine

Ejecute su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor completamente administrado.