Cuenta Iniciar sesión
Kubernetes illustration
Jump to section

¿Qué es Kubernetes?

Copiar URL

Kubernetes (también conocida como k8s o "kube") es una plataforma open source para la organización en contenedores que automatiza muchos de los procesos manuales involucrados en la implementación, la gestión y el ajuste de las aplicaciones que se alojan en ellos.

Puede agrupar en clústeres conjuntos de hosts que ejecuten contenedores de Linux®, y Kubernetes lo ayudará a gestionarlos con facilidad y eficacia.

Los clústeres de Kubernetes pueden contener hosts locales y en nubes públicas, privadas o híbridas. Por eso, es la plataforma ideal para alojar aplicaciones desarrolladas directamente en la nube que deben ajustarse rápidamente, como la transmisión inmediata de datos a través de Apache Kafka.

Originalmente, los ingenieros de Google fueron quienes desarrollaron y diseñaron Kubernetes. Google fue una de las primeras empresas que colaboró en el desarrollo de los contenedores de Linux y ha declarado públicamente que ejecuta todo en contenedores (la tecnología que respalda los servicios de nube de Google).

La empresa genera más de 2000 millones de implementaciones en contenedores por semana con su plataforma interna: Borg. Se trata de una precursora de Kubernetes, y todo lo que aprendieron en su desarrollo a lo largo de los años influyó considerablemente en la tecnología de Kubernetes.

Dato curioso: Los siete radios en el logotipo de Kubernetes hacen referencia al nombre original del proyecto: "Project Seven of Nine".

Red Hat fue una de las primeras empresas que trabajó con Google en este sistema de organización en contenedores, incluso antes del lanzamiento, y ahora es el segundo colaborador más importante del proyecto upstream de Kubernetes. Google donó el proyecto a la organización Cloud Native Computing Foundation (CNCF), creada en 2015.

¿Kubernetes se encuentra en sus planes futuros? Comience ahora.

Webinars gratuitos

Red Hat OpenShift - La plataforma Kubernetes para las empresas

La ventaja principal de usar Kubernetes en su entorno es que obtiene una plataforma para programar y ejecutar los contenedores en clústeres de máquinas virtuales (VM) o físicas, especialmente si se encuentra en pleno proceso de optimización del desarrollo de las aplicaciones para la nube.

A grandes rasgos, le permite implementar una infraestructura basada en contenedores en los entornos de producción, y depender completamente de ella. Además, puede realizar muchas de las mismas tareas que haría con otras plataformas de aplicaciones o sistemas de gestión, pero en sus contenedores, ya que Kubernetes automatiza las tareas operativas.

Los desarrolladores pueden crear aplicaciones en la nube con Kubernetes como una plataforma de tiempo de ejecución utilizando los patrones, que son las herramientas necesarias para diseñar aplicaciones y servicios basados en los contenedores.

Esto es lo que puede hacer con Kubernetes:

  • Organizar los contenedores en varios hosts
  • Hacer un mejor uso del hardware para aprovechar al máximo los recursos necesarios en la ejecución de las aplicaciones empresariales
  • Controlar y automatizar las implementaciones y actualizaciones de las aplicaciones
  • Agregar almacenamiento para ejecutar aplicaciones con estado
  • Ampliar las aplicaciones en contenedores y sus recursos según sea necesario
  • Gestionar los servicios de forma declarativa para garantizar que las aplicaciones implementadas siempre se ejecuten correctamente
  • Realizar comprobaciones de estado y autorregeneraciones de sus aplicaciones con ubicación, reinicio, replicación y adaptación automáticos

Kubernetes se combina con otros proyectos open source para proporcionar todos estos servicios coordinados, lo cual le permite aprovechar al máximo el potencial de la plataforma. Los elementos necesarios incluyen:

  • El registro a través de proyectos como Docker Registry
  • Las conexiones en red, a través de proyectos como OpenvSwitch y el enrutamiento inteligente en el extremo
  • La telemetría a través de proyectos como Kibana, Hawkular y Elastic
  • La seguridad a través de proyectos como LDAP, SELinux, RBAC y OAUTH con capas de arquitectura multiempresa
  • La automatización con la incorporación de playbooks de Ansible para instalar y gestionar el ciclo de vida de los clústeres
  • Los servicios a través de un amplio catálogo de patrones conocidos de aplicaciones

