Ir al contenido principal

Despliegue Básico de un Clúster Kubernetes: Guía Paso a Paso

Esta guía te mostrará cómo desplegar un clúster Kubernetes básico en un entorno de prueba. Asumiremos que tienes al menos dos máquinas virtuales o servidores con sistemas operativos Linux (Ubuntu, Debian, CentOS, etc.) configurados y accesibles por SSH. Una máquina actuará como el nodo maestro y las otras como nodos trabajadores.

Requisitos Previos

  • Dos o más servidores/máquinas virtuales: Preferiblemente con al menos 2 GB de RAM y suficiente espacio en disco.
  • Acceso SSH: Con usuario con privilegios de administrador (sudo).
  • Conexión de red: Asegúrate de que los servidores puedan comunicarse entre sí.
  • Conocimientos básicos de la línea de comandos Linux.

Paso 1: Configuración de las Instancias

Antes de instalar Kubernetes, debemos preparar las instancias para la instalación. Esto implica actualizar los paquetes del sistema y instalar las herramientas necesarias.

sudo apt update sudo apt upgrade -y sudo apt install -y curl iptables ca-certificates conntrack socat 

Estos comandos actualizan la lista de paquetes disponibles, actualizan los paquetes instalados a sus versiones más recientes y luego instalan las herramientas esenciales para la funcionalidad de red y seguridad.

Paso 2: Instalación de Docker y Kubernetes

Ahora, instalaremos Docker y los componentes de Kubernetes en todos los nodos. Comenzaremos con Docker, que es el Container Runtime predeterminado para Kubernetes.

curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl start docker sudo systemctl enable docker 

Este script descarga la última versión de Docker, la instala, inicia el servicio Docker y lo habilita para que se inicie automáticamente al inicio del sistema.

A continuación, instalaremos los componentes de Kubernetes:

curl -fsSL https://get.k8s.io -o get-k8s.sh sudo sh get-k8s.sh sudo apt update && sudo apt install -y kubelet kubeadm kubectl sudo systemctl enable kubelet 

Este script descarga e instala kubelet, kubeadm y kubectl. kubelet es el agente que se ejecuta en cada nodo, kubeadm es la herramienta de línea de comandos para inicializar y administrar clústeres Kubernetes, y kubectl es la herramienta de línea de comandos para interactuar con el clúster Kubernetes.

Paso 3: Inicialización del Clúster Maestro

En el nodo maestro, inicializaremos el clúster Kubernetes. Antes de ejecutar el comando, reemplaza <MASTER_NODE_PUBLIC_IP> con la dirección IP pública del nodo maestro.

sudo kubeadm init 

O, para especificar la dirección del servidor de API:

sudo kubeadm init --apiserver-advertise-address=<MASTER_NODE_PUBLIC_IP> 

Este comando inicializa el clúster y genera un token que se utilizará para agregar nodos trabajadores. Guarda esta información, ya que la necesitarás en el siguiente paso. También se mostrará una configuración para configurar kubectl. Cópiala y ejecútala en tu máquina local para poder interactuar con el clúster.

Paso 4: Agregar Nodos Trabajadores al Clúster

En cada nodo trabajador, SSH y ejecuta el siguiente comando, reemplazando <MASTER_NODE_PUBLIC_IP> con la dirección IP pública del nodo maestro, <TOKEN> con el token generado en el paso anterior y <HASH> con el hash SHA256 de la CA. Esta información se proporciona en la salida del comando kubeadm init en el nodo maestro.

sudo kubeadm join <MASTER_NODE_PUBLIC_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH> 

Este comando agrega el nodo trabajador al clúster y lo configura para comunicarse con el nodo maestro.

Paso 5: Despliegue de una Aplicación Nginx para Verificación

Para verificar el despliegue del clúster, desplegaremos una aplicación Nginx.

kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=LoadBalancer 

Este comando crea un Deployment llamado nginx utilizando la imagen oficial de Nginx y expone el Deployment a través de un LoadBalancer. Si tu proveedor de nube admite LoadBalancers, Kubernetes creará uno automáticamente. Si no, puedes usar un servicio tipo NodePort.

