Saltar al contenido principal

Gestionando con Namespaces

Para crear un recurso en un namespace, debemos indicar el nombre del espacio de nombres en la etiqueta namespace en su definición:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: proyecto1
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80

También podemos crearlos sin el archivo YAML utilizando kubectl:

kubectl run nginx --image=nginx -n proyecto1
deployment.apps/nginx created

kubectl get deploy -n proyecto1
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx 1 1 1 1 15s

Para exponer el servicio asociado:

kubectl expose deployment/nginx --port=80 --type=NodePort -n proyecto1
service/nginx exposed

kubectl get services -n proyecto1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.107.121.169 <none> 80:30352/TCP 10s

Listando Namespaces

Podemos listar todos los namespaces disponibles en el clúster:

kubectl get namespaces
NAME STATUS AGE
default Active 10d
kube-system Active 10d
kube-public Active 10d
proyecto1 Active 5m

Eliminando un Namespace

Al eliminar un namespace, se borran todos los recursos que hemos creado en él:

kubectl delete ns proyecto1
namespace "proyecto1" deleted

Cambiando el Namespace por Defecto

Podemos cambiar el namespace por defecto para nuestras operaciones de kubectl:

kubectl config set-context --current --namespace=proyecto1
Context "current" modified.

Esto nos permite ejecutar comandos sin especificar el namespace cada vez:

kubectl get pods
kubectl get services