Namespaces en Kubernetes


Aprende a usar los Namespace en Kubernetes y aplicarlos en los deployments y servicios

oscar Escrito por oscar 05 August 2025 59 0

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 nombres
  • kube-system El espacio de nombres para aquellos objetos creados por el sistema de Kubernetes
  • kube-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.

Comentario

Debe aceptar antes de enviar