Paso 6: Verificación del Despliegue

Finalmente, verificaremos el despliegue ejecutando los siguientes comandos en el nodo maestro:

kubectl get pods kubectl get services 

El primer comando mostrará la lista de Pods en ejecución en el clúster. Deberías ver un Pod de Nginx en estado Running. El segundo comando mostrará la lista de Services. Deberías ver un Service llamado nginx con un tipo de LoadBalancer (o NodePort).

Pasos Siguientes

  • Explorar más objetos de Kubernetes: Familiarízate con Deployments, Services, ReplicaSets, ConfigMaps, Secrets, y más.
  • Automatización: Utiliza herramientas como Helm para gestionar la instalación y configuración de aplicaciones.
  • Escalado: Aprende a escalar tus aplicaciones utilizando Horizontal Pod Autoscaling (HPA).
  • Monitoreo: Implementa un sistema de monitoreo para supervisar la salud y el rendimiento de tu clúster.
  • Seguridad: Asegura tu clúster aplicando políticas de seguridad y restringiendo el acceso.

¡Felicidades! Has desplegado un clúster Kubernetes básico. Este es solo el comienzo, pero te proporciona una base sólida para construir aplicaciones en contenedores más complejas y escalables.

Comentarios

Entradas populares de este blog

Autenticación y Autorización (Kubernetes).

La autenticación en Kubernetes es un aspecto crítico para la seguridad y control de acceso dentro de un clúster. Kubernetes proporciona varios mecanismos de autenticación para usuarios y cuentas de servicio, que deben pasar a través del API Server para realizar cualquier operación. En este artículo, revisaremos cómo funciona la autenticación y cómo puedes usar herramientas como kubectl y curl para interactuar de manera segura con el clúster. En primer lugar, ¿Qué es la autenticación y la autorización? •     Autenticación:  Es el proceso de verificar quién es un usuario. Responde a la pregunta "¿Quién eres?". •     Autorización: El proceso de determinar qué acciones puede realizar un usuario autenticado. Responde a la pregunta "¿Qué puedes hacer?". Primer paso: Autenticación. La autenticación en Kubernetes es el proceso mediante el cual el sistema verifica la identidad de los usuarios y cuentas de servicio que intentan acceder al clúster.  ...

Tip 1. Exámen CKA. Economiza y optimiza tu tiempo; Usa --help con el paginador Less en la ayuda.

📘 Domina los comandos --help y el uso de less en el examen CKA Durante el examen CKA (Certified Kubernetes Administrator) , uno de los recursos más potentes y completamente permitidos es el uso del --help en los comandos de Kubernetes. Además, puedes combinarlo con el paginador less para buscar y navegar fácilmente entre opciones. ✅ ¿Está permitido usar --help ? Sí, está 100% permitido . Puedes usar el --help de cualquier comando disponible en el entorno del examen: kubectl --help kubeadm init --help kubelet --help kubectl explain pod.spec.containers Estos comandos muestran la ayuda y las opciones disponibles directamente desde el sistema, sin necesidad de ir a la documentación. 🔍 ¿Cómo usar less para buscar rápidamente? Cuando la salida del comando es larga, puedes usar | less para verla de forma paginada y navegar más cómodamente. kubeadm init --help | less Una vez dentro de less , puedes buscar cualquier texto escribiendo /texto . Por ejemplo: /pod-networ...

TLS Bootstrapping en Kubernetes: Qué es, cómo funciona y por qué importa en el examen CKA

                                                       Uno de los conceptos que a menudo pasan desapercibidos en la administración de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este artículo entenderás qué es, cómo funciona, qué lo diferencia del kubeadm join tradicional y cómo puede aparecer en el examen. ¿Qué es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene automáticamente un certificado TLS firmado por el clúster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al clúster sin necesidad de copiar manualmente los certificados. ¿Por qué es necesario? Cuando añades un nuevo nodo worker, su kubelet necesita autentic...