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