Conozca los conceptos básicos sobre los contenedores de Linux y la tecnología de organización en contenedores. Acceda al curso cuando lo solicite y aprenda a organizar las aplicaciones y los servicios en contenedores, a realizar las pruebas correspondientes con Docker y a implementarlos en un clúster de Kubernetes con Red Hat® OpenShift®.

Al igual que ocurre con la mayoría de las tecnologías, el vocabulario específico de Kubernetes puede suponer un obstáculo a la hora de comenzar a utilizar la plataforma. Veamos algunos de los términos más comunes para que pueda comprenderla mejor.

Plano de control: conjunto de procesos que controlan los nodos de Kubernetes. Es donde se originan todas las asignaciones de tareas.

Nodos: máquinas que ejecutan las tareas solicitadas que asigna el plano de control.

Pod: grupo de uno o más contenedores implementados en un solo nodo. Todos los contenedores de un pod comparten la dirección IP, la IPC, el nombre de host y otros recursos. Los pods extraen la red y el almacenamiento del contenedor subyacente, lo cual le permite trasladar los contenedores en el clúster con mayor facilidad.

Controlador de replicación: controla la cantidad de copias idénticas de un pod que deben ejecutarse en algún lugar del clúster.

Servicio: separa las definiciones de las tareas de los pods. Los proxies de servicios de Kubernetes envían las solicitudes de servicio al pod correspondiente de forma automática, sin importar a dónde se traslade en el clúster ni si se lo reemplaza.

Kubelet: este servicio se ejecuta en los nodos y se encarga de leer los manifiestos del contenedor y de garantizar el inicio y el funcionamiento de los contenedores definidos.

kubectl: es la herramienta de configuración de la línea de comandos de Kubernetes.

Una implementación de Kubernetes en funcionamiento se denomina clúster. Se puede visualizar en dos partes: el plano de control y las máquinas informáticas o los nodos.

Cada nodo puede ser una máquina física o virtual y es su propio entorno Linux® que ejecuta los pods, los cuales están formados por contenedores.

El plano de control es el encargado de mantener el estado deseado del clúster y de controlar, por ejemplo, las aplicaciones que se ejecutan y las imágenes de contenedores que se utilizan. Las máquinas informáticas son las que ejecutan las aplicaciones y las cargas de trabajo.

Kubernetes controla el sistema operativo (por ejemplo, Red Hat® Enterprise Linux®) e interactúa con los pods de los contenedores que se ejecutan en los nodos.

El plano de control de Kubernetes recibe las instrucciones del administrador (o del equipo de DevOps) y las trasmite a las máquinas informáticas.

Esta transferencia trabaja con una gran cantidad de servicios para decidir automáticamente cuál es el nodo más adecuado para la tarea. Luego, distribuye los recursos y asigna los pods que se encuentran en ese nodo para cumplir con la tarea solicitada.

El estado deseado de un clúster de Kubernetes define las aplicaciones o las cargas de trabajo que deben ejecutarse, junto con las imágenes que utilizan, los recursos que deben estar disponibles y otros ajustes similares.

Desde el punto de vista de la infraestructura, esto no difiere mucho de la forma en la que gestiona los contenedores; solo que puede controlarlos en un nivel superior, lo cual le permite supervisar mejor los elementos sin la necesidad de gestionar cada contenedor o nodo por separado.

Usted se encarga de configurar Kubernetes y definir los nodos, los pods y los contenedores dentro de ellos, mientras que Kubernetes los organiza.

Puede ejecutar Kubernetes donde quiera: en servidores dedicados (bare metal), en máquinas virtuales, en proveedores de nube pública, en nubes privadas o en entornos de nube híbrida. Una de sus ventajas principales es que funciona en varios tipos de infraestructura.

 

Funcionamiento de Docker

Docker se puede usar como un tiempo de ejecución de contenedores que Kubernetes organiza. Cuando Kubernetes programa un pod en un nodo, el kubelet que se ejecuta en él, le indica a Docker que inicie los contenedores especificados.

A continuación, el kubelet comienza a recopilar ininterrumpidamente la información sobre el estado de esos contenedores desde Docker y la almacena en el plano de control. Docker traslada los contenedores a ese nodo y los inicia y detiene.

