We couldn't find a match for given <KEYWORD>, please try again.

¿Qué es un espacio de nombres de Kubernetes?

Los espacios de nombres son una forma de organizar los clústeres en subclústeres virtuales. Pueden ser útiles cuando diferentes equipos o proyectos comparten un clúster de Kubernetes. Un clúster admite una cantidad ilimitada de espacios de nombres, cada uno separado de forma lógica de los demás, pero con la capacidad de comunicarse entre ellos. Los espacios de nombres no se pueden anidar entre sí.

Cualquier recurso que exista en Kubernetes existirá en el espacio de nombres predeterminado o en un espacio de nombres que cree el operador del clúster. Fuera del espacio de nombres solo existen los volúmenes de almacenamiento persistente y los nodos. Estos recursos de bajo nivel están siempre visibles para todos los espacios de nombres del clúster.

Estado de Kubernetes

Kubernetes Up and Running

¿Cuál es el espacio de nombres «predeterminado» en Kubernetes?

Kubernetes incluye tres espacios de nombres predefinidos. Son los siguientes:

  1. default: la traducción del nombre de este espacio de nombres es «predeterminado», lo cual indica que es el espacio de nombres al que se hace referencia de forma predeterminada para cada comando de Kubernetes, y que en él se encuentran todos los recursos de Kubernetes de forma predeterminada. Hasta que se crean nuevos espacios de nombres, todo el clúster reside en «default».
  2. kube-system: se utiliza para los componentes de Kubernetes y debe evitarse.
  3. kube-public: se utiliza para recursos públicos. No se recomienda que lo usen los usuarios.

¿Por qué utilizar espacios de nombres de Kubernetes?

Existen muchos casos de uso para los espacios de nombres de Kubernetes, entre los que se incluyen:

  • Permitir que los equipos o proyectos existan en sus propios clústeres virtuales sin temor a que influyan en el trabajo de los demás.
  • Mejorar los controles de acceso basados en funciones (RBAC) limitando los usuarios y los procesos a determinados espacios de nombres.
  • Permitir que se repartan los recursos de un clúster entre varios equipos y usuarios mediante cuotas de recursos.
  • Proporcionar un método sencillo para separar el desarrollo, las pruebas y la implementación de aplicaciones contenedorizadas, de modo que todo el ciclo de vida pueda tener lugar en el mismo clúster.

¿Cuándo se deben utilizar múltiples espacios de nombres de Kubernetes?

El espacio de nombres predeterminado puede ser más que suficiente para los equipos pequeños o las organizaciones más pequeñas. Esta posibilidad es de especial relevancia si no hay necesidad de aislar a los desarrolladores o los usuarios entre sí. Sin embargo, tener varios espacios de nombres reporta muchas ventajas útiles. Entre ellas las siguientes:

  • Aislamiento. Los equipos grandes o en expansión pueden utilizar espacios de nombres para aislar sus proyectos y microservicios entre sí. Los equipos pueden utilizar sin problema los mismos nombres de recursos en distintas áreas de trabajo. Además, al llevar a cabo una acción en los elementos de un área de trabajo, las demás áreas de trabajo nunca se ven afectadas.
  • Organización. Las organizaciones que utilizan un solo clúster para el desarrollo, las pruebas y la producción pueden utilizar espacios de nombres para implementar entornos de pruebas y desarrollo. Así se garantiza que el código de producción no se vea afectado por los cambios que realicen los desarrolladores o los evaluadores en sus propios espacios de nombres a lo largo del ciclo de vida de las aplicaciones.
  • Permisos. Los espacios de nombres permiten el uso de RBAC de Kubernetes para que los equipos puedan definir funciones que agrupen listas de permisos o capacidades con un solo nombre. Así se puede garantizar que solo los usuarios autorizados tengan acceso a los recursos de un espacio de nombres determinado.
  • Control de recursos. En los espacios de nombres se pueden establecer límites de recursos basados en políticas mediante la definición de cuotas de recursos para el uso de CPU o memoria. Así se puede garantizar que cada proyecto o espacio de nombres tenga los recursos que necesite para ejecutarse, y que ningún espacio de nombres acapare todos los recursos disponibles.
  • Rendimiento. El uso de espacios de nombres puede ayudar a mejorar el rendimiento de un clúster determinado. Si un clúster está separado en múltiples espacios de nombres para diferentes proyectos, la API de Kubernetes tendrá menos elementos en los que buscar cuando lleve a cabo las operaciones. Así se puede reducir la latencia y acelerar el rendimiento general de cada aplicación que se ejecuta en el clúster.

