Kubernetes

Copiar URL

Kubernetes es una plataforma open source para la organización de 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 allí.

Además, automatiza la configuración de sus aplicaciones, además de mantener y supervisar la asignación de los recursos. Kubernetes es un proyecto de Cloud Native Computing Foundation (CNCF) que se presentó por primera vez en 2014 y que adquirió una gran popularidad entre las empresas como plataforma para ejecutar aplicaciones y servicios distribuidos según sea necesario.

Es una plataforma para la gestión de los contenedores, que agrupan el código, la configuración y las dependencias de una aplicación, lo que permite ejecutarla como un proceso aislado con sus propios recursos. Cada aplicación obtiene su propio contenedor o varios de ellos, que se organizan en pods de Kubernetes.

Se pueden ejecutar Kubernetes en servidores dedicados (bare metal), máquinas virtuales, proveedores de nube pública, nubes privadas o entornos de nube híbrida. Una de las principales ventajas de Kubernetes es que funciona en muchos tipos de infraestructura.

Como se explica en los detalles de implementación de Kubernetes, su diseño ayuda a los usuarios a seguir tres principios básicos. Una implementación de Kubernetes debe reunir las siguientes características:

  • Seguridad. Debe seguir las prácticas recomendadas de seguridad más recientes.
  • Facilidad de uso. Debe poder operarse con algunos comandos sencillos.
  • Capacidad de expansión. No debe favorecer a un solo proveedor. Además, debe poder personalizarse desde un archivo de configuración.

Recursos de Red Hat

Kubernetes automatiza gran parte de las tareas engorrosas de implementación y ajuste de las aplicaciones, y facilita el uso de métodos de desarrollo directamente en la nube que ahorran tiempo y agilizan la comercialización de nuevo software. Entre las principales ventajas cabe destacar:

Compatibilidad con entornos amplios y complejos: un entorno de producción que ejecuta diversas aplicaciones requerirá muchos contenedores implementados en varios hosts y que funcionen a la vez. Kubernetes ofrece las funciones de organización y gestión que permiten implementar los contenedores según sea necesario para estas cargas de trabajo.

Capacidad de ajuste: la plataforma se ajusta automáticamente en función de tus necesidades y ofrece la capacidad que precisan tus aplicaciones y, al mismo tiempo, ahorra recursos y costos.

Portabilidad: Kubernetes puede ejecutarse de manera local en tu propio centro de datos, en una nube pública y en configuraciones híbridas, ya sean instancias públicas o privadas. Cualquiera sea el entorno, pueden utilizarse los mismos comandos.

Implementaciones uniformes: la implementación de esta plataforma es uniforme en toda la infraestructura. Los contenedores representan el concepto de infraestructura inmutable, y todas las dependencias y las indicaciones de configuración que se necesitan para ejecutar una aplicación se incluyen en el contenedor.

Equipos de desarrollo y operaciones independientes y automatizados: el uso de contenedores permite que los desarrolladores ahorren tiempo, lo cual agiliza los ciclos de repetición. A su vez, Kubernetes ofrece más seguridad a los equipos de operaciones en cuanto a la estabilidad del sistema.

Respaldo a la estrategia de nube híbrida: muchas empresas combinan centros de datos locales con soluciones de nube pública o privada, y distribuyen las cargas de trabajo entre varios proveedores del sector para aprovechar los cambios en los precios y los distintos niveles de servicio. La uniformidad y la portabilidad de Kubernetes pueden respaldar estas estrategias de entornos de nube híbrida.

Soporte permanente para las aplicaciones tradicionales: la plataforma permite distribuir y gestionar aplicaciones heredadas, desarrolladas directamente en la nube y en contenedores, así como aquellas rediseñadas con una estructura de microservicios.

Gestión de entornos complejos: los microservicios organizados en contenedores facilitan la coordinación de servicios, como el almacenamiento, la conexión de red y la seguridad, pero también multiplican de manera significativa la cantidad de contenedores en el entorno y, por lo tanto, también su complejidad. Kubernetes agrupa los contenedores en pods para que puedas programar las cargas de trabajo y proporcionar los servicios necesarios, como las conexiones de red y el almacenamiento, para esos contenedores.

