¿Qué es un clúster de Kubernetes?

Un clúster de Kubernetes (K8s) es un grupo de nodos informáticos, o máquinas de trabajo, que ejecutan aplicaciones en contenedores. La creación de contenedores es un proceso de despliegue y ejecución de software que agrupa el código de una aplicación con todos los archivos y bibliotecas que necesita para ejecutarse en cualquier infraestructura. Kubernetes es un software de orquestación de contenedores de código abierto con el que puede administrar, coordinar y programar contenedores a escala. Kubernetes coloca los contenedores en pods y los ejecuta en nodos. Un clúster de Kubernetes tiene, como mínimo, un nodo maestro que ejecuta un pod de contenedores y un plano de control que administra el clúster. Cuando implementa Kubernetes, básicamente está ejecutando un clúster de Kubernetes.

¿Cuáles son los fundamentos de Kubernetes?

Para entender un clúster de Kubernetes, primero debe comprender los fundamentos de la creación de contenedores con Kubernetes. 

Un contenedor es una sola aplicación o microservicio empaquetado con sus dependencias, que se puede ejecutar como un entorno y una aplicación independientes en uno. Las aplicaciones modernas adoptaron una arquitectura de microservicios distribuidos en la que cada aplicación incluye cientos o incluso miles de componentes de software discretos que se ejecutan de forma independiente. Cada componente (o microservicio) realiza una única función independiente para mejorar la modularidad del código. Al crear contenedores independientes para cada servicio, las aplicaciones se pueden implementar y distribuir en varias máquinas. Puede escalar o desescalar verticalmente las cargas de trabajo de microservicios individuales y las capacidades informáticas para maximizar la eficiencia de las aplicaciones.

Kubernetes es un software de orquestación de contenedores de código abierto que simplifica la administración de contenedores a escala. Puede programar, ejecutar, iniciar y cerrar contenedores y automatizar las funciones de administración. Los desarrolladores obtienen los beneficios de la creación de contenedores a escala sin los gastos generales de administración.

A continuación, veamos algunos conceptos esenciales de Kubernetes.

Pod

Un pod es la unidad desplegable estándar de Kubernetes. Los pods contienen uno o más contenedores y, dentro del pod, los contenedores comparten los mismos recursos del sistema, como el almacenamiento y las redes. Cada pod recibe una dirección IP única. 

Los contenedores dentro de un pod no están aislados. Considere que un pod es algo parecido a una máquina virtual (VM), con contenedores similares a las aplicaciones que se ejecutan en la VM. Los pods y grupos de pods se pueden organizar adjuntándoles etiquetas de atributos, por ejemplo, etiquetas “dev” o “prod” para el tipo de entorno. 

Nodo

Un nodo es una máquina que ejecuta pods. Puede ser un servidor físico o virtual, como una instancia de Amazon EC2. Los componentes de un nodo incluyen los siguientes:

  • Kubelet para la gestión de nodos y contenedores.
  • Kube-proxy para un proxy de red.
  • Versión ejecutable del contenedor

Para ejecutar los contenedores, se debe instalar una versión ejecutable del contenedor compatible en el nodo. Kubernetes admite varias versiones ejecutables de contenedores, como la interfaz de versión ejecutable del contenedor de Kubernetes y el contenedor. 

Conjunto de réplicas y despliegue

Un pod es un artefacto independiente y, cuando su nodo deja de funcionar, no se reinicia automáticamente. Si uno o varios pods se agrupan en un conjunto de réplicas, en Kubernetes puede designar conjuntos de réplicas que siempre se ejecuten en todos los nodos. Esto es fundamental para escalar y desescalar verticalmente y para garantizar la continuidad de las aplicaciones y los servicios. 

Un despliegue es el objeto de administración de Kubernetes para implementar una aplicación, así como para actualizar o revertir la aplicación sin desconectarla.

Servicio e ingreso

Use un servicio de Kubernetes a fin de exponer un pod o un grupo de pods en la red, a través de un punto de conexión, para lograr una interactividad que siga las reglas de comunicación de red estándar. Para acceder al tráfico público de Internet, se adjunta un ingreso de Kubernetes a un servicio y, luego, se vincula a uno o varios pods.

¿Qué son los componentes del clúster de Kubernetes?

Un clúster de Kubernetes es un grupo de uno o más nodos con pods en ejecución. Dentro del clúster, el plano de control de Kubernetes administra los nodos y los pods.