La diferencia de utilizar Kubernetes con Docker radica en que un sistema automatizado solicita que Docker realice ciertas acciones, en lugar de que las ejecute el administrador de forma manual en los nodos de todos los contenedores.

Kubernetes le permite implementar y gestionar las aplicaciones heredadas, desarrolladas en la nube, en contenedores y de microservicios. 

Es necesario que el equipo de desarrollo pueda diseñar aplicaciones y servicios nuevos para satisfacer las necesidades cambiantes de la empresa. El desarrollo en la nube comienza con los microservicios en contenedores, lo cual agiliza el proceso y facilita la transformación y la optimización de las aplicaciones actuales. 

Vea esta serie de webinars para conocer las opiniones de los especialistas que lo ayudarán a establecer la plataforma de datos en Kubernetes empresarial que necesita para diseñar, ejecutar, implementar y modernizar las aplicaciones.

Las aplicaciones de producción abarcan varios contenedores, los cuales deben implementarse en diversos hosts de servidores. Kubernetes ofrece las funciones de organización y gestión que permiten implementar los contenedores según sea necesario para estas cargas de trabajo.

El sistema de organización de esta plataforma le permite diseñar servicios de aplicaciones que abarquen varios contenedores, programar los contenedores en un clúster, ampliarlos y gestionar su estado a lo largo del tiempo. Además, posibilita la adopción de medidas efectivas para mejorar la seguridad de la TI.

Kubernetes también debe integrarse con las redes, el almacenamiento, la seguridad, la telemetría y demás servicios para proporcionar una infraestructura integral de contenedores.

Si lo lleva a un entorno de producción y aplicaciones múltiples, resulta evidente que necesita varios contenedores ubicados en el mismo lugar y que trabajen juntos para ofrecer servicios individuales. 

Los contenedores de Linux brindan a las aplicaciones basadas en microservicios una unidad ideal de implementación de aplicaciones y un entorno de ejecución autónomo. Además, con los microservicios organizados en contenedores, es más fácil coordinar los servicios, como el almacenamiento, la conexión de red y la seguridad.

Esto multiplica considerablemente la cantidad de contenedores en el entorno y, a medida que se acumulan, aumenta la complejidad.

Kubernetes es la solución para varios de los problemas comunes relacionados con la proliferación de los contenedores, ya que los ordena y reúne en pods. Los pods agregan un nivel de abstracción a los contenedores agrupados, así que podrá programar las cargas de trabajo y proporcionar los servicios necesarios, como las conexiones de red y el almacenamiento, para esos contenedores. 

Además, Kubernetes lo ayuda a equilibrar la carga en los pods y a garantizar que cuente con la cantidad adecuada de contenedores para respaldar sus cargas de trabajo.

La correcta implementación de Kubernetes y el uso de otros proyectos open source, como Open vSwitch, OAuth y SELinux, le permitirán organizar las distintas partes de la infraestructura de contenedores.

 

Caso práctico: diseño de una plataforma de nube para ofrecer servicios bancarios innovadores

Emirates NBD, uno de los bancos más importantes de los Emiratos Árabes Unidos (EAU), buscaba una base resistente y adaptable para la transformación digital. El banco lidiaba con un sistema de implementación lento y un entorno de TI complejo. Para configurar un servidor, necesitaban hasta dos meses y demoraban más de seis meses en realizar cambios en las aplicaciones monolíticas de gran tamaño.

Optaron por Red Hat OpenShift Container Platform para organizar, integrar y gestionar los contenedores, y así crearon Sahab, la primera nube privada de un banco de Oriente Medio que se ejecuta según sea necesario. Sahab ofrece aplicaciones, sistemas y otros recursos para el desarrollo integral, desde la implementación hasta la producción, a través de un modelo de tecnología como servicio. 

Gracias a la plataforma nueva, Emirates NBD mejoró la colaboración entre los equipos internos y con los partners utilizando interfaces de programación de aplicaciones (API) y microservicios. Además, el banco adoptó prácticas de desarrollo ágil y de DevOps que le permitieron reducir los ciclos de actualización y lanzamiento de las aplicaciones.

Los contenedores tienen mucho más que ofrecer.

El desarrollo de las aplicaciones modernas requiere procesos diferentes a los enfoques del pasado. DevOps agiliza la transición de una iniciativa del desarrollo a la implementación.