Mejora de la seguridad: las prácticas de seguridad de Kubernetes permiten que las empresas adopten medidas eficaces para mejorar la seguridad de la TI. Los administradores pueden aplicar políticas de seguridad y control, y dividirlas en pods o grupos de pods. Por su parte, los equipos de desarrollo pueden identificar los problemas de seguridad que surjan en los contenedores durante el tiempo de ejecución y solucionarlos en la fase de diseño, en lugar de actualizarlos o aplicarles parches en la producción. El control de acceso basado en funciones (RBAC) puede asignar permisos específicos a los usuarios y las cuentas de servicios. Los secretos de Kubernetes pueden ayudarte a proteger los datos confidenciales, como las claves de cifrado.

Habilitación de DevOps: Kubernetes ofrece una base de infraestructura uniforme para los contenedores y adopta un enfoque de DevOps, el cual fomenta una relación laboral eficaz entre los equipos de desarrollo y operaciones. El uso del canal de integración y distribución continuas (CI/CD) permite optimizar y acelerar el ciclo de vida del desarrollo de software. Además, la evolución de DevOps, DevSecOps, realiza los controles de seguridad y la gestión de los puntos vulnerables desde las primeras etapas del desarrollo.

Ebook: DevOps Culture and Practice with OpenShift

El clúster es una implementación de Kubernetes en funcionamiento, que consiste en un grupo de hosts ejecutándose en contenedores.

Los administradores definen el estado deseado de un clúster de Kubernetes y describen 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.

Un clúster de Kubernetes consta de dos partes: un plano de control y una serie de nodos informáticos (por lo general, servidores o servidores virtuales).

El plano de control se encarga de mantener el estado deseado del clúster, como las aplicaciones que se ejecutan y las imágenes de contenedores que se utilizan.

Por su parte, los nodos siguen las indicaciones del plano de control y se encargan de ejecutar las aplicaciones y las cargas de trabajo. Cada nodo es su propio entorno de Linux®, y puede ser una máquina virtual o física. Un clúster de Kubernetes necesita al menos un nodo informático, pero suele tener varios.

Un nodo de Kubernetes se compone de pods, cada uno de los cuales representa una única instancia de una aplicación. Cada pod incluye un contenedor o una serie de contenedores con conexión directa, y las opciones que controlan su funcionamiento.

Una gran cantidad de servicios de Kubernetes funcionan de manera coordinada para identificar automáticamente el nodo más adecuado para cada tarea, asignar los recursos y encargar a los pods de ese nodo que ejecuten el trabajo solicitado. Kubernetes envía las solicitudes al pod correspondiente de forma automática, sin importar adónde se traslade en el clúster ni si se lo remplaza.

Para mantener todo bajo control, Kubernetes facilita una interfaz de programación de aplicaciones (API) unificada que permite gestionar, crear y configurar el clúster. 

Analicemos más a fondo lo que ocurre en un clúster de Kubernetes.

El plano de control es la pieza más importante, ya que contiene los elementos que controlan el clúster y los datos sobre su estado y configuración. Estos elementos principales de Kubernetes se encargan de garantizar que la cantidad de contenedores en ejecución sea suficiente y que estén disponibles los recursos necesarios.

La API de Kubernetes (o kube-apiserver) es el frontend del plano de control de esta plataforma y se encarga de gestionar las solicitudes internas y externas. El servidor de la API determina si una solicitud es válida y, en ese caso, la procesa. Puedes acceder a la API con llamadas de REST, con la interfaz de la línea de comandos kubectl o con otras herramientas de la línea de comandos, como kubeadm.

El programador de Kubernetes (o kube-scheduler) determina los recursos que necesita un pod (como CPU o memoria) junto con el estado del clúster. Luego, programa el pod en un nodo informático adecuado.

Los controladores (o kube-controller-manager) son los que realmente ejecutan el clúster. El controlador y administrador de Kubernetes agrupa en un solo controlador varias funciones de este tipo. Un controlador realiza una consulta al programador y se asegura de que se esté ejecutando la cantidad correcta de pods. Si uno de ellos deja de funcionar, otro controlador lo percibe y responde al problema.

Los datos de configuración y la información sobre el estado del clúster se alojan en la etcd, una base de datos de almacenamiento clave-valor. Este almacén distribuido y con tolerancia a los fallos está diseñado para ser la principal fuente de información del clúster.

Cada nodo posee un motor de tiempo de ejecución de contenedores que posibilita el funcionamiento de estos. Docker es un ejemplo, aunque Kubernetes también admite otros tiempos de ejecución que cumplen con la Open Container Initiative, como rkt y CRI-O.