Los componentes del plano de control incluyen los siguientes:

  • Servidor API de Kubernetes (kube-apiserver) que administra las comunicaciones dentro y hacia el clúster.
  • Almacenamiento (etcd) para registrar el estado persistente del clúster.
    Planificador (kube-scheduler) para administrar los recursos de Kubernetes del nodo y del pod posterior. 

Otros componentes incluyen un administrador de controladores para el control de nodos y tareas (kube-controller-manager) y un administrador de controladores de nube para la integración en la infraestructura de nube pública específica del proveedor (cloud-controller-manager).

Como los contenedores no tienen almacenamiento persistente, las aplicaciones necesitan almacenar los datos que persisten. Los pods también pueden requerir acceso a los datos compartidos. Los volúmenes persistentes se pueden agregar a un clúster como almacenamiento, a los que se hace referencia dentro del clúster de manera similar a un nodo.

¿Cómo trabajan los desarrolladores con el clúster de Kubernetes?

Los desarrolladores primero deben descargar e instalar Kubernetes en un nodo maestro y sus nodos de trabajo. Luego, pueden implementar el clúster en máquinas físicas o virtuales, de forma local, en un centro de datos o en la nube.

Instalación

Para empezar de forma sencilla con las máquinas virtuales Linux, en el nodo maestro elegido (máquina virtual), debe instalar primero:

  • Docker o cualquier otro software de creación de contenedores.
  • Clave de repositorio y repositorio de código de Kubernetes.
  • Paquete kubeadm para la implementación de clústeres.
  • Paquete kubelet para la coordinación de nodos.
  • Paquete kubectl para la línea de comandos del clúster.

Realice el proceso en cada uno de los demás nodos de trabajo designados.

Inicialización de clústeres

Para inicializar un clúster, ejecute el comando kubeadm init en el nodo maestro. Debe agregar un archivo de configuración de kube e implementar redes de pods, normalmente con un archivo YAML, antes de que el clúster esté listo para funcionar. El comando kubeadm init genera un comando join, que se puede copiar y pegar en las líneas de comandos del nodo de trabajo de las demás máquinas virtuales. Esto permite que cada nodo de trabajo se una al clúster. 

Trabajar con Kubernetes

Con el panel de interfaz de usuario de Kubernetes, los implementadores pueden crear e implementar aplicaciones en el clúster. Para un panel de interfaz de usuario de Kubernetes, ejecute el comando kubectl proxy en la máquina maestra. La interfaz de usuario estará disponible entonces en http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.

¿Qué es la administración de clústeres de Kubernetes?

La administración de clústeres de Kubernetes es el término para administrar varios clústeres de Kubernetes a escala. Por ejemplo, piense en un entorno de desarrollo: el equipo puede necesitar clústeres de prueba, desarrollo y producción, y que cada uno de estos se ejecute en varias máquinas físicas y virtuales distribuidas in situ y basadas en la nube.

Para administrar varios tipos diferentes de clústeres juntos, debe poder realizar operaciones de clúster, como la creación y la destrucción, las actualizaciones in situ, el mantenimiento, la reconfiguración, la seguridad, la creación de informes de datos de clústeres, etc. La administración de varios clústeres se puede lograr mediante una combinación de servicios de Kubernetes, herramientas especializadas, configuraciones y prácticas recomendadas.

¿Cómo puede ayudarlo AWS con sus requisitos de clúster de Kubernetes?

AWS proporciona servicios en la nube para configurar, ejecutar y administrar sus clústeres de Kubernetes: 

  • Amazon Elastic Compute Cloud (EC2) lo ayuda a aprovisionar y ejecutar Kubernetes en los tipos de instancias que elija.
  • Amazon Elastic Kubernetes Service (EKS) lo ayuda a iniciar, ejecutar y escalar Kubernetes, sin necesidad de aprovisionar ni administrar instancias maestras con un plano de control y etcd. EKS incluye herramientas de administración de clústeres e integraciones útiles con los servicios de redes y seguridad de AWS.

Cree una cuenta gratuita hoy mismo para comenzar a utilizar los clústeres de Kubernetes en AWS.

Pasos siguientes en AWS

Descubra otros recursos relacionados con el producto
Innove más rápido con el conjunto más completo de servicios de contenedores 
Regístrese para obtener una cuenta gratuita

Obtenga acceso instantáneo al nivel Gratuito de AWS.

Regístrese 
Comenzar a crear en la consola

Comience a crear en la consola de administración de AWS.

Iniciar sesión