Kubernetes: espacio de nombres

El espacio de nombres proporciona una calificación adicional al nombre de un recurso. Esto es útil cuando varios equipos utilizan el mismo clúster y existe la posibilidad de una colisión de nombres. Puede ser como un muro virtual entre múltiples clústeres.

Funcionalidad del espacio de nombres

A continuación se muestran algunas de las funcionalidades importantes de un espacio de nombres en Kubernetes:

  • Los espacios de nombres ayudan a la comunicación de pod a pod utilizando el mismo espacio de nombres.

  • Los espacios de nombres son clústeres virtuales que pueden ubicarse encima del mismo clúster físico.

  • Proporcionan una separación lógica entre los equipos y sus entornos.

Crear un espacio de nombres

El siguiente comando se utiliza para crear un espacio de nombres.

apiVersion: v1
kind: Namespce
metadata
   name: elk

Controlar el espacio de nombres

El siguiente comando se utiliza para controlar el espacio de nombres.

$ kubectl create –f namespace.yml ---------> 1
$ kubectl get namespace -----------------> 2
$ kubectl get namespace <Namespace name> ------->3
$ kubectl describe namespace <Namespace name> ---->4
$ kubectl delete namespace <Namespace name>

En el código anterior,

  • Estamos usando el comando para crear un espacio de nombres.
  • Esto mostrará una lista de todos los espacios de nombres disponibles.
  • Esto obtendrá un espacio de nombres particular cuyo nombre se especifica en el comando.
  • Esto describirá los detalles completos sobre el servicio.
  • Esto eliminará un espacio de nombres particular presente en el clúster.

Uso del espacio de nombres en el servicio: ejemplo

A continuación se muestra un ejemplo de un archivo de muestra para usar el espacio de nombres en el servicio.

apiVersion: v1
kind: Service
metadata:
   name: elasticsearch
   namespace: elk
   labels:
      component: elasticsearch
spec:
   type: LoadBalancer
   selector:
      component: elasticsearch
   ports:
   - name: http
      port: 9200
      protocol: TCP
   - name: transport
      port: 9300
      protocol: TCP

En el código anterior, estamos usando el mismo espacio de nombres en los metadatos del servicio con el nombre de elk.