Crear una Arquitectura de Cluster de Kubernetes

KubernetesBeginner
Practicar Ahora

Introducción

Kubernetes es una plataforma de orquestación de contenedores que automatiza el despliegue, el escalado y la gestión de aplicaciones contenedorizadas. Este desafío explora la arquitectura de Kubernetes, incluyendo los componentes que conforman un cluster y cómo interactúan entre sí.

Componentes del Plano de Control de Kubernetes

El plano de control (control plane) de Kubernetes gestiona el estado global del cluster, así como el despliegue y escalado de las aplicaciones. Sus componentes principales incluyen:

  • kube-apiserver: El front-end del plano de control que procesa todas las solicitudes de gestión del cluster.
  • etcd: Un almacén de datos clave-valor distribuido que guarda toda la configuración del cluster.
  • kube-scheduler: Responsable de asignar los pods a los nodos disponibles en el cluster.
  • kube-controller-manager: Ejecuta los controladores que regulan el estado de los distintos objetos de Kubernetes.

Tareas

Tu tarea consiste en obtener y mostrar el estado de los componentes del plano de control, específicamente: kube-apiserver, etcd, kube-scheduler y kube-controller-manager.

Requisitos

  • Utiliza un comando de kubectl para consultar el estado de los componentes del plano de control.
  • Ejecuta el comando dentro del directorio /home/labex/project.
  • La salida debe mostrar claramente el estado de salud de cada componente.

Ejemplo

A continuación se muestra un ejemplo del resultado esperado al consultar el estado de los componentes:

NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true","reason":""}
scheduler            Healthy   ok

Componentes de los Nodos de Kubernetes

Los componentes del nodo se encargan de ejecutar los contenedores y proporcionar el entorno de ejecución para las aplicaciones. Estos incluyen:

  • kubelet: El agente que se ejecuta en cada nodo para asegurar que los contenedores estén funcionando correctamente.
  • kube-proxy: El proxy de red que gestiona las reglas de red y el enrutamiento del tráfico hacia los contenedores correspondientes.

Tareas

Muestra la información sobre los nodos que están operando en el cluster de Kubernetes, incluyendo el nombre del nodo, su estado y otros detalles relevantes.

Requisitos

  • Utiliza un comando de kubectl para listar los nodos del cluster.
  • Ejecuta el comando en el directorio /home/labex/project.
  • La salida debe detallar la información de cada nodo presente en el cluster.

Ejemplo

Ejemplo de la salida esperada al listar los nodos:

NAME       STATUS   ROLES           AGE     VERSION
minikube   Ready    control-plane   2m52s   v1.26.1

Componentes de los Pods de Kubernetes

Un pod es la unidad mínima de despliegue en Kubernetes y representa una instancia única de un proceso en ejecución. Cada pod puede contener uno o más contenedores que comparten el mismo espacio de red y volúmenes de almacenamiento.

Tareas

  1. Crea un archivo llamado simple-pod.yaml con la configuración de un pod que ejecute un contenedor de Nginx.
  2. Despliega el pod utilizando el comando de kubectl adecuado.
  3. Muestra la información de los pods que se están ejecutando en el cluster.

Requisitos

  • Crea el archivo simple-pod.yaml en el directorio /home/labex/project definiendo un pod llamado simple-pod con la imagen de Nginx.
  • Usa kubectl para crear el recurso a partir del archivo YAML.
  • Usa otro comando de kubectl para listar y verificar que el pod esté en funcionamiento.

Ejemplo

Ejemplo de la salida esperada al gestionar los pods:

pod/simple-pod created
NAME         READY   STATUS    RESTARTS   AGE
simple-pod   1/1     Running   0          29s

Componentes de los Servicios de Kubernetes

Un servicio (Service) es una abstracción que define un conjunto lógico de pods y una política para acceder a ellos. Los componentes de un servicio incluyen:

  • Service IP: Una dirección IP virtual asignada al servicio.
  • Service Port: El número de puerto asignado al servicio.
  • Endpoint: Una lista de direcciones IP y puertos que apuntan a los pods que respaldan el servicio.

Tareas

  1. Crea un archivo llamado nginx-service.yaml con la configuración de un servicio para el pod de Nginx.
  2. Despliega el servicio utilizando el comando de kubectl correspondiente.
  3. Muestra la información de los servicios activos en el cluster.

Requisitos

  • Crea el archivo nginx-service.yaml en /home/labex/project para un servicio llamado nginx-service que exponga el puerto 80.
  • Usa kubectl para crear el servicio desde el archivo YAML.
  • Usa kubectl para listar los servicios y verificar su creación.

Ejemplo

Ejemplo de la salida esperada al consultar los servicios:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.96.0.1      <none>        443/TCP   5m42s
nginx-service   ClusterIP   10.96.184.71   <none>        80/TCP    4s

Resumen

En este desafío, hemos explorado la arquitectura de Kubernetes, cubriendo el plano de control, los nodos, los pods y los servicios. Aprendimos a verificar el estado de los componentes del sistema, a desplegar un pod básico y a configurar un servicio para permitir el acceso. Comprender cómo interactúan estos elementos fundamentales es esencial para construir una base sólida en el despliegue y la gestión de aplicaciones en contenedores.

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar