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).

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.
- Establesca conexión al cluster de Kubernetes cluster-users por medio del CLI kubectl, utilice un perfil de administrador
- Puedes listar los espacios de nombres actuales dentro de un clúster:
kubectl get namespaces - Puede crear un nuevo namespace:
kubectl create namespace mem-example - Desplegar cargas de trabajo dentro del Namespace
kubectl --namespace=mem-example run nginx --image=nginxkubectl --namespace=mem-example get pods - Establecer un Namespace como predeterminado en el contexto actual
kubectl config set-context --current --namespace=mem-examplekubectl run nginx2 --image=nginxkubectl get pods - Verificar el Namespace actual
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.
kubectl config view | grep namespace:
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