¿Cómo se pueden comunicar los pods entre espacios de nombres de Kubernetes?

Aunque los espacios de nombres están separados unos de otros, pueden comunicarse fácilmente entre sí. El directorio de servicios DNS de Kubernetes puede localizar fácilmente cualquier servicio por su nombre usando la forma expandida de las direcciones DNS:

..svc.cluster.local

El simple hecho de añadir el nombre del espacio de nombres al nombre del servicio proporciona acceso a los servicios en cualquier espacio de nombres del clúster. Por ejemplo, para acceder al servicio de nóminas que hay en el espacio de nombres de desarrollo, debería utilizar la dirección siguiente:
payroll.development
Para acceder al servicio de nóminas que hay en el espacio de nombres de producción, debería utilizar:
payroll.production

Tenga en cuenta que existe la opción de utilizar las políticas de red para controlar el acceso entre espacios de nombres. Por ejemplo, una política de red puede permitir o rechazar todo el tráfico de otros espacios de nombres. Las políticas de red solo se aplican a las conexiones; no sustituyen a los cortafuegos que inspeccionan los paquetes.

¿Cuáles son los comandos básicos de kubectl relacionados con los espacios de nombres?

¿Cuál es el comando para buscar los espacios de nombres actuales de Kubernetes?

Es posible mostrar todos los espacios de nombres del clúster con el comando siguiente:
kubectl get namespace
Devolverá una lista de todos los espacios de nombres del clúster, incluidos los predeterminados, junto con su estado y antigüedad.

¿Cuál es el comando para crear un nuevo espacio de nombres de Kubernetes?

Los espacios de nombres se crean simplemente con el comando siguiente:
kubectl create namespace
Al igual que con cualquier otro recurso de Kubernetes, también se puede elaborar y aplicar un archivo YAML para crear un espacio de nombres:

newspace.yaml:
kind: Namespace
apiVersion: v1
metadata:
name: newspace
labels:
name: newspacekubectl apply -f newspace.yaml

¿Cómo se cambia de un espacio de nombres de Kubernetes a otro?

Para referirse a los espacios de nombres una vez creados, las acciones deben incluir la opción –namespace= en el comando. Dado que esto puede resultar engorroso, el espacio de nombres predeterminado se puede cambiar mediante el comando kubectl config para establecer el espacio de nombres en el contexto del clúster.
Por ejemplo, para cambiar del espacio de nombres predeterminado a uno llamado «pruebas», debe escribir lo siguiente:
kubectl config set-context --current --namespace=pruebas
Este comando establecerá el espacio de nombres predeterminado en «pruebas» para todos los comandos kubectl futuros.

¿Cómo se cambia el nombre de un espacio de nombres de Kubernetes?

Cambiar el nombre de un espacio de nombres de Kubernetes no es una práctica estándar, por lo que debe elegir con cuidado los nombres de los espacios de nombres (aparte del predeterminado).

¿Cómo se elimina un espacio de nombres de Kubernetes?

Los espacios de nombres se eliminan con el comando siguiente:
kubectl delete namespaces
Dado que la eliminación es una actividad asíncrona, el espacio de nombres se mostrará como «terminating» hasta que se elimine.

Advertencia sobre la eliminación de espacios de nombres de Kubernetes

La eliminación de un espacio de nombres es una acción definitiva. Se eliminará todo lo que haya en el espacio de nombres, incluidos los servicios, los pods en ejecución y los elementos. Se aplicará el proceso garbage collection a cualquier elemento que haya existido en ese espacio de nombres. Antes de realizar esta acción, asegúrese de que se puede eliminar todo lo que hay en el espacio de nombres.

Productos y soluciones relacionados

Laboratorios: modernización de aplicaciones

Migre sus aplicaciones a la nube en cuestión de semanas.

Tanzu for Kubernetes Operations

Establezca la base para una infraestructura de contenedores multinube moderna.

Tanzu Application Platform

Obtenga una experiencia de desarrollo multinube superior en Kubernetes.