Introducción

Kubernetes es una plataforma de orquestación de contenedores que automatiza el despliegue, la gestión y la escalabilidad de aplicaciones en contenedores. En este módulo, aprenderás a desplegar un clúster de Kubernetes desde cero, utilizando herramientas y prácticas recomendadas.

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Conocimientos básicos de Linux y Docker.
  • Un entorno de trabajo con al menos tres máquinas virtuales o físicas (una para el nodo maestro y dos para los nodos de trabajo).
  • Acceso a Internet para descargar las herramientas necesarias.

Pasos para Desplegar un Clúster de Kubernetes

  1. Preparación del Entorno

1.1. Configuración de las Máquinas

Asegúrate de que todas las máquinas tengan:

  • Un sistema operativo Linux (preferiblemente Ubuntu 20.04 LTS).
  • Acceso SSH configurado.
  • Actualizaciones del sistema instaladas.
sudo apt update
sudo apt upgrade -y

1.2. Instalación de Docker

Kubernetes utiliza Docker como su motor de contenedores. Instala Docker en todas las máquinas:

sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker

  1. Instalación de Kubernetes

2.1. Instalación de kubeadm, kubelet y kubectl

Instala las herramientas necesarias en todas las máquinas:

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo add-apt-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

  1. Inicialización del Nodo Maestro

3.1. Inicialización del Clúster

En el nodo maestro, inicializa el clúster de Kubernetes:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

3.2. Configuración del Usuario

Configura kubectl para el usuario no root:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.3. Implementación de la Red de Pods

Instala un complemento de red para que los pods puedan comunicarse entre sí. Aquí usaremos Calico:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

  1. Adición de Nodos de Trabajo

4.1. Obtener el Comando de Unión

En el nodo maestro, obtén el comando para unir los nodos de trabajo:

kubeadm token create --print-join-command

4.2. Unir los Nodos de Trabajo

En cada nodo de trabajo, ejecuta el comando obtenido en el paso anterior. Por ejemplo:

sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

  1. Verificación del Clúster

5.1. Verificar el Estado de los Nodos

En el nodo maestro, verifica que todos los nodos estén en estado "Ready":

kubectl get nodes

5.2. Despliegue de una Aplicación de Prueba

Despliega una aplicación de prueba para asegurarte de que el clúster funciona correctamente:

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

Verifica que el servicio esté funcionando:

kubectl get services

Accede a la aplicación de prueba utilizando la IP del nodo y el puerto asignado.

Ejercicio Práctico

Despliega una Aplicación de Múltiples Contenedores

  1. Crea un archivo YAML para una aplicación de múltiples contenedores.
  2. Despliega la aplicación en el clúster.
  3. Verifica que todos los contenedores estén funcionando correctamente.

Solución

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: nginx-container
    image: nginx
    ports:
    - containerPort: 80
  - name: busybox-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

Despliega el pod:

kubectl apply -f multi-container-pod.yaml

Verifica el estado del pod:

kubectl get pods

Conclusión

En este módulo, has aprendido a desplegar un clúster de Kubernetes desde cero, configurar la red de pods y desplegar aplicaciones. Con esta base, puedes explorar más características avanzadas de Kubernetes y comenzar a orquestar aplicaciones complejas en contenedores.

Maestría en Linux: De Principiante a Avanzado

Módulo 1: Introducción a Linux

Módulo 2: Comandos Básicos de Linux

Módulo 3: Habilidades Avanzadas en la Línea de Comandos

Módulo 4: Scripting en Shell

Módulo 5: Administración del Sistema

Módulo 6: Redes y Seguridad

Módulo 7: Temas Avanzados

Módulo 8: Proyectos Prácticos

© Copyright 2024. Todos los derechos reservados