En Kubernetes, los Namespaces son una forma de organizar y aislar recursos dentro de un clúster. Son especialmente útiles cuando trabajas con entornos de desarrollo, staging y producción en el mismo clúster, o cuando múltiples equipos comparten el mismo entorno Kubernetes.
🔹 ¿Qué es un Namespace en Kubernetes?
Un Namespace
es un espacio lógico dentro del clúster que agrupa recursos (como Pods, Services, Deployments, ConfigMaps, Secrets, etc.). Ayuda a:
- Aislar recursos entre entornos o equipos.
- Aplicar políticas de seguridad (como límites de recursos).
- Evitar conflictos de nombres entre recursos.
- Controlar el acceso mediante roles y permisos (RBAC).
❗ Algunos recursos como Nodes
, PersistentVolumes
o StorageClasses
no están en ningún namespace, ya que son compartidos por todo el clúster.
🔹 Espacios de nombre
Kubernetes arranca con tres espacios de nombres inicialmente:
default
El espacio de nombres por defecto para aquellos objetos que no especifican ningún espacio de nombreskube-system
El espacio de nombres para aquellos objetos creados por el sistema de Kuberneteskube-public
Este espacio de nombres se crea de forma automática y es legible por todos los usuarios (incluyendo aquellos no autenticados). Este espacio de nombres se reserva principalmente para uso interno del clúster, en caso de que algunos recursos necesiten ser visibles y legibles de forma pública para todo el clúster. La naturaleza pública de este espacio de nombres es simplemente por convención, no es un requisito.
🔹 Comandos básicos para trabajar con Namespaces
Crear un namespace
kubectl create namespace produccion
namespace/produccion created
namespace/produccion created
kubectl get namespaces
NAME STATUS AGE
default Active 11d
kube-node-lease Active 11d
kube-public Active 11d
kube-system Active 11d
kubernetes-dashboard Active 11d
produccion Active 39s
Usar un namespace con kubectl
kubectl run nginx --image=nginx --port=80 -n produccion
kubectl get pods -n produccion
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 9s
Eliminar un namespace
kubectl delete namespace produccion
namespace/produccion created
🔹 Cambiar namespace por defecto
Puedes configurar kubectl
para que siempre trabaje en un namespace específico:
kubectl config set-context --current --namespace=produccion
🔹 Definir un namespace dentro de un manifiesto YAML
Puedes declarar el namespace directamente en tus archivos YAML:
metadata:
name: mi-app
namespace: produccion
🔹 Casos de uso típicos
Escenario | Namespace sugerido |
---|---|
Aislar entorno de desarrollo | dev |
Separar entorno de producción | produccion |
Gestionar recursos de un equipo A | equipo-a |
Aplicar límites de CPU/RAM | qa , prod , etc. |
🔹 Resumen
- ✅ Namespaces aíslan y organizan recursos en Kubernetes.
- ✅ Te ayudan a evitar conflictos de nombres y controlar acceso.
- ✅ Puedes definir el namespace en los manifiestos o en los comandos.
- ✅ Útiles para entornos múltiples y equipos compartiendo un clúster.