¿Qué es Kubernetes?

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.

Términos clave de Kubernetes 101

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.

Clúster

Es un conjunto de máquinas, a las que se llama por separado nodos, utilizado para ejecutar aplicaciones en contenedores gestionadas por Kubernetes.

Nodo

Es una máquina virtual o física. Un cluster consta de un nodo maestro y varios nodos trabajadores.

Contenedor en la nube

Es una imagen que contiene software y sus dependencias.

Pod

Es uno o varios contenedores que se ejecutan en el cluster de Kubernetes.

Despliegue

Es un objeto que gestiona las aplicaciones replicadas representadas por los pods. Los pods se despliegan en los nodos de un cluster.

Conjunto de réplicas

Garantiza que se ejecute un número específico de réplicas de pod a la vez.

Servicio

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.

¿Qué es KubeCon?

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.

¿Qué son los contenedores de 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.

Comparación entre Kubernetes y Docker

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.

¿Cuáles son los componentes de Kubernetes?

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.

qué es kubernetes

El plano de control contiene lo siguiente:

  • Servidor API de Kubernetes: proporciona la interfaz de programación (API) para controlar Kubernetes
  • etcd: un almacén de clave-valor para los datos del clúster
  • Planificador de Kubernetes: empareja los nuevos pods con los ya disponibles
  • Kubernetes-controller-manager (KCM): ejecuta una serie de procesos para administrar fallos de nodos, controlar la replicación, unir servicios y pods a través de puntos finales y controlar cuentas y tokens de acceso
  • Cloud-controller-manager: ayuda a administrar las API de proveedores de nube específicos en torno a aspectos como rutas de infraestructura específicas y equilibrio de carga

Los componentes del nodo incluyen:

  • kubelet: un agente que comprueba que los contenedores se están ejecutando en un pod
  • Proxy de red de Kubernetes: mantiene las reglas de red
  • Docker, containerd u otro tipo de tiempo de ejecución de contenedores

¿Cuáles son las ventajas de Kubernetes?

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.

¿Cuáles son los retos de usar Kubernetes?

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.

¿Qué es Kubernetes administrado?

Cloud Native y Kubernetes transforman el respaldo que AgroScout proporciona a los agricultores.

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.


El ecosistema y la comunidad de Kubernetes

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.

Cómo empezar a utilizar Kubernetes

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:

  • Configurar un entorno de desarrollo local con Docker y Kubernetes
  • Crear un microservicio Java sencillo con Helidon
  • Crear el microservicio en una imagen de contenedor con Docker
  • Implementar el microservicio en un clúster de Kubernetes local
  • Ampliar o reducir el microservicio en el clúster

Kubernetes para desarrolladores

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.


Introducción a Kubernetes en OCI (8:32)