Kubernetes: Trabajando con un Pod multicontenedor
Introducción
Vamos a profundizar en los Pods multicontenedor. Como indicamos en el contenido del módulo, un Pod puede estar formado por varios contenedores y por volúmenes (para permitir que los contenedores del Pod puedan compartir almacenamiento).
La razón principal por la que los Pods pueden tener múltiples contenedores es para admitir aplicaciones auxiliares que ayudan a una aplicación primaria. Ejemplos típicos de estas aplicaciones pueden ser las que envían o recogen datos externos (por ejemplo de un repositorio) y los servidores proxy. El ayudante y las aplicaciones primarias a menudo necesitan comunicarse entre sí. Normalmente, esto se realiza a través de un sistema de archivos compartido o mediante la interfaz loopback (localhost).
Creando un Pod multicontenedor
- Creamos un fichero yaml con la descripción del Pod multicontenedor. En este caso, vamos a crear un Pod con dos contenedores: uno con la imagen
nginxy otro con la imagenbusybox.
vi pod-multicontenedor.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-multicontenedor
spec:
volumes:
- name: html
emptyDir: {}
containers:
- name: contenedor1
image: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
- name: contenedor2
image: debian
volumeMounts:
- name: html
mountPath: /html
command: ["/bin/sh", "-c"]
args:
- while true; do
date >> /html/index.html;
sleep 1;
done
- Vamos a crear un pod.
kubectl create -f pod-multicontenedor.yaml
- Mostramos la información del pod, y podemos ver que tiene dos contenedores.
kubectl get pod pod-multicontenedor -o wide
- Mostramos el contenido de
index.htmldel primer contenedor:
kubectl exec pod-multicontenedor -c contenedor1 -- /bin/cat /usr/share/nginx/html/index.html
- Mostramos el contenido de
index.htmldel segundo contenedor:
kubectl exec pod-multicontenedor -c contenedor2 -- /bin/cat /html/index.html
- Ejecutamos un “port forward” para acceder al Pod en el puerto 8081 de localhost, sabiendo que el servicio usa el puerto 80.
kubectl port-forward pod-multicontenedor 8081:80
- Accede desde un navegador para ver el resultado. Refresca la página para observar cómo va cambiando el fichero index.html.