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
- 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.
 
1.2. Instalación de Docker
Kubernetes utiliza Docker como su motor de contenedores. Instala Docker en todas las máquinas:
- 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
- Inicialización del Nodo Maestro
 
3.1. Inicialización del Clúster
En el nodo maestro, inicializa el clúster de Kubernetes:
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:
- 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:
4.2. Unir los Nodos de Trabajo
En cada nodo de trabajo, ejecuta el comando obtenido en el paso anterior. Por ejemplo:
- 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":
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:
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
- Crea un archivo YAML para una aplicación de múltiples contenedores.
 - Despliega la aplicación en el clúster.
 - 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:
Verifica el estado del pod:
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
- ¿Qué es Linux?
 - Historia de Linux
 - Distribuciones de Linux
 - Instalando Linux
 - Estructura del Sistema de Archivos de Linux
 
Módulo 2: Comandos Básicos de Linux
- Introducción a la Línea de Comandos
 - Navegando el Sistema de Archivos
 - Operaciones de Archivos y Directorios
 - Visualización y Edición de Archivos
 - Permisos y Propiedad de Archivos
 
Módulo 3: Habilidades Avanzadas en la Línea de Comandos
- Uso de Comodines y Expresiones Regulares
 - Tuberías y Redirección
 - Gestión de Procesos
 - Programación de Tareas con Cron
 - Comandos de Redes
 
Módulo 4: Scripting en Shell
- Introducción al Scripting en Shell
 - Variables y Tipos de Datos
 - Estructuras de Control
 - Funciones y Librerías
 - Depuración y Manejo de Errores
 
Módulo 5: Administración del Sistema
- Gestión de Usuarios y Grupos
 - Gestión de Discos
 - Gestión de Paquetes
 - Monitoreo del Sistema y Optimización del Rendimiento
 - Respaldo y Restauración
 
Módulo 6: Redes y Seguridad
- Configuración de Redes
 - Firewall y Seguridad
 - SSH y Acceso Remoto
 - Sistemas de Detección de Intrusos
 - Asegurando Sistemas Linux
 
Módulo 7: Temas Avanzados
- Virtualización con Linux
 - Contenedores de Linux y Docker
 - Automatización con Ansible
 - Optimización del Kernel de Linux
 - Alta Disponibilidad y Balanceo de Carga
 
