Namespaces

Los namespaces en Kubernetes son una forma de aislar y organizar recursos dentro de un mismo clúster.
Piensa en ellos como "espacios de trabajo" o "compartimentos" virtuales donde puedes tener recursos que no interfieren entre sí, aunque tengan el mismo nombre.
Utilidad
-
Separar entornos: Puedes tener un
namespacepara desarrollo, otro para testing y otro para producción dentro del mismo clúster. -
Evitar conflictos de nombres: Puedes tener un Deployment llamado
web-appen dos namespaces diferentes sin que choquen entre ellos. -
Aplicar políticas y límites:
-
Puedes aplicar quotas de recursos por namespace (CPU, memoria).
-
Puedes definir reglas de seguridad o control de acceso (RBAC) por namespace.
-
-
Facilitar la administración: En clústeres grandes, los namespaces ayudan a que los equipos trabajen de manera aislada y organizada.
Namespaces por defecto
-
default: Namespace por defecto donde se crean los recursos si no especificas otro.
-
kube-system: Recursos internos del sistema de Kubernetes (DNS, kube-proxy, etc.).
-
kube-public: Datos accesibles de forma pública dentro del clúster (rara vez se usa directamente).
-
kube-node-lease: Namespace para gestionar heartbeats de los nodos (para detectar si un nodo está vivo).
🔧 Comandos para trabajar con Namespaces:
# Devuelve el listado de namespaces
kubectl get namespaces
# Crea un namespace
kubectl create namespace <nombre>
# Especifical el namespace en el cliente kubectl
kubectl apply -f pod.yaml --namespace=<nombre>
# Establecer un determinado namespace como predeterminado
kubectl config set-context --current -–namespace=<nombre>
Definir un namespace dentro de un YAML
metadata:
name: myapp
namespace: desarrollo