Back toGlosario de Nutanix

¿Qué es Kubernetes?

20 de Junio de 2023 | min

Kubernetes es una plataforma de orquestación de contenedores de código abierto desarrollada originalmente por Google. Proporciona un marco para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores. Kubernetes permite a los usuarios gestionar y coordinar contenedores a través de un grupo de equipos, proporcionando una infraestructura altamente escalable y resiliente para ejecutar aplicaciones distribuidas.

Fue desarrollado por los ingenieros de Google para uso interno, y se ofreció fuera de la empresa como sistema de código abierto en 2014. Desde entonces se ha generalizado su adopción, y se ha convertido en una parte esencial del ecosistema nativo de la nube. Kubernetes, junto con los contenedores, es ampliamente reconocido como el componente fundamental de la infraestructura y las aplicaciones de nube contemporáneas.

Kubernetes se ejecuta en una amplia gama de infraestructuras, incluyendo entornos de nube híbrida, nube pública, nubes privadas, máquinas virtuales y servidores físicos, lo cual ofrece a los equipos de IT una flexibilidad excelente.

¿Cómo funciona Kubernetes?

Varios componentes principales constituyen la arquitectura de Kubernetes. Son los siguientes:

Clústeres y nodos

Los clústeres, que son los componentes básicos de Kubernetes, están formados por equipos informáticos físicos o virtuales, denominados nodos. Un solo nodo maestro funciona como plano de control del clúster y gestiona, por ejemplo, qué aplicaciones se ejecutan en un momento dado y qué imágenes de contenedor se utilizan. Esto se hace mediante la ejecución de un servicio de planificación, que automatiza la implementación de contenedores en función de los requisitos definidos por el desarrollador y otros factores.

Múltiples nodos de trabajo son responsables de ejecutar, implementar y gestionar las cargas de trabajo y las aplicaciones contenerizadas. Los nodos de trabajo incluyen las herramientas de gestión de contenedores que la organización ha elegido, como Docker, así como Kubelet, que es un agente de software que recibe órdenes del nodo maestro y las ejecuta.

Los clústeres pueden incluir nodos que abarcan toda la arquitectura de una organización, desde on-premise a nubes públicas y privadas hasta entornos de nube híbrida. Esta es una de las razones por las que Kubernetes puede ser un componente tan integral de las arquitecturas nativas de la nube. El sistema es ideal para alojar aplicaciones nativas de la nube que necesiten escalar rápidamente.

Contenedores

Los contenedores son una tecnología de empaquetado de software ligera y portátil que se utiliza para implementar y ejecutar aplicaciones de forma consistente a través de diferentes entornos informáticos. Un contenedor es una unidad ejecutable independiente que encapsula una aplicación junto con todas sus dependencias, incluyendo bibliotecas, marcos y entornos de ejecución.

Los contenedores proporcionan una forma de aislar las aplicaciones de la infraestructura subyacente, asegurando que se ejecuten de manera consistente, independientemente del sistema host. Este aislamiento se logra a través de tecnologías de contenedorización como Docker, que utilizan virtualización a nivel de sistema operativo para crear entornos aislados, llamados contenedores.

Pods

Los pods son la unidad más pequeña de escalabilidad de Kubernetes. Son grupos de contenedores que comparten la misma red y los mismos recursos informáticos. Agrupar contenedores es beneficioso porque si un contenedor específico recibe demasiado tráfico, Kubernetes crea automáticamente una réplica de ese pod en otros nodos del clúster para distribuir la carga de trabajo.

Visión de conjunto

La plataforma Kubernetes se ejecuta sobre el sistema operativo del entorno (generalmente Linux) y se comunica con los pods que operan en los nodos. Utilizando una interfaz de línea de comandos llamada kubectl, un administrador o un usuario de DevOps introduce el estado deseado de un clúster, que puede incluir qué aplicaciones deben ejecutarse, con qué imágenes y recursos, y otros detalles.

El nodo maestro del clúster recibe estos comandos y los transmite a los nodos de trabajo. La plataforma es capaz de determinar automáticamente qué nodo del clúster es la mejor opción para ejecutar el comando. Entonces la plataforma asigna los recursos y los pods específicos en el nodo que completará la operación solicitada.

Kubernetes no cambia los procesos básicos de gestión de contenedores; solo los automatiza y se hace cargo de parte del trabajo para que los equipos de gestión y DevOps puedan obtener un nivel alto de control sin tener que gestionar cada nodo o contenedor por separado. Los equipos humanos simplemente configuran el sistema Kubernetes y definen los elementos que contienen. Kubernetes asume todo el trabajo real de orquestación de contenedores.

