Introducción
Kubernetes ofrece espacios de nombres (namespaces) como una forma de aislar las cargas de trabajo y los recursos en un clúster. En este laboratorio, aprenderá cómo utilizar los espacios de nombres para aislar las cargas de trabajo y los recursos. Creará un espacio de nombres, desplegará una aplicación web simple en el espacio de nombres y verificará que la aplicación web está aislada de los demás recursos en el clúster.
Iniciar el clúster de Minikube
Antes de crear recursos, necesitas un clúster de Kubernetes en ejecución. Minikube es un entorno ligero de Kubernetes que se ejecuta en tu máquina local.
Navegar a tu directorio de trabajo:
Abre la terminal y navega hasta la carpeta de proyecto predeterminada:
cd /home/labex/projectIniciar Minikube:
Inicia Minikube para inicializar un clúster de Kubernetes:
minikube start- Este comando configura un clúster de Kubernetes de un solo nodo en tu máquina local.
- Minikube puede tardar unos minutos en iniciarse dependiendo del rendimiento de tu sistema.
Verificar que Minikube está en ejecución:
Comprueba el estado del clúster de Minikube:
minikube status- Busca componentes como
kubeletyapiserverlistados comoRunning(En ejecución). - Si el clúster no está en ejecución, vuelve a ejecutar
minikube start.
- Busca componentes como
Si encuentras problemas al iniciar Minikube, utiliza minikube delete para restablecer el entorno si es necesario.
Crear un espacio de nombres (Namespace)
En este paso, crearás un espacio de nombres llamado webapp para aislar la aplicación web de los demás recursos en el clúster.
Crea un archivo llamado namespace.yaml con el siguiente contenido:
apiVersion: v1
kind: Namespace
metadata:
name: webapp
Aplica el espacio de nombres a tu clúster con el siguiente comando:
kubectl apply -f namespace.yaml
Verifica que el espacio de nombres se haya creado con el siguiente comando:
kubectl get namespaces
Debes ver el espacio de nombres webapp en la lista de espacios de nombres.
Desplegar una aplicación web
En este paso, desplegarás una aplicación web simple en el espacio de nombres (namespace) webapp.
Crea un archivo llamado web-app.yaml con el siguiente contenido:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
namespace: webapp
spec:
replicas: 1
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Este archivo crea un Despliegue (Deployment) con una réplica de un contenedor que ejecuta la última versión del servidor web Nginx.
Aplica el Despliegue a tu clúster con el siguiente comando:
kubectl apply -f web-app.yaml
Verifica que la aplicación web esté en ejecución en el espacio de nombres webapp con el siguiente comando:
kubectl get pods -n webapp
Debes ver el pod web-app en la lista de pods en ejecución en el espacio de nombres webapp.
Exponer la aplicación web
En este paso, expondrás la aplicación web al mundo exterior utilizando un Servicio (Service) de Kubernetes.
Crea un archivo llamado web-app-service.yaml con el siguiente contenido:
apiVersion: v1
kind: Service
metadata:
name: web-app
namespace: webapp
spec:
selector:
app: web-app
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
Este archivo crea un Servicio que expone la aplicación web al clúster utilizando una dirección IP de clúster (ClusterIP).
Aplica el Servicio a tu clúster con el siguiente comando:
kubectl apply -f web-app-service.yaml
Verifica que el Servicio esté en ejecución en el espacio de nombres (namespace) webapp con el siguiente comando:
kubectl get services -n webapp
Debes ver el servicio web-app en la lista de servicios en ejecución en el espacio de nombres webapp.
Verificar el aislamiento del espacio de nombres (Namespace)
En este paso, verificarás que la aplicación web está aislada de los demás recursos en el clúster.
Crea un archivo llamado other-app.yaml con el siguiente contenido:
apiVersion: apps/v1
kind: Deployment
metadata:
name: other
spec:
replicas: 1
selector:
matchLabels:
app: other
template:
metadata:
labels:
app: other
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
En este archivo, estás creando otro Despliegue (Deployment) llamado other en el espacio de nombres predeterminado (default namespace) que ejecuta un contenedor con la imagen nginx.
Aplica el Despliegue a tu clúster con el siguiente comando:
kubectl apply -f other-app.yaml
Verifica que el Despliegue esté en ejecución en el espacio de nombres predeterminado con el siguiente comando:
kubectl get pods | grep other
Debes ver el pod other en la lista de pods en ejecución en el espacio de nombres predeterminado.
Verificar el acceso entre espacios de nombres (Namespaces)
Primero, encuentre el nombre del pod que ejecuta su aplicación ejecutando el siguiente comando:
kubectl get pods -l app=other
Debería ver el pod other. Anote el nombre del pod.
A continuación, ejecute el siguiente comando para abrir una sesión de shell en el contenedor que ejecuta su aplicación:
kubectl exec -it pod-name -- /bin/sh
Reemplace con el nombre del pod que anotó anteriormente.
Una vez que esté en la sesión de shell, ejecute el siguiente comando para acceder al Deployment web-app:
curl web-app.webapp
Debería ver la respuesta HTML del servidor web Nginx.
Resumen
En este laboratorio, aprendiste cómo usar espacios de nombres (namespaces) para aislar cargas de trabajo y recursos en un clúster de Kubernetes. Creaste un espacio de nombres, desplegaste una aplicación web simple en ese espacio de nombres, expusiste la aplicación web al mundo exterior utilizando un Servicio (Service) de Kubernetes y verificaste que la aplicación web está aislada de los demás recursos en el clúster.


