LinuxParty
Kubernetes es más que una moda: es el estándar de facto para la gestión moderna de contenedores. Aunque su curva de aprendizaje puede ser exigente al principio, con una buena base y ejemplos prácticos, se convierte en una herramienta poderosa para profesionales DevOps, administradores de sistemas y desarrolladores.
Ya sea que trabajes con entornos de desarrollo o en producción a gran escala, Kubernetes te permite tener control, escalabilidad y resiliencia con un solo comando.
En los últimos años, Kubernetes (K8s) se ha convertido en el pilar fundamental para desplegar aplicaciones modernas en la nube. Es la herramienta por excelencia para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores. Pero… ¿qué es exactamente? ¿Cómo se instala? ¿Y cómo se usa realmente?
Lectura recomendada: Cómo instalar un clúster de Kubernetes en CentOS
Este artículo es una guía completa para entender, instalar y usar Kubernetes, con explicaciones prácticas, ejemplos reales y recomendaciones clave para iniciarte en este potente ecosistema de orquestación.
🚀 ¿Qué es Kubernetes?
Kubernetes es una plataforma de código abierto originalmente desarrollada por Google y ahora mantenida por la Cloud Native Computing Foundation (CNCF). Permite:
- Orquestar contenedores (principalmente Docker y compatibles con OCI).
- Automatizar despliegues, escalados, actualizaciones y recuperación de fallos.
- Gestionar redes, almacenamiento y configuración de aplicaciones.
💡 Kubernetes no ejecuta contenedores directamente, sino que los organiza en pods, controla su ciclo de vida, y los distribuye eficientemente en una infraestructura de nodos.
🧱 Conceptos clave
- Pod: unidad mínima de ejecución (normalmente contiene uno o varios contenedores).
- Node: máquina física o virtual donde corren los pods.
- Cluster: conjunto de nodos gestionados por un nodo principal (master/control plane).
- Deployment: objeto que gestiona cómo se lanzan y actualizan los pods.
- Service: punto de acceso estable para los pods (con balanceo de carga).
- ConfigMap y Secret: permiten gestionar configuración externa y sensible.
🛠️ Cómo instalar Kubernetes
Existen muchas formas de instalar Kubernetes. Aquí nos enfocaremos en una instalación local con Minikube y una instalación real en múltiples nodos (Kubeadm).
Opción 1: Instalación con Minikube (ideal para pruebas)
Requisitos:
- Linux con virtualización activa (KVM, VirtualBox, etc.).
- Docker o containerd instalado.
kubectl
yminikube
.
1. Instalar kubectl
:
sudo apt install -y curl curl -LO "https://dl.k8s.io/release/$(curl -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/
2. Instalar Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube-linux-amd64 sudo mv minikube-linux-amd64 /usr/local/bin/minikube
3. Iniciar el cluster:
minikube start --driver=docker
Verifica el estado:
kubectl get nodes
Opción 2: Instalación en nodos reales (con kubeadm)
Requisitos:
- 1 nodo master + 1 o más nodos worker.
- Ubuntu Server 20.04+ o RHEL/AlmaLinux 8+.
- SSH con acceso root o sudo.
- Swap desactivado.
1. Preparar los nodos:
# Desactivar swap sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab # Habilitar módulos y sysctl cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1 EOF sudo sysctl --system
2. Instalar kubeadm, kubelet y kubectl:
sudo apt update && sudo apt install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
3. Iniciar el nodo maestro:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Sigue las instrucciones que aparecen (especialmente el kubeadm join
para los workers).
4. Configurar acceso para kubectl
:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
5. Instalar una red (ej: Flannel):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
6. Añadir nodos workers:
En los workers, ejecuta el comando kubeadm join ...
que te dio el master.
👨💻 Primeros pasos con Kubernetes
Crear un deployment de Nginx:
kubectl create deployment nginx --image=nginx
Ver los pods:
kubectl get pods
Exponer el servicio:
kubectl expose deployment nginx --port=80 --type=NodePort
Ver puerto asignado:
kubectl get svc
Escalar el deployment:
kubectl scale deployment nginx --replicas=3
Ver estado de los pods:
kubectl get pods -o wide
🧪 Ejemplo de manifiesto YAML completo
Archivo nginx-deploy.yaml
:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
Desplegarlo:
kubectl apply -f nginx-deploy.yaml
🧰 Herramientas complementarias
- Helm: gestor de paquetes para Kubernetes.
- Lens: interfaz visual para gestionar clusters.
- K9s: TUI para terminal.
- Prometheus + Grafana: monitoreo y métricas.
- Cert-Manager: para manejar certificados TLS automáticamente.
📚 Recursos útiles
- Documentación oficial
- Playground online gratuito
- Awesome Kubernetes (curated repo)
- Curso gratuito: Kubernetes Bootcamp