Características y capacidades de Kubernetes

Kubernetes cuenta con una amplia variedad de características y capacidades que simplifican la orquestación de contenedores a través de múltiples nodos, permiten la automatización de la gestión de clústeres y optimizan la utilización de recursos. Incluyendo:

  • Escalado automático: escalar o desescalar los contenedores y sus recursos según sea necesario en función del uso
  • Gestión del ciclo de vida: permite al administrador pausar y continuar con las implementaciones, así como volver a versiones anteriores
  • Declaración de estado deseado: los administradores definen lo que necesitan y Kubernetes lo hace posible
  • Reparación autónoma y resiliencia: incluye reinicios automáticos, ubicaciones, replicación y escalado
  • Almacenamiento escalable: los administradores pueden añadir almacenamiento de forma dinámica según sea necesario
  • Equilibrio de carga: el sistema utiliza una serie de herramientas para equilibrar las cargas interna y externamente
  • Soporte para DevSecOps: ayuda a simplificar la seguridad de las operaciones de contenedores a través de todo el ciclo de vida de los contenedores y las nubes, y permite a los equipos comercializar aplicaciones seguras con mayor rapidez
RELATED

7 formas de simplificar la gestión del ciclo de vida de Kubernetes

¿Para qué se utiliza Kubernetes?

Kubernetes ayuda a las organizaciones a gestionar mejor sus aplicaciones más complejas y aprovechar al máximo los recursos existentes. Además, ayuda a garantizar la disponibilidad de las aplicaciones y reduce en gran medida el tiempo de inactividad. A través de la orquestación de contenedores, la plataforma automatiza muchas tareas, como la implementación de aplicaciones, los lanzamientos, el descubrimiento de servicios, el aprovisionamiento de almacenamiento, el equilibrio de carga, el escalado automático y la reparación autónoma. Esto aligera gran parte de la carga de gestión de los equipos de IT o DevOps.

Un ejemplo: Supongamos que falla un contenedor. Para reducir al mínimo el tiempo de inactividad (o eliminarlo por completo), Kubernetes puede detectar la falla del contenedor y ejecutar automáticamente un cambio reiniciando, reemplazando o eliminando los contenedores fallidos. El sistema también supervisa todos los clústeres y determina dónde ejecutar mejor los contenedores según dónde y cómo se estén consumiendo los recursos. Todo este trabajo se lleva a cabo automáticamente y en cuestión de milisegundos; no hay equipo humano que pueda igualarlo.

¿Qué es Kubernetes como servicio?

Kubernetes como servicio (KaaS) es un producto basado en la nube que proporciona a los usuarios clústeres de Kubernetes gestionados. Permite a las organizaciones aprovechar el poder de Kubernetes sin necesidad de configuración y mantenimiento extensos de la infraestructura subyacente. Con KaaS, los usuarios pueden concentrarse más en implementar y gestionar sus aplicaciones en lugar de lidiar con las complejidades de la gestión de clústeres de Kubernetes.

Los proveedores de KaaS llevan a cabo tareas como el aprovisionamiento, el escalado, las actualizaciones y el monitoreo de clústeres, lo cual permite a los usuarios librarse de la carga operativa. Ofrecen interfaces o API fáciles de usar para interactuar con los clústeres de Kubernetes, y a menudo ofrecen características adicionales como equilibrio de carga, escalado automático y registro y monitoreo integrados.

Al ofrecer Kubernetes como servicio, los proveedores de nube y los proveedores de servicios gestionados permiten a los desarrolladores y organizaciones implementar y gestionar rápida y fácilmente aplicaciones en contenedores a escala, aprovechando los beneficios de Kubernetes sin la necesidad de una amplia experiencia en Kubernetes o habilidades de gestión de infraestructura.

¿Qué es Docker?

Al igual que Kubernetes, Docker es una solución de código abierto que permite a los usuarios automatizar la implementación de aplicaciones. A diferencia de Kubernetes, también es un formato de archivo de contenedor, y se ha convertido en el formato de archivo de facto para los contenedores de Linux. Utilizando Docker Engine, puede crear y ejecutar contenedores en un entorno de desarrollo. Un registro de contenedores como Docker Hub le permite compartir y almacenar imágenes de contenedores. El conjunto de aplicaciones Docker es magnífico para ayudarle a implementar y ejecutar contenedores individuales.

