Nos permite separar nuestro cluster físico en cluster virtuales separados de forma lógica. Los namespace no permiten agrupar recursos(Pods, servicios, deployments, etc.) por espacios de nombres. De esta forma podemos tener diferentes aplicaciones, usuarios, etc. trabajando en el mismo cluster de kubernetes pero trabajando en espacios de nombre separados.
Un ejemplo de uso de namespace sería dividir nuestro cluster físico en dos cluster lógicos, uno de pre y otro de pro
Kubernetes arranca con tres espacios de nombres inicialmente:
apiVersion: v1 kind: Namespace metadata: name: development labels: name: desarrollo
Crear un namespace
kubectl create namespace <nombrenamespace>
kubectl get namespaces
ver lo objetos de un namespace
kubectl get all -n <nombrenamespace>
kubectl config set-context --current –namespace=default
kubectl apply -f pod.yaml --namespace=<nombre_namespace>
https://github.com/ricardoandre97/k8s-resources/blob/master/namespaces/envs-ns.yaml
--- apiVersion: v1 kind: Namespace metadata: name: dev #crea un namespace de nombre dev y con la etiqueta dev labels: name: dev --- apiVersion: v1 kind: Namespace metadata: name: prod #crea un namespace de nombre prod y con la etiqueta prod labels: name: prod --- apiVersion: apps/v1 kind: Deployment metadata: name: deployment-dev namespace: dev # indica en que namespace debe de crear el deployment labels: app: front spec: replicas: 1 selector: matchLabels: app: front template: metadata: labels: app: front spec: containers: - name: nginx image: nginx:alpine --- apiVersion: apps/v1 kind: Deployment metadata: name: deployment-prod namespace: prod # indica en que namespace debe de crear el deployment labels: app: back spec: replicas: 5 selector: matchLabels: app: back template: metadata: labels: app: back spec: containers: - name: nginx image: nginx:alpine