Ya sabes qué hace Kubernetes, cómo está construido por dentro y qué significa cada término del vocabulario. Todo eso ha sido teoría necesaria, pero Kubernetes no se aprende leyendo: se aprende rompiendo cosas en un clúster propio. Esta lección tiene dos partes. Primero, un panorama honesto de las opciones reales para conseguir un clúster —local, autogestionado o gestionado en la nube— con criterios para elegir en un proyecto profesional. Y después, la guía práctica paso a paso para montar el clúster de prácticas que usarás durante los doce módulos del curso, donde desplegaremos la plataforma Rutas Norte. Al terminar tendrás un entorno funcional, sabrás pararlo, reanudarlo y destruirlo sin miedo, y conocerás las causas de los fallos de arranque más habituales.
Contenido
- Las tres vías para conseguir un clúster
- El clúster de prácticas del curso: requisitos
- Instalación de minikube y del driver
- Arranque del clúster con recursos suficientes
- Addons necesarios para el curso
- Verificación del clúster
- Ciclo de vida: parar, reanudar, destruir
- Alternativa con kind y clúster multinodo
- Resolución de fallos de arranque habituales
- Las tres vías para conseguir un clúster
| Vía | Herramientas | Quién opera el plano de control | Coste | Cuándo elegirla |
|---|---|---|---|---|
| Local | minikube, kind, k3d, Docker Desktop | Tú, pero es desechable | Solo tu máquina | Aprender, desarrollar, probar manifiestos y CI |
| Autogestionada | kubeadm, k3s, Rancher, distribuciones de proveedor | Tú, de verdad: parches, certificados, etcd, copias | Servidores + personas | Centro de datos propio, requisitos legales de ubicación del dato, control total |
| Gestionada en la nube | EKS (AWS), AKS (Azure), GKE (Google) | El proveedor | Cuota de plano de control + nodos | La mayoría de empresas en producción |
Criterios prácticos para decidir:
- ¿Estás aprendiendo o desarrollando? Local. Sin discusión: es gratis, rápido de recrear y no te expone.
- ¿Tienes un equipo de plataforma con guardias 24×7? Si la respuesta es no, evita autogestionar producción. Mantener etcd, rotar certificados y actualizar tres veces al año no es un trabajo pequeño.
- ¿Hay restricciones de soberanía del dato o hardware especial? Autogestionado, con kubeadm o una distribución comercial.
- ¿Producción normal de una empresa normal? Gestionado. Rutas Norte terminará aquí: el plano de control es un problema del proveedor y el equipo se concentra en la plataforma.
Cada vía tiene su lección propia más adelante: Minikube y Entornos Locales con kind, Kubeadm y Kubernetes Gestionado: EKS, AKS y GKE. Aquí solo montamos lo necesario para tener entorno de trabajo.
Por qué minikube para este curso
Elegimos minikube como opción principal porque trae de serie, mediante addons, dos cosas que necesitaremos mucho: un Ingress Controller (módulo 4) y un aprovisionador de almacenamiento dinámico (módulo 5). Instalarlas a mano en otras herramientas es trabajo extra que no aporta aprendizaje en este punto. Damos también la receta equivalente con kind, que es más ligero y permite clústeres multinodo con facilidad.
- El clúster de prácticas del curso: requisitos
Rutas Norte terminará con seis componentes desplegados a la vez más los complementos de observabilidad, así que conviene no quedarse corto de recursos.
| Recurso | Mínimo | Recomendado para todo el curso |
|---|---|---|
| CPU | 2 núcleos | 4 núcleos |
| Memoria RAM | 4 GiB libres | 8 GiB libres (16 GiB en la máquina) |
| Disco | 20 GiB libres | 40 GiB libres |
| Sistema operativo | Linux, macOS o Windows 10/11 con WSL2 | Linux o macOS |
| Virtualización | Docker, o hipervisor (KVM, HyperKit, Hyper-V) | Docker como driver |
| Red | Acceso a internet para descargar imágenes | — |
También necesitas kubectl, cuya instalación y uso se cubren en detalle en la siguiente lección, La CLI de Kubernetes: kubectl. Si aún no lo tienes, minikube puede ejecutarlo por ti con minikube kubectl -- <comando>, aunque lo normal es instalarlo aparte.
- Instalación de minikube y del driver
3.1. El driver
minikube crea el clúster dentro de algo: un contenedor o una máquina virtual. Ese "algo" es el driver.
| Driver | Plataformas | Ventajas | Inconvenientes |
|---|---|---|---|
| docker (recomendado) | Linux, macOS, Windows | Rápido, sin hipervisor, arranque en segundos | El nodo es un contenedor: menos aislado |
| kvm2 | Linux | Aislamiento real de VM | Requiere KVM y permisos |
| hyperkit / vfkit | macOS | VM ligera | Menos usado hoy |
| hyperv | Windows Pro/Enterprise | Integrado en el sistema | Requiere edición Pro |
| none | Linux | Instala sobre la propia máquina | Modifica tu sistema; solo para servidores dedicados |
Usaremos docker. Comprueba que lo tienes y que tu usuario puede usarlo sin sudo:
Si el segundo comando falla con permission denied, añade tu usuario al grupo docker y vuelve a iniciar sesión:
3.2. Instalar minikube
Linux (x86_64):
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
rm minikube-linux-amd64macOS (con Homebrew):
Windows (con winget, en PowerShell):
Verifica la instalación:
- Arranque del clúster con recursos suficientes
Este es el comando que define tu entorno de trabajo para todo el curso:
minikube start \
--profile=rutas-norte \
--driver=docker \
--kubernetes-version=v1.30.0 \
--cpus=4 \
--memory=8192 \
--disk-size=40gQué hace cada opción, y por qué:
| Opción | Significado | Por qué así |
|---|---|---|
--profile=rutas-norte |
Nombre del clúster y del contexto | Permite tener varios clústeres independientes en la misma máquina y no chocar con otros trabajos |
--driver=docker |
Dónde se crea el nodo | Rápido y sin hipervisor |
--kubernetes-version=v1.30.0 |
Versión fijada | El curso usa 1.30+; fijarla evita que un minikube start futuro cambie el comportamiento |
--cpus=4 |
Núcleos asignados | Suficiente para los seis componentes más Prometheus del módulo 7 |
--memory=8192 |
MiB de RAM | Por debajo de 4096 empezarás a ver pods expulsados |
--disk-size=40g |
Disco del nodo | Las imágenes y los volúmenes persistentes ocupan |
Salida esperada (abreviada):
😄 [rutas-norte] minikube v1.33.1 on Ubuntu 24.04
✨ Using the docker driver based on user configuration
👍 Starting "rutas-norte" primary control-plane node in "rutas-norte" cluster
🚜 Pulling base image ...
🔥 Creating docker container (CPUs=4, Memory=8192MB) ...
🐳 Preparing Kubernetes v1.30.0 on Docker 26.1.1 ...
🔎 Verifying Kubernetes components...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "rutas-norte" cluster and "default" namespace by defaultDos detalles importantes de esa salida:
- La última línea indica que minikube ha modificado tu kubeconfig y ha creado y activado un contexto llamado
rutas-norte. Eso es lo que hace quekubectlhable con este clúster. - Ya se han habilitado dos addons por defecto:
default-storageclassystorage-provisioner. Son los que nos permitirán pedir volúmenes persistentes en el módulo 5 sin infraestructura real.
Si tu máquina tiene menos recursos, arranca con --cpus=2 --memory=4096 y tenlo presente: en el módulo 7 tendrás que apagar componentes para hacer sitio.
- Addons necesarios para el curso
Los addons son componentes preempaquetados que minikube instala en el clúster. Habilita estos tres desde ya:
minikube addons enable ingress --profile=rutas-norte
minikube addons enable metrics-server --profile=rutas-norte
minikube addons list --profile=rutas-norte| Addon | Qué instala | Para qué lo necesitaremos |
|---|---|---|
ingress |
Un Ingress Controller basado en NGINX | Publicar www.rutasnorte.example y api.rutasnorte.example (módulo 4) |
metrics-server |
Recolector de métricas de CPU y memoria | kubectl top y el autoescalado horizontal (módulos 7 y 9) |
storage-provisioner |
Aprovisionador dinámico de volúmenes | El disco de postgres-reservas (módulo 5). Ya activo por defecto |
dashboard (opcional) |
Interfaz web del clúster | Cómodo para explorar; se abre con minikube dashboard |
Comprueba que el controlador de Ingress ha arrancado antes de seguir:
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-9k2xq 0/1 Completed 0 62s
ingress-nginx-admission-patch-hn4vp 0/1 Completed 0 62s
ingress-nginx-controller-768f948f8f-7lxjp 1/1 Running 0 62sLos dos pods en Completed no son un error: son Jobs de instalación que ya terminaron su trabajo (recuerda de la lección anterior que un Job termina, no se queda corriendo). El importante es el tercero, en Running y 1/1.
- Verificación del clúster
Tres comprobaciones que conviene hacer siempre después de crear un clúster.
1. El nodo está listo:
NAME STATUS ROLES AGE VERSION INTERNAL-IP OS-IMAGE CONTAINER-RUNTIME
rutas-norte Ready control-plane 3m v1.30.0 192.168.49.2 Ubuntu 22.04.4 LTS docker://26.1.1Lo relevante: STATUS: Ready (el kubelet reporta y el plugin de red funciona) y ROLES: control-plane (en minikube el mismo nodo hace de plano de control y de trabajador, algo que en producción nunca ocurriría).
2. Los componentes del sistema están sanos:
NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx ingress-nginx-controller-768f948f8f 1/1 Running 0 2m
kube-system coredns-7db6d8ff4d-4rzmt 1/1 Running 0 3m
kube-system etcd-rutas-norte 1/1 Running 0 3m
kube-system kube-apiserver-rutas-norte 1/1 Running 0 3m
kube-system kube-controller-manager-rutas-norte 1/1 Running 0 3m
kube-system kube-proxy-9wgbn 1/1 Running 0 3m
kube-system kube-scheduler-rutas-norte 1/1 Running 0 3m
kube-system metrics-server-7d9f8c6b5-x2klp 1/1 Running 0 1m
kube-system storage-provisioner 1/1 Running 0 3mReconoce esta lista: son exactamente los componentes de la lección Arquitectura de Kubernetes, ahora corriendo de verdad en tu máquina. Fíjate en que en minikube el plano de control se ejecuta como pods dentro del propio clúster (static pods gestionados por el kubelet), y que aparece coredns, el servidor DNS interno que estudiaremos en el módulo 4.
3. La API responde y sabes a qué clúster hablas:
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
rutas-norteSi las tres comprobaciones pasan, tienes un clúster operativo.
- Ciclo de vida: parar, reanudar, destruir
Un clúster local consume recursos aunque no lo uses. Estos son los cuatro comandos que necesitas:
# Parar el clúster conservando TODO su estado (objetos, imágenes, volúmenes)
minikube stop --profile=rutas-norte
# Reanudarlo tal y como estaba, con la misma configuración
minikube start --profile=rutas-norte
# Ver el estado actual
minikube status --profile=rutas-norte
# Destruirlo por completo: se pierde todo lo desplegado
minikube delete --profile=rutas-norte| Comando | Qué conserva | Cuándo usarlo |
|---|---|---|
stop |
Todo: objetos, datos de volúmenes, imágenes descargadas | Al terminar la sesión de estudio |
start (sobre un perfil existente) |
Todo lo anterior | Al retomar el curso |
delete |
Nada de ese perfil | Cuando el clúster está roto o al acabar el curso |
Consejo de método: que
minikube deleteno te dé miedo es precisamente el objetivo. Si todos tus manifiestos están versionados en el directoriok8s/del repositorio —como haremos desde la lección 01-07— recrear el clúster y volver a aplicarlos debería costarte cinco minutos. Si te da miedo borrarlo, es señal de que hay estado importante que no está en Git.
También te resultará útil:
# Abrir un shell dentro del nodo (para inspeccionar el runtime)
minikube ssh --profile=rutas-norte
# Obtener la IP del nodo, que necesitaremos para el Ingress del módulo 4
minikube ip --profile=rutas-norte
- Alternativa con kind y clúster multinodo
kind (Kubernetes IN Docker) crea cada nodo como un contenedor Docker. Es más ligero que minikube y su gran ventaja es lo fácil que resulta montar un clúster multinodo, algo que te vendrá bien cuando estudiemos planificación y afinidad (módulo 6). Su desventaja: no trae addons, así que Ingress y almacenamiento requieren pasos extra.
Instalación en Linux:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.23.0/kind-linux-amd64
sudo install ./kind /usr/local/bin/kind && rm ./kind
kind versionFichero de configuración con un nodo de control y dos trabajadores, preparado además para Ingress:
# k8s/entorno-local/kind-rutas-norte.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: rutas-norte
nodes:
- role: control-plane
# Etiqueta que el Ingress Controller de kind espera encontrar
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
# Publicamos 80 y 443 del nodo en la máquina anfitriona
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
- role: worker
labels:
zona: norte
- role: worker
labels:
zona: surExplicación de las partes que importan:
nodes: cada entrada es un contenedor Docker que actuará como nodo. Aquí tendremos tres.extraPortMappings: sin esto, el puerto 80 del clúster no sería accesible desde tu navegador. Es el equivalente alminikube tunnel.labelsen los workers: etiquetas de nodo que usaremos para practicar afinidad y antiafinidad en el módulo 6, simulando dos zonas de disponibilidad.
Creación y verificación:
NAME STATUS ROLES AGE VERSION
rutas-norte-control-plane Ready control-plane 75s v1.30.0
rutas-norte-worker Ready <none> 52s v1.30.0
rutas-norte-worker2 Ready <none> 52s v1.30.0Instalar el Ingress Controller (kind no lo trae) y borrar el clúster cuando ya no haga falta:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
kind delete cluster --name rutas-norteQué elegir: si dudas, minikube. Usa kind cuando necesites varios nodos o cuando montes Kubernetes dentro de un pipeline de integración continua, donde su rapidez de creación es decisiva.
- Resolución de fallos de arranque habituales
| Síntoma | Causa probable | Solución |
|---|---|---|
Exiting due to RSRC_INSUFFICIENT_CORES |
Has pedido más CPU de la disponible | Baja --cpus, o amplía los recursos de Docker Desktop en Ajustes → Resources |
docker: permission denied while trying to connect to the Docker daemon socket |
Tu usuario no está en el grupo docker |
sudo usermod -aG docker $USER && newgrp docker |
Unable to pick a default driver |
No hay Docker ni hipervisor disponible | Instala Docker y arranca su servicio; después --driver=docker |
El arranque se queda en Pulling base image |
Red lenta, proxy corporativo o límite de descargas | Configura HTTP_PROXY/HTTPS_PROXY, o reintenta; la imagen base ronda 1 GB |
Nodo en NotReady de forma permanente |
Plugin de red no listo o falta de memoria | kubectl describe node y revisa las condiciones; suele resolverse con minikube delete y volver a crear |
Pods en ImagePullBackOff |
Imagen inexistente, etiqueta mal escrita o registro privado sin credenciales | kubectl describe pod y lee los eventos; verifica el nombre exacto de la imagen |
Pods del sistema en CrashLoopBackOff tras suspender el portátil |
Desfase de reloj entre el anfitrión y el nodo, que invalida los certificados | minikube stop && minikube start sobre el mismo perfil |
kubectl responde connection refused |
El clúster está parado o el contexto apunta a otro sitio | minikube status y kubectl config use-context rutas-norte |
The connection to the server localhost:8080 was refused |
No hay kubeconfig: kubectl usa el valor por defecto | Arranca minikube, o exporta KUBECONFIG al fichero correcto |
| Se acaba el disco a mitad de curso | Imágenes acumuladas | minikube ssh -- docker system prune -a, o recrea el clúster con --disk-size mayor |
Comandos de diagnóstico de propósito general cuando algo va mal en el arranque:
minikube status --profile=rutas-norte
minikube logs --profile=rutas-norte | tail -50
kubectl get events -A --sort-by=.metadata.creationTimestamp | tail -20El tercero es especialmente valioso y lo usaremos mucho: los eventos son el diario del clúster y casi siempre contienen la explicación en texto plano de por qué algo no ha funcionado.
Errores Comunes y Consejos
- Arrancar con los valores por defecto (2 CPU, 2 GiB). Funciona para los primeros módulos y se queda corto en cuanto añadas observabilidad. Es mejor dimensionar bien desde el principio que recrear el clúster a mitad de curso.
- No usar
--profile. Si trabajas con varios clústeres locales, el perfil por defecto se convierte en una fuente de confusión: acabas aplicando manifiestos en el clúster equivocado. Nombrar el perfilrutas-nortedeja siempre claro dónde estás. - Cambiar la versión de Kubernetes entre sesiones. Si un día arrancas con 1.30 y otro sin fijar versión, cambian comportamientos y APIs. Fija la versión en el comando y anótala en el repositorio.
- Confundir "el clúster arrancó" con "el clúster está listo".
minikube startretorna antes de que los addons estén operativos. Comprueba siempre conkubectl get pods -Aque no hay nada enPendingoContainerCreating. - Esperar que
Servicede tipoLoadBalancerobtenga IP externa. En local no hay cloud-controller-manager (lo vimos en 01-02): se queda en<pending>. Se resuelve conminikube tunnel, y lo trataremos en el módulo 4. - Dejar el clúster corriendo permanentemente. Consume CPU y batería.
minikube stopal terminar la sesión conserva absolutamente todo. - Consejo: guarda tu comando de creación de clúster en el propio repositorio (por ejemplo, en
k8s/entorno-local/READMEo un scriptcrear-cluster.sh). Forma parte de la documentación del proyecto tanto como los manifiestos.
Ejercicios
Ejercicio 1: Crear y verificar tu clúster
Monta el clúster de prácticas con el perfil rutas-norte, 4 CPU, 8 GiB y Kubernetes 1.30, habilita los addons ingress y metrics-server, y responde:
- ¿Cuántos nodos tiene y qué rol tienen?
- ¿Cuántos pods hay en el namespace
kube-systemy cuáles se corresponden con componentes del plano de control que estudiaste en la lección 01-02? - ¿Cuál es la IP del nodo?
- ¿Qué contexto de kubectl está activo?
Ejercicio 2: Ciclo de vida y persistencia del estado
Crea el namespace de desarrollo del proyecto, para el clúster, reanúdalo y comprueba si el namespace sigue existiendo:
kubectl create namespace rutas-norte-dev
minikube stop --profile=rutas-norte
minikube start --profile=rutas-norte
kubectl get namespacesExplica por qué el resultado es el que es, mencionando dónde se guarda ese objeto. Después, indica qué comando haría desaparecer ese namespace junto con todo lo demás.
Ejercicio 3: Clúster multinodo con kind
Crea con kind un clúster llamado rutas-norte-multi con un nodo de control y dos trabajadores etiquetados como zona: norte y zona: sur. Comprueba que los tres nodos están Ready y muestra únicamente los nodos de la zona norte. Explica en dos líneas por qué este clúster te será útil en el módulo 6 y por qué no lo usamos como entorno principal del curso.
Soluciones
Solución 1
minikube start --profile=rutas-norte --driver=docker \
--kubernetes-version=v1.30.0 --cpus=4 --memory=8192 --disk-size=40g
minikube addons enable ingress --profile=rutas-norte
minikube addons enable metrics-server --profile=rutas-norte- Un solo nodo, con rol
control-plane. En minikube ese mismo nodo ejecuta también las cargas de usuario, algo que en producción no se hace: el plano de control se reserva mediante taints. - Alrededor de ocho pods. Se corresponden con la arquitectura:
etcd,kube-apiserver,kube-scheduler,kube-controller-manager(plano de control),kube-proxy(nodo), máscoredns(DNS interno),storage-provisionerymetrics-server. No aparececloud-controller-managerporque no hay proveedor de nube. minikube ip --profile=rutas-norte→ típicamente192.168.49.2.kubectl config current-context→rutas-norte.
Solución 2
El namespace sigue existiendo después de stop y start. La razón es que stop no destruye nada: apaga el contenedor o la VM del nodo conservando su disco, y en ese disco está etcd, que es donde vive el objeto Namespace. Al reanudar, el apiserver vuelve a leer de la misma etcd y todo el estado declarado reaparece.
El comando que sí lo destruiría todo es minikube delete --profile=rutas-norte, que elimina el nodo y su disco, etcd incluida. Por eso los manifiestos deben vivir en Git: recrear el clúster es entonces un trámite.
Solución 3
kind create cluster --config k8s/entorno-local/kind-rutas-norte.yaml --name rutas-norte-multi
kubectl get nodes --show-labels
kubectl get nodes -l zona=norteSerá útil en el módulo 6 porque la afinidad, la antiafinidad, los taints y la dispersión por topología solo se pueden practicar de verdad con varios nodos: en un clúster de un solo nodo el scheduler no tiene ninguna decisión que tomar. No lo usamos como entorno principal porque kind no incluye addons: habría que instalar a mano el Ingress Controller y un aprovisionador de almacenamiento, trabajo que en este punto del curso distrae del objetivo.
Conclusión
Ya tienes un clúster de Kubernetes funcionando en tu máquina, con el perfil rutas-norte, la versión 1.30 fijada, recursos suficientes para todo el curso y los addons de Ingress, métricas y almacenamiento dinámico habilitados. Has visto también el panorama completo de opciones —local, autogestionado con kubeadm, gestionado en la nube— y los criterios para elegir una u otra en un proyecto real, además de una alternativa multinodo con kind para cuando lleguemos a la planificación. Y, sobre todo, sabes pararlo, reanudarlo y destruirlo sin miedo, porque la verdad operativa del curso es que el clúster es reemplazable y los manifiestos no.
Tienes el entorno, pero apenas has usado la herramienta con la que vas a hablar con él. En la siguiente lección, La CLI de Kubernetes: kubectl, dominaremos kubectl a fondo: el fichero kubeconfig y los contextos, los verbos que usarás todos los días, los formatos de salida, la selección por etiquetas y los trucos de productividad que marcan la diferencia entre pelearse con el clúster y trabajar con soltura.
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- La CLI de Kubernetes: kubectl
- Objetos, Manifiestos YAML y el Modelo Declarativo
- El Proyecto del Curso: la Plataforma Rutas Norte
Módulo 2: Componentes Principales de Kubernetes
- Pods
- ReplicaSets
- Deployments
- Actualizaciones, Rollbacks y Estrategias de Despliegue
- Servicios
- Namespaces
- Etiquetas, Selectores y Anotaciones
Módulo 3: Gestión de Configuración y Secretos
- ConfigMaps
- Secrets
- Variables de Entorno
- Cuotas y Límites de Recursos
- LimitRanges y Clases de Calidad de Servicio (QoS)
- ServiceAccounts y Acceso a la API desde los Pods
Módulo 4: Redes en Kubernetes
- Redes de Clúster
- Tipos de Servicios
- DNS Interno y Descubrimiento de Servicios
- Controladores de Ingress
- TLS y Gestión de Certificados con cert-manager
- Políticas de Red
Módulo 5: Almacenamiento en Kubernetes
- Volúmenes
- Volúmenes Persistentes
- Reclamaciones de Volúmenes Persistentes
- Clases de Almacenamiento
- Aprovisionamiento Dinámico, Expansión y Snapshots
- Copias de Seguridad y Restauración de Datos
Módulo 6: Conceptos Avanzados de Kubernetes
- StatefulSets
- DaemonSets
- Trabajos y CronJobs
- Init Containers, Sidecars y Patrones Multi-Contenedor
- Planificación: Afinidad, Taints y Tolerations
- Definiciones de Recursos Personalizados (CRDs)
- Operadores y el Patrón Controlador
Módulo 7: Monitoreo y Registro
- Verificaciones de Salud y Sondas
- Servidor de Métricas y kubectl top
- Monitoreo con Prometheus
- Visualización y Alertas con Grafana y Alertmanager
- Registro Centralizado con Elasticsearch, Fluentd y Kibana (EFK)
- Depuración de Aplicaciones y Eventos del Clúster
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Contextos de Seguridad y Endurecimiento del Contenedor
- Políticas de Seguridad de Pods y Pod Security Standards
- Seguridad de Red
- Seguridad de Imágenes
- Auditoría, Escaneo y Gestión de Vulnerabilidades
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Escalado por Eventos y Métricas Personalizadas con KEDA
- Alta Disponibilidad: PodDisruptionBudgets y Topología
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
- Minikube y Entornos Locales con kind
- Kubeadm
- Helm
- Kustomize
- GitOps con Argo CD y Flux
- Kubernetes Gestionado: EKS, AKS y GKE
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- Ejecución de Aplicaciones con Estado
- CI/CD con Kubernetes
- Estrategias de Despliegue: Blue-Green y Canary
- Gestión Multi-Clúster
- Operación en Producción: Incidencias, Runbooks y Costes