Kubernetes y Docker

Kubernetes y Docker son dos tecnologías distintas pero complementarias, que a menudo se utilizan juntas en implementaciones modernas de aplicaciones basadas en contenedores. Aquí tiene una comparación de Kubernetes y Docker:

Docker:

  • Docker es una plataforma y un conjunto de herramientas para crear y ejecutar contenedores. Proporciona la capacidad de empaquetar aplicaciones y sus dependencias en contenedores ligeros aislados.

  • Con Docker, los desarrolladores pueden crear imágenes de contenedores que incluyen todo lo necesario para ejecutar una aplicación, como código, bibliotecas y entornos de ejecución.

  • Docker permite la implementación uniforme de aplicaciones a través de diferentes entornos, lo cual garantiza que las aplicaciones se ejecuten de manera fiable independientemente del sistema host.

  • Docker proporciona una interfaz de línea de comandos (CLI) fácil de usar y un ecosistema sólido de herramientas y servicios para gestionar contenedores.

Kubernetes:

  • Kubernetes, conocido también como K8s, es una plataforma de código abierto de orquestación de contenedores que automatiza la implementación, el escalado y la gestión de aplicaciones en contenedores.

  • Kubernetes proporciona un marco para ejecutar y coordinar contenedores a través de un grupo de equipos.

  • Ofrece funciones como escalado automático, equilibrio de carga, descubrimiento de servicios y capacidades de reparación autónoma.

  • Kubernetes permite la configuración y el escalado declarativos, lo cual facilita la gestión de implementaciones de aplicaciones complejas.

  • Proporciona un alto nivel de tolerancia a errores y resiliencia al garantizar que las aplicaciones estén siempre ejecutándose y disponibles, incluso en caso de fallas.

En resumen, Docker se enfoca principalmente en construir y empaquetar contenedores, mientras que Kubernetes se enfoca en orquestar y gestionar contenedores a escala. Docker proporciona las herramientas para crear y ejecutar contenedores, mientras que Kubernetes proporciona la infraestructura para implementar y gestionar aplicaciones en contenedores en un entorno distribuido. Es habitual utilizar Docker para crear imágenes de contenedores y luego utilizar Kubernetes para gestionar y orquestar esos contenedores a través de un clúster de equipos.

Beneficios de Kubernetes

Kubernetes ofrece un amplio rango de beneficios, especialmente para las organizaciones que se están enfocando en aplicaciones nativas de la nube. Los beneficios siguientes constituyen solo algunos de los motivos por los cuales Kubernetes es por mucho el sistema de gestión de contenedores más popular disponible en la actualidad: 

  • Mover las cargas de trabajo a donde funcionen mejor: la capacidad de la plataforma para ejecutarse on-premise y en la nube hace que sea más sencillo.
  • Simplificar el monitoreo, la gestión, la implementación y la configuración de aplicaciones en contenedores de cualquier tamaño o escala.
  • Integrar Kubernetes fácilmente en la arquitectura existente con su alta extensibilidad.
  • Mantener bajo control el gasto en IT a través de la optimización de recursos integrada de Kubernetes, la capacidad de ejecutar cargas de trabajo en cualquier lugar y la escalabilidad automática a partir de la demanda.
  • Liberar a los equipos de IT y DevOps para que se concentren en tareas más críticas en lugar de gestionar y orquestar aplicaciones en contenedores.
  • Optimizar el uso de recursos de hardware, incluyendo el ancho de banda de la red, memoria y I/O de almacenamiento, con la capacidad de definir límites de uso.
  • Aumentar la eficiencia de las aplicaciones y el tiempo de actividad con las funciones de reparación autónoma de Kubernetes.
  • Planificar actualizaciones de software sin causar tiempo de inactividad.
  • Preparar la infraestructura para el futuro con la capacidad de Kubernetes para ejecutarse en arquitecturas desacopladas y poder gestionar un crecimiento rápido y masivo. 

Buenas prácticas de seguridad de Kubernetes

