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
kubectlpara 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
kubectlpara 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
- Crea un archivo llamado
simple-pod.yamlcon la configuración de un pod que ejecute un contenedor de Nginx. - Despliega el pod utilizando el comando de
kubectladecuado. - Muestra la información de los pods que se están ejecutando en el cluster.
Requisitos
- Crea el archivo
simple-pod.yamlen el directorio/home/labex/projectdefiniendo un pod llamadosimple-podcon la imagen de Nginx. - Usa
kubectlpara crear el recurso a partir del archivo YAML. - Usa otro comando de
kubectlpara 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
- Crea un archivo llamado
nginx-service.yamlcon la configuración de un servicio para el pod de Nginx. - Despliega el servicio utilizando el comando de
kubectlcorrespondiente. - Muestra la información de los servicios activos en el cluster.
Requisitos
- Crea el archivo
nginx-service.yamlen/home/labex/projectpara un servicio llamadonginx-serviceque exponga el puerto 80. - Usa
kubectlpara crear el servicio desde el archivo YAML. - Usa
kubectlpara 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.


