A menudo descrito como el "sistema operativo para la nube", Kubernetes es una plataforma de código abierto para administrar clústeres de aplicaciones y servicios en contenedores. Desarrollado por los ingenieros de Google Joe Beda, Brendan Burns y Craig McLuckie en 2014 y con código abierto poco después, Kubernetes se convirtió rápidamente en un ecosistema nativo en la nube próspero por derecho propio. En la actualidad, Kubernetes, que significa "timonel" o "piloto" en griego antiguo, está bajo gestión de la Fundación de computación nativa en la nube (CNCF), una sección de la Linux Foundation.
Kubernetes fue el primer proyecto graduado para CNCF y se convirtió en uno de los proyectos de código abierto con el crecimiento más rápido en la historia. Kubernetes cuenta ahora con más de 2300 colaboradores y ha sido ampliamente adoptado por empresas grandes y pequeñas, incluida la mitad de las Fortune 100.
Para empezar, aquí te presentamos una serie de términos clave relacionados con Kubernetes. Puedes consultar una lista más exhaustiva en la página "Standarized Glossary" de Kubernetes. También puedes aprovechar la Kubernetes Cheat Sheet, que contiene una lista de comandos e indicadores de kubectl que se utilizan con frecuencia.
Es un conjunto de máquinas, a las que se llama por separado nodos, utilizado para ejecutar aplicaciones en contenedores gestionadas por Kubernetes.
Es una máquina virtual o física. Un cluster consta de un nodo maestro y varios nodos trabajadores.
Es una imagen que contiene software y sus dependencias.
Es uno o varios contenedores que se ejecutan en el cluster de Kubernetes.
Es un objeto que gestiona las aplicaciones replicadas representadas por los pods. Los pods se despliegan en los nodos de un cluster.
Garantiza que se ejecute un número específico de réplicas de pod a la vez.
Describe cómo acceder a las aplicaciones representadas por un conjunto de pods. Los servicios suelen describir los puertos y los equilibradores de carga, y se pueden utilizar para controlar el acceso interno y externo a un cluster.
KubeCon es la conferencia anual para desarrolladores y usuarios de Kubernetes. Desde la primera KubeCon en 2015, a la que asistieron 500 personas, KubeCon ha crecido hasta convertirse en un evento importante para la comunidad nativa en la nube. En 2019, la edición de KubeCon en San Diego, California, atrajo a 12 000 desarrolladores e ingenieros que celebraban el auge del ecosistema de código abierto en torno a la plataforma de organización en la nube Kubernetes.
A medida que los desarrolladores implementan cada vez más software para un conjunto diverso de entornos informáticos con diferentes nubes, entornos de prueba, portátiles, dispositivos, sistemas operativos y plataformas, resulta más importante que el software se ejecute de manera confiable. Aquí es donde entran en juego los contenedores: agrupan una aplicación con todo su entorno de tiempo de ejecución. En este sentido, los contenedores se consideran una forma de virtualización, ya que proporcionan una "burbuja" en la que se puede ejecutar la aplicación con las bibliotecas, dependencias y sistemas operativos correctos. No obstante, los contenedores son más pequeños que las máquinas virtuales, ya que contienen solo los recursos que necesita la aplicación, y nada más.
Si bien los contenedores de Linux existen desde 2008, para que alcanzaran la fama fue necesario que surgiesen los contenedores Docker en 2013. De manera similar, el "boom" de la implementación de aplicaciones en contenedores (aplicaciones que contenían todo lo que necesitaban para ejecutarse) trajo consigo un nuevo problema: gestionar miles de contenedores. Kubernetes organiza automáticamente el ciclo de vida del contenedor y distribuye los contenedores en la infraestructura de alojamiento. Kubernetes amplía o reduce los recursos en función de la demanda. Suministra, programa, elimina y supervisa el estado de los contenedores.
Los componentes clave de Kubernetes son los clústeres, los nodos y el plano de control. Los clústeres contienen nodos. Cada nodo comprende un conjunto de al menos una máquina trabajadora. Los nodos alojan pods, que contienen elementos de la aplicación implementada. El plano de control administra nodos y pods en el clúster, a menudo en muchos ordenadores, para lograr una alta disponibilidad.
El plano de control contiene lo siguiente:
Los componentes del nodo incluyen:
Con los contenedores, puedes estar seguro de que tus aplicaciones incluyen todo lo que necesitan para ejecutarse. Pero, a medida que agregas contenedores, que a menudo contienen microservicios, puedes administrarlos y distribuirlos automáticamente mediante Kubernetes.
Con Kubernetes, las organizaciones pueden:
Escalar automáticamente | Ampliar o reducir las implementaciones, según la demanda. |
Descubrir servicios | Encontrar servicios en contenedores a través de la dirección IP o DNS. |
Equilibrar cargas | Estabilizar la implementación distribuyendo el tráfico de red. |
Gestionar el almacenamiento | Elegir el almacenamiento local o en la nube |
Controlar versiones | Eligir los tipos de contenedores que deseas ejecutar y cuáles desean reemplazar por una nueva imagen o recursos de contenedor. |
Mantener la seguridad | Actualizar de forma segura las contraseñas, los tokens de OAuth y las claves SSH relacionadas con imágenes de contenedor específicas. |
Si bien Kubernetes dispone de una alta capacidad de composición y puede admitir cualquier tipo de aplicación, puede ser difícil de entender y utilizar. Como han comentado varios miembros de CNCF, Kubernetes no siempre es la solución correcta para una carga de trabajo determinada. Por eso, el ecosistema Kubernetes contiene una serie de herramientas nativas relacionadas en la nube que las organizaciones han creado para resolver problemas específicos de la carga de trabajo.
Kubernetes implementa contenedores, en lugar de código fuente, y no crea aplicaciones. Necesitará herramientas adicionales para registro, middleware, supervisión, configuración, CI/CD y muchas otras actividades de producción. Dicho esto, Kubernetes se puede ampliar y ha demostrado ser perfecto para una amplia variedad de casos de uso, desde aviones hasta aprendizaje automático. De hecho, los proveedores de la nube, incluidos Oracle, Google, Amazon Web Services, y otros, han utilizado la propia extensibilidad de Kubernetes para crear Kubernetes administrados, que son servicios que reducen la complejidad y aumentan la productividad de los desarrolladores.
Nuestro Kubernetes Engine de Cloud Infrastructure es un servicio gestionado fácil de usar para desarrolladores que puede utilizar para implementar sus aplicaciones en contenedores en la nube. Utiliza Kubernetes Engine si tu equipo de desarrollo desea crear, implementar y administrar aplicaciones nativas en la nube de manera confiable. Especifica los recursos informáticos que requieren sus aplicaciones y Kubernetes Engine los aprovisiona dentro de un arrendamiento de infraestructura de nube existente.
Si bien no es necesario utilizar un servicio de Kubernetes gestionado, nuestro motor de Kubernetes de Cloud Infrastructure es una forma fácil de ejecutar clusters de alta disponibilidad con el control, la seguridad y el rendimiento predecibles de Oracle Cloud Infrastructure. Kubernetes Engine es compatible con máquinas virtuales y bare metal como nodos, y está certificado como conforme por CNCF. También recibirás todas las actualizaciones de Kubernetes y seguirás siendo compatible con el ecosistema CNCF sin necesidad de realizar tareas adicionales.
Oracle es miembro Platino de la Cloud Native Computing Foundation (CNCF), una comunidad de código abierto que respalda varias docenas de proyectos de desarrollo de software organizados por nivel de madurez. Los proyectos graduados (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF y Helm) han demostrado ser esenciales para los aspectos del desarrollo nativo de nube.
Kubernetes tiene un amplio ecosistema de proyectos de apoyo que han surgido a su alrededor. El paisaje puede ser abrumador y buscar respuestas a preguntas sencillas puede llevarte a un pozo. No obstante, los primeros pasos en este camino son sencillos y, desde allí, puedes explorar conceptos avanzados según dicten tus necesidades. Descubre cómo:
Los desarrolladores que estén deseando iniciar su primer proyecto de Kubernetes pueden revisar nuestro portal de desarrolladores, donde aprenderán como crear su primera aplicación ARM en Kubernetes o cómo desplegar un cluster de Kubernetes con Cloud Shell.