Todos los nodos contienen una kubelet, es decir, una aplicación muy pequeña que se comunica con el plano de control y que garantiza la ejecución de los contenedores en un pod. Cuando el plano de control necesita que algo suceda en un nodo, la kubelet ejecuta la acción.

Los nodos también contienen un kube-proxy, es decir, un proxy de red que facilita los servicios de red de Kubernetes. El kube-proxy administra las comunicaciones de red dentro y fuera del clúster. Para ello, utiliza la capa de filtrado de paquetes del sistema operativo o reenvía el tráfico por cuenta propia.

Además de gestionar los contenedores que ejecutan una aplicación, Kubernetes también puede administrar los datos que esta genera y que están adjuntos a un clúster. La plataforma permite que los usuarios soliciten recursos de almacenamiento sin necesidad de conocer los detalles de la infraestructura fundamental. Los volúmenes permanentes son específicos de un clúster y no de un pod, así que duran más que este último.

Las imágenes de contenedores en las que se basa Kubernetes se almacenan en un registro de contenedores que puede configurar el usuario o un tercero.

Obtén más información sobre la arquitectura de Kubernetes

La

informática sin servidor es un modelo de desarrollo directamente en la nube que posibilita el diseño y la ejecución de aplicaciones sin que sea necesario gestionar servidores. Si bien se utilizan servidores, se encuentran aislados de la etapa de desarrollo de las aplicaciones. Los desarrolladores solo deben empaquetar el código en contenedores para implementarlo.

Una vez que se instalan las aplicaciones sin servidor, responden a la demanda y se amplían o reducen automáticamente en función de las necesidades. Por lo general, los proveedores de nube pública ofrecen estas tecnologías a un costo que se mide a través de un modelo de ejecución basado en eventos, según se soliciten. Por eso cuando una función permanece inactiva, no se genera ningún cargo.

Kubernetes es una opción popular para la ejecución de los entornos sin servidor. Sin embargo, la plataforma por sí sola no está preparada para ejecutar las aplicaciones sin servidor de forma nativa. Knative es un proyecto de la comunidad open source que incorpora ciertos elementos en Kubernetes, los cuales permiten implementar, ejecutar y gestionar este tipo de aplicaciones.

Con este proyecto, puedes crear un servicio al empaquetar el código como imagen de contenedor y pasarlo al sistema. Este se ejecuta solo cuando es necesario, y Knative inicia y detiene las instancias automáticamente.

Obtén más información sobre la informática sin servidor

Se trata de un controlador específico para las aplicaciones que amplía las funciones de la API de Kubernetes para crear, configurar y gestionar las instancias de las aplicaciones complejas en nombre de un usuario de la plataforma, y agrega otras funcionalidades para ellas. Se basa en los conceptos básicos de los recursos y los controladores de Kubernetes, pero incluye el conocimiento específico sobre el dominio o la aplicación para automatizar todo el ciclo de vida del software que gestiona.

Con este operador, se puede realizar prácticamente cualquier acción relacionada con Kubernetes: ajustar la capacidad de una aplicación compleja, actualizar la versión o incluso gestionar los módulos del kernel para los nodos de un clúster informático con hardware especializado. Algunos ejemplos de software y herramientas que se implementan como operadores de Kubernetes son Prometheus Operator para la supervisión y Elastic Kubernetes Operator para la automatización de la búsqueda.

Obtén más información sobre los operadores de Kubernetes

Kubernetes es un sistema de software open source que permite la implementación, la gestión y el ajuste de los contenedores. Ponerlo en práctica requiere un esfuerzo considerable. La mayoría de las empresas desean integrar funciones como la automatización, la supervisión, el análisis de los registros, la malla de servicios, la informática sin servidor y las herramientas de productividad para los desarrolladores. Asimismo, es posible que los usuarios prefieran agregar otras herramientas para facilitar la conexión en red, la entrada de datos, el equilibrio de carga, el almacenamiento, la supervisión, el registro, la gestión de varios clústeres, la integración y la distribución continuas (CI/CD). En pocas palabras, para la mayoría de los casos prácticos, no basta con usar solo Kubernetes.

Muchos proveedores de software ofrecen sus propias versiones de Kubernetes que incluyen diversas ofertas de plataforma como servicio (PaaS), instaladores, servicios alojados y distribuciones autogestionadas. La Cloud Native Computing Foundation (CNCF) tiene una lista de decenas de ofertas certificadas de Kubernetes.

