Appearance
Kubernetes
Kubernetes (K8s) es una plataforma para desplegar y operar aplicaciones en contenedores en un clúster de máquinas. En vez de indicar paso a paso cómo ejecutar cada contenedor, se declara el estado deseado y Kubernetes trabaja para mantenerlo.
Esta sección reúne una introducción y guías prácticas:
- Imágenes y contenedores: construir, etiquetar y publicar imágenes, y cómo se ejecutan en Kubernetes.
- Despliegues y workloads: Pods, Deployments, Jobs y actualizaciones.
- Configuración y secretos: ConfigMaps, Secrets y variables de entorno.
- Redes y balanceo: Services, LoadBalancer, Ingress y Gateway API.
- Almacenamiento: volúmenes y volúmenes persistentes.
- Operaciones y escalado:
kubectl, salud, recursos, réplicas y diagnóstico.
Componentes principales
Un clúster de Kubernetes se organiza en dos grupos:
- Plano de control: expone la API del clúster y coordina los recursos. Incluye componentes como el API server, el scheduler y los controladores.
- Nodos: máquinas que ejecutan las cargas de trabajo. Cada nodo tiene un agente (
kubelet) y un runtime de contenedores compatible con Kubernetes.
El plano de control programa Pods en los nodos y los controladores reconcilian continuamente el estado real con el estado declarado. Por ejemplo, si un Deployment solicita tres réplicas y una deja de estar disponible, Kubernetes intenta crear otra.
Conceptos esenciales
| Recurso | Función |
|---|---|
| Pod | Unidad mínima desplegable; contiene uno o más contenedores que comparten red y pueden compartir volúmenes. |
| Deployment | Mantiene un conjunto de Pods sin estado y permite escalarlo y actualizarlo. |
| Service | Proporciona una dirección estable para acceder a un conjunto de Pods. |
| ConfigMap / Secret | Proporciona configuración y datos sensibles a las aplicaciones. |
| PersistentVolumeClaim (PVC) | Solicita almacenamiento persistente al clúster. |
| Namespace | Agrupa recursos y ayuda a separar entornos o equipos dentro del clúster. |
Preparar el entorno
Para practicar se necesita un clúster local o remoto y kubectl, el cliente de línea de comandos. Algunas opciones locales son kind, minikube y Docker Desktop con Kubernetes habilitado. Un proveedor cloud suele ofrecer un clúster gestionado.
Comprueba el cliente y el contexto activo:
bash
kubectl version --client
kubectl config current-context
kubectl get nodesEl contexto determina a qué clúster y usuario se envían los comandos. Compruébalo antes de aplicar cambios, especialmente si tienes acceso a varios entornos.
Declarar el estado deseado
Los recursos suelen describirse en archivos YAML y se aplican mediante la API:
bash
kubectl apply -f recurso.yaml
kubectl get pods
kubectl describe deployment mi-appLos manifiestos expresan el estado que quieres mantener, no una secuencia de comandos imperativa. Kubernetes y sus controladores se encargan de reconciliar los recursos.
Importante: los ejemplos de esta documentación son una base para aprender. En producción, adapta las imágenes, los recursos, la seguridad, la configuración de red y la persistencia a las necesidades de la aplicación y del clúster.