Skip to content

Rancher Projects y Kubernetes Namespaces

Projects

Un Namespace es un concepto de Kubernetes que permite un clúster virtual dentro de un clúster, lo cual es útil para dividir el clúster en "clústeres virtuales" separados, cada uno de los cuales tiene su propio control de acceso y cuotas de recursos.

Un proyecto es un grupo de Namespaces y es un concepto introducido por Rancher. Los proyectos le permiten administrar múltiples Namespaces como un grupo y realizar operaciones de Kubernetes en ellos. Puede usar proyectos para admitir múltiples inquilinos, de modo que un equipo pueda acceder a un proyecto dentro de un clúster sin tener acceso a otros proyectos en el mismo clúster.

Namespaces

Kubernetes soporta múltiples clústeres virtuales respaldados por el mismo clúster físico. Estos clústeres virtuales se denominan espacios de nombres (namespaces).

Rancher Server

Los espacios de nombres proporcionan la siguiente funcionalidad:

Proporcionar un scope para los recursos y sus nombres: los nombres de los recursos deben ser únicos dentro de un Namespace, pero no entre Namespaces. Los Namespaces no se pueden anidar unos dentro de otros.

Cuotas de recursos: los Namespaces proporcionan una forma de dividir los recursos del clúster entre varios usuarios. Puede asignar recursos a nivel de proyecto para que cada Namespaces del proyecto pueda usarlos. También puede omitir esta herencia asignando recursos explícitamente a un Namespace.

Puede asignar los siguientes recursos directamente a los Namespaces:

  • Workloads
  • Load Balancers/Ingress
  • Service Discovery Records
  • Persistent Volume Claims
  • Certificates
  • ConfigMaps
  • Registries
  • Secrets

En términos de jerarquía:

  • Los clústeres contienen proyectos
  • Los proyectos contienen Namespaces

Puede utilizar proyectos para realizar acciones como:

  • Asigne usuarios a un grupo de espacios de nombres (es decir, membresía del proyecto ).
  • Asigne roles específicos a los usuarios en un proyecto. Un rol puede ser propietario, miembro, solo lectura o personalizado .
  • Asignar recursos al proyecto.

Cuando crea un clúster, se crean automáticamente dos proyectos dentro de él:

  • Default Project
  • System Project

Default Project: Cuando aprovisiona un clúster con Rancher, crea automáticamente un proyecto default para el clúster. Este es un proyecto que puede usar para comenzar con su clúster, pero siempre puede eliminarlo y reemplazarlo con proyectos que tengan nombres más descriptivos.

System Project: Para solucionar problemas, puede ver el proyecto system y verificar si los Namespaces importantes en el sistema Kubernetes funcionan correctamente. Este proyecto le ahorra la resolución de problemas de contenedores de espacios de nombres de sistemas individuales.

  1. Establesca conexión al cluster de Kubernetes cluster-users por medio del CLI kubectl, utilice un perfil de administrador
  2. Puedes listar los espacios de nombres actuales dentro de un clúster:
    kubectl get namespaces
    
  3. Puede crear un nuevo namespace:
    kubectl create namespace mem-example
    
  4. Desplegar cargas de trabajo dentro del Namespace
    kubectl --namespace=mem-example run nginx --image=nginx
    
    kubectl --namespace=mem-example get pods
    
  5. Establecer un Namespace como predeterminado en el contexto actual
    kubectl config set-context --current --namespace=mem-example
    
    kubectl  run nginx2 --image=nginx
    
    kubectl  get pods
    
  6. Verificar el Namespace actual
    kubectl config view | grep namespace:
    
    La mayoría de los recursos de Kubernetes (ej. pods, services, replication controllers, y otros) están en algunos espacios de nombres. Sin embargo, los recursos que representan a los propios espacios de nombres no están a su vez en espacios de nombres. De forma similar, los recursos de bajo nivel, como los nodos y los volúmenes persistentes, no están en ningún espacio de nombres.

Para comprobar qué recursos de Kubernetes están y no están en un espacio de nombres:

  • Los recursos que se encuentran dentro del alcance del Namespace
    kubectl api-resources --namespaced=true
    
  • Los recursos que se encuentran fuera del alcance del Namespace
    kubectl api-resources --namespaced=false
    

Verificar en Rancher Server Web Console la pertenencia del Namespace mem-example a los proyectos actuales.

Regresar a la linea de comandos y eliminar el Namespace mem-example

kubectl delete namespace mem-example