Además de ser una oferta de Kubernetes con certificación de la CNCF, Red Hat® OpenShift® incluye muchas otras ventajas. Utiliza Kubernetes como base de una plataforma integral para proporcionar aplicaciones desarrolladas en la nube de manera uniforme en entornos de nube híbrida.

Con Kubernetes como motor de organización de los contenedores, Red Hat OpenShift también incorpora muchas otras funciones del ecosistema open source de CNCF, y Red Hat se encarga de probarlas, empaquetarlas y brindarles soporte. La plataforma puede adquirirse como un servicio de la nube pública de los proveedores de nube más importantes, como AWS, Microsoft Azure, Google e IBM, o como un sistema de software autogestionado en una gran variedad de infraestructuras virtuales y de servidores dedicados (bare metal) en los centros de datos, las nubes públicas y el extremo de la red.

Obtén más información sobre OpenShift y Kubernetes

OKD es un proyecto comunitario de los elementos de software empaquetados que son necesarios para ejecutar Kubernetes. Además de Kubernetes, OKD ofrece las herramientas para el desarrollo y las operaciones que permiten que los equipos agilicen el diseño de las aplicaciones, las implementen y ajusten con eficiencia y mantengan un ciclo de vida prolongado. Permite que los desarrolladores creen, prueben e implementen aplicaciones en la nube y utilicen varios lenguajes de programación, como Go, Node.js, Ruby, Python, PHP, Perl y Java.

Es el proyecto upstream de Red Hat OpenShift y está optimizado para desarrollar e implementar aplicaciones de forma constante. Las funciones nuevas y las actualizaciones de la comunidad suelen lanzarse en OKD, donde se prueba su uso empresarial, antes que en OpenShift.

La principal diferencia entre OKD y OpenShift es que este último está validado y probado por Red Hat, y ofrece ventajas en la suscripción para satisfacer los requisitos de las operaciones empresariales. Una suscripción a esta plataforma incluye soporte técnico, acceso a los equipos de respuesta de seguridad, opciones de soporte a largo plazo, operadores externos validados, bases de datos y middleware certificados, y mucho más.

Obtén más información sobre OpenShift y OKD

Red Hat es una empresa líder y desarrolladora activa de la tecnología de contenedores open source, lo cual incluye Kubernetes. Además, diseña herramientas fundamentales para proteger, simplificar y actualizar la infraestructura de contenedores de forma automática.

Gracias a Red Hat OpenShift, los desarrolladores pueden crear nuevas aplicaciones 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. Si buscas implementar tus cargas de trabajo de Kubernetes en un servicio de nube gestionado o trasladarlas a él, OpenShift también se ofrece como un servicio en la nube en Amazon Web Services (AWS), Microsoft Azure, Google Cloud, IBM Cloud y otros proveedores.

Con OpenShift como base, puedes utilizar Red Hat Advanced Cluster Management y Red Hat Ansible® Automation Platform de manera conjunta para implementar y gestionar de manera eficiente varios clústeres Kubernetes en distintas regiones, como entornos de nube pública, en las instalaciones y en el extremo de la red.

Hub

Blogs de Red Hat

Aquí encuentras la información más reciente sobre nuestros clientes, partners y comunidades open source.

Todas las versiones de prueba de los productos de Red Hat

Con las versiones de prueba gratuitas de nuestros productos, podrás adquirir experiencia práctica, prepararte para obtener una certificación o evaluar las soluciones para saber si son adecuadas para tu empresa.

Más información

What is the Kubernetes Java client?

The Kubernetes Java client is a client library that enables the use of the Java programming language to interface with Kubernetes.

Kubernetes en AWS: diferencias entre las plataformas de aplicaciones autogestionadas y las gestionadas por terceros

Kubernetes es una plataforma open source para la organización de los 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. Permite distribuir y gestionar las aplicaciones en contenedores, las heredadas y las desarrolladas en la nube.

¿Qué son los planos de control alojados?

Adopta un verdadero enfoque de nube híbrida que permite que los nodos más pequeños ejecuten un plano de control, lo cual reduce el costo de los clústeres.

Contenedores: lecturas recomendadas

Producto destacado

  • Red Hat OpenShift

    Una plataforma de desarrollo de aplicaciones unificada que te permite crear, modernizar e implementar aplicaciones a escala en la infraestructura de nube híbrida que elijas.

Artículos relacionados