En esencia, DevOps se basa en la automatización de las tareas operativas de rutina y la estandarización de los entornos en todo el ciclo de vida de una aplicación. Los contenedores respaldan un entorno unificado para el diseño, la distribución y la automatización de las aplicaciones, y facilitan su traslado entre los entornos de desarrollo, de prueba y de producción.

Uno de los principales resultados de la adopción de DevOps es un canal de integración e implementación continuas (CI/CD). La CI/CD le permite distribuir las aplicaciones a los clientes con frecuencia y validar la calidad del software con una intervención humana mínima.

La gestión del ciclo de vida de los contenedores con Kubernetes y el enfoque de DevOps permite adaptar el desarrollo de software y las operaciones de TI para respaldar el canal de CI/CD.

Con las plataformas adecuadas, tanto dentro como fuera del contenedor, puede aprovechar mejor los cambios que implementó en la cultura y en los procesos.

Esta plataforma es de open source, así que no hay ninguna estructura de soporte formalizada en torno a esta tecnología, o al menos ninguna a la que podría confiarle su empresa. 

Si enfrentara algún problema con la implementación de Kubernetes durante la producción, ni usted ni sus clientes se sentirían satisfechos.

Imagine que Kubernetes es el motor de un automóvil. El motor sirve por sí solo, pero pasa a formar parte de un vehículo funcional cuando se conecta a la transmisión, los ejes y las ruedas. La mera instalación de Kubernetes no basta para obtener una plataforma para la producción.

Se deben agregar elementos adicionales para que sea completamente funcional, como la autenticación, las redes, la seguridad, la supervisión, la gestión de los registros y demás herramientas.

Allí es donde entra en juego Red Hat OpenShift, que representa el vehículo completo. 

Red Hat OpenShift es la plataforma de Kubernetes para las empresas. Incluye todos los recursos tecnológicos adicionales que convierten a Kubernetes en una herramienta sólida y viable para la empresa, como los registros, las redes, la telemetría, la seguridad, la automatización y los servicios.

Red Hat OpenShift incorpora la herramienta como uno de los elementos centrales de la plataforma, y Cloud Native Computing Foundation la ofrece como distribución certificada de Kubernetes.

Gracias a Red Hat OpenShift Container Platform, los desarrolladores pueden crear aplicaciones nuevas en contenedores, alojarlas e implementarlas en la nube con la capacidad de ajuste, la organización y el control necesarios para convertir una idea brillante en un nuevo negocio, en poco tiempo y sin complicaciones.

Utilice la versión de prueba gratuita de 60 días de Red Hat OpenShift para automatizar las operaciones de los contenedores.

Artículos relacionados

ARTÍCULO

Diferencias entre los contenedores y las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema.

ARTÍCULO

¿Qué es la organización de los contenedores?

La organización en contenedores automatiza la implementación, la gestión, la escalabilidad y la conexión en red de los contenedores.

ARTÍCULO

¿Qué es un contenedor de Linux?

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen.

Más información sobre los contenedores

Productos

Red Hat OpenShift

Plataforma de contenedores de Kubernetes empresarial con operaciones automatizadas integrales para gestionar implementaciones de nube híbrida, multicloud y edge computing.

Contenido adicional

Lista de verificación

Desarrollo de aplicaciones en contenedores: cinco temas para analizar con su equipo

Ebook

Los tres aspectos más importantes que debe tener en cuenta a la hora de seleccionar una plataforma de Kubernetes

Capacitación

Curso de capacitación gratuito

Running Containers with Red Hat Technical Overview

Curso de capacitación gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Curso de capacitación gratuito

Developing Cloud-Native Applications with Microservices Architectures

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.

Red Hat logo LinkedInYouTubeFacebookTwitter

Productos

Herramientas

Comprar, vender, explorar

Comunicarse

Acerca de Red Hat

Somos el proveedor líder a nivel mundial de soluciones empresariales de código abierto, incluyendo Linux, cloud, contenedores y Kubernetes. Ofrecemos soluciones reforzadas, las cuales permiten que las empresas trabajen en distintas plataformas y entornos con facilidad, desde el centro de datos principal hasta el extremo de la red.

Suscríbase a nuestra newsletter, Red Hat Shares

Suscríbase ahora

Seleccionar idioma

© 2022 Red Hat, Inc. Red Hat Summit