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

  1. 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 nginx y otro con la imagen busybox.
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
  1. Vamos a crear un pod.
kubectl create -f pod-multicontenedor.yaml
  1. Mostramos la información del pod, y podemos ver que tiene dos contenedores.
kubectl get pod pod-multicontenedor -o wide

  1. Mostramos el contenido de index.html del primer contenedor:
kubectl exec pod-multicontenedor -c contenedor1 -- /bin/cat /usr/share/nginx/html/index.html

  1. Mostramos el contenido de index.html del segundo contenedor:
kubectl exec pod-multicontenedor -c contenedor2 -- /bin/cat /html/index.html

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

  1. Accede desde un navegador para ver el resultado. Refresca la página para observar cómo va cambiando el fichero index.html.