Actualmente, la seguridad es una prioridad principal para todas las organizaciones, independientemente de dónde ejecuten sus cargas de trabajo y aplicaciones. Estas son algunas de las buenas prácticas recomendadas para proteger su sistema Kubernetes y las aplicaciones y los datos que contiene:

  1. Acceso seguro al clúster: limitar el acceso a la API de Kubernetes mediante el uso de mecanismos sólidos de autenticación y autorización como RBAC (control de acceso basado en roles). Utilizar contraseñas seguras y únicas, o implementar métodos de autenticación más seguros, como la autenticación basada en certificados. Habilitar la auditoría y monitorear el acceso a la API en busca de actividades no autorizadas o sospechosas.

  2. Actualizar regularmente los componentes de Kubernetes: mantener al día los componentes de Kubernetes (plano de control, nodos de trabajo, etc.) con las últimas versiones estables para beneficiarse de los parches de seguridad y las correcciones de errores.

  3. Aplicar políticas de red: implementar políticas de red para controlar el flujo de tráfico dentro del clúster y limitar la comunicación entre los pods. Utilizar políticas de red para aplicar canales de comunicación seguros y restringir el acceso a servicios o datos confidenciales.

  4. Imágenes de contenedores seguras: utilizar únicamente imágenes de contenedores fiables de fuentes de confianza. Escanear regularmente las imágenes de los contenedores en busca de vulnerabilidades y asegurarse de que estén actualizadas y con parches aplicados. Utilizar la firma y verificación de imágenes para garantizar la integridad de la imagen.

  5. Utilizar RBAC y privilegios mínimos: implementar el control de acceso basado en roles (RBAC) para asignar los permisos y roles apropiados a los usuarios y servicios. Siga el principio de privilegios mínimos, otorgando únicamente los permisos necesarios requeridos para cada usuario o servicio.

  6. Habilitar las políticas de seguridad de los pods: utilizar las políticas de seguridad de los pods (PSPs) para cumplir las restricciones de seguridad en la creación de pods, como evitar contenedores privilegiados o el acceso al host.

  7. Monitorear y registrar actividades: habilitar el monitoreo y el registro de los clústeres de Kubernetes para detectar y responder rápidamente a los incidentes de seguridad. Monitorear los registros del servidor API, los registros del contenedor y los eventos a nivel de clúster para identificar cualquier actividad sospechosa o intentos de acceso no autorizado.

  8. Asegurar el almacenamiento de datos etcd: asegurar el almacenamiento de datos etcd habilitando el cifrado en reposo y en tránsito. Limitar el acceso a etcd, asegurando que solo las entidades autorizadas puedan acceder y modificar los datos de configuración del clúster.

  9. Realizar respaldos y probar periódicamente la recuperación ante desastres: realizar respaldos periódicos de los componentes, la configuración y los datos críticos de Kubernetes para facilitar la recuperación ante desastres en caso de problemas o ataques. Probar periódicamente el proceso de recuperación ante desastres para estar seguro de que funciona de manera efectiva.

  10. Mantenerse informado y seguir las buenas prácticas: mantenerse al día con las buenas prácticas y recomendaciones de seguridad más recientes de la comunidad de Kubernetes y los expertos en seguridad.

Casos de uso de Kubernetes

Actualmente, las organizaciones están utilizando Kubernetes para una gama extremadamente amplia de casos de uso. Incluyendo:

  • Implementación de aplicaciones a gran escala
  • Gestión de microservicios
  • Desarrollo de software de integración continua/implementación continua (CI/CD)
  • Habilitación de procesamiento sin servidor
  • Implementaciones híbridas y multinube
  • Analíticas de Big Data
  • Proyectos de procesamiento grandes o complejos
  • Proyectos de aprendizaje automático
  • Migración de datos de servidores locales a la nube

¿Cómo funciona Kubernetes con el desarrollo de aplicaciones?

