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