Kubernetes juega un papel importante en el desarrollo de aplicaciones, al proporcionar una plataforma escalable y resiliente para implementar, gestionar y escalar aplicaciones en contenedores. Así es como funciona Kubernetes con el desarrollo de aplicaciones:

  1. Contenerización: los desarrolladores empaquetan sus aplicaciones y dependencias en imágenes de contenedor utilizando tecnologías como Docker. Los contenedores garantizan que las aplicaciones se ejecuten de forma consistente a través de diferentes entornos y se puedan implementar fácilmente.

  2. Configuración declarativa: los desarrolladores definen el estado deseado de su aplicación y sus componentes mediante archivos de configuración de Kubernetes, generalmente escritos en formato YAML o JSON. Estos archivos de configuración especifican cómo hay que implementar la aplicación, incluyendo la cantidad de réplicas, los requisitos de red, los límites de recursos y más.

  3. Implementación: los desarrolladores utilizan Kubernetes para implementar sus aplicaciones en contenedores. Crean objetos de implementación en Kubernetes, especificando la cantidad deseada de réplicas e imágenes de contenedor. Kubernetes se encarga de programar los contenedores en los nodos disponibles en el clúster.

  4. Escalado y equilibrio de carga: Kubernetes proporciona mecanismos integrados para escalar aplicaciones. Los desarrolladores pueden definir políticas de escalado automático basadas en el uso de CPU u otras métricas para escalar o desescalar automáticamente la aplicación. Kubernetes también maneja el equilibrio de carga, distribuyendo el tráfico entrante a través de las réplicas de una aplicación para garantizar una alta disponibilidad y un uso óptimo de los recursos.

  5. Descubrimiento de servicios y redes: Kubernetes ofrece una abstracción de servicios que permite que las aplicaciones se descubran y se comuniquen entre ellas dentro del clúster. Los desarrolladores definen servicios que exponen endpoints para sus aplicaciones, y Kubernetes asigna automáticamente un nombre de DNS y una dirección IP únicos a cada servicio. Esto permite una comunicación fluida entre las diferentes partes de la aplicación.

  6. Actualizaciones acumulativas y reversiones: Kubernetes admite actualizaciones acumulativas, lo cual permite a los desarrolladores actualizar sus aplicaciones sin tiempo de inactividad. Pueden especificar una nueva versión de la imagen del contenedor y Kubernetes reemplaza gradualmente los contenedores existentes por los nuevos, lo cual garantiza una transición sin problemas. En caso de problemas o errores, Kubernetes admite reversiones a la versión de trabajo anterior.

  7. Observabilidad y monitoreo: Kubernetes proporciona funciones para la observabilidad y el monitoreo. Los desarrolladores pueden integrar sus aplicaciones con sistemas de registro y monitoreo, y Kubernetes ofrece métricas, registros y eventos sobre la aplicación y sus componentes. Esto permite a los desarrolladores obtener información sobre el rendimiento de la aplicación, solucionar problemas y optimizar el uso de los recursos.

Kubernetes simplifica el desarrollo de aplicaciones proporcionando una plataforma para gestionar el ciclo de vida, la escalabilidad y los aspectos de red de las aplicaciones en contenedores. Permite a los desarrolladores enfocarse en escribir código y definir el estado deseado de sus aplicaciones, mientras que Kubernetes se encarga de implementar, escalar y mantener la alta disponibilidad.

Gestionar Kubernetes con Nutanix

Kubernetes presenta numerosas ventajas, desde la optimización y automatización de la orquestación y gestión de contenedores hasta su comunidad activa de código abierto y escalabilidad flexible. Desempeña un papel crucial en las estrategias nativas de la nube y se adapta a los modelos de computación híbridos y multinube, lo cual la convierte en una opción estratégica para las organizaciones que buscan acelerar el desarrollo, implementar aplicaciones sin esfuerzo y optimizar las operaciones de aplicaciones y servicios.

Nutanix ayuda a simplificar todavía más las operaciones y la gestión de Kubernetes con Nutanix Kubernetes Engine (NKE). Con NKE, puede:

  • Implementar y configurar clústeres de Kubernetes listos para producción en cuestión de minutos, en lugar de días o semanas

  • Integrar fácilmente el almacenamiento, el monitoreo, el registro y las alertas de Kubernetes para obtener un stack completo nativo de la nube

  • Ofrecer una experiencia de usuario nativa de Kubernetes con APIs abiertas

Recomendado para usted:

Acceda a nuestros principales recursos

Ficha técnica de Nutanix Kubernetes Engine

Nutanix Kubernetes Engine

Beneficios de utilizar HCI para Kubernetes

5 beneficios de utilizar HCI para Kubernetes

Guía de Nutanix Kubernetes Engine

7 formas de simplificar la gestión del ciclo de vida de Kubernetes

Soluciones y productos relacionados

Nube híbrida Kubernetes

A través de colaboraciones con Red Hat, Google Cloud y Microsoft Azure, Nutanix ofrece un camino rápido y confiable hacia Kubernetes de nube híbrida.

Motor de Kubernetes de Nutanix

Acelere su camino hacia Kubernetes listo para producción y simplifique la gestión del ciclo de vida con Nutanix Kubernetes Engine, una solución de gestión empresarial de Kubernetes.

Almacenamiento de Kubernetes

Los servicios de datos de Nutanix y CSI amplían la sencillez para configurar y gestionar el almacenamiento persistente en Kubernetes.