Pods con varios contenedores (sidecars)
Explore patrones para ejecutar varios contenedores ubicados conjuntamente en un solo Pod, como los contenedores sidecar.
Pods con varios contenedores (sidecars) es una lección gratuita de Kubernetes Basics en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kubernetes Basics, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kubernetes Basics incluye 4 lecciones en total.
Más allá de un solo contenedor
Hasta ahora, hemos considerado los Pods como elementos que ejecutan un solo contenedor. Pero ¿qué ocurre si su aplicación necesita un proceso auxiliar?
Kubernetes permite que un Pod ejecute varios contenedores. Estos contenedores siempre se encuentran en el mismo nodo y comparten recursos.
¿Por qué usar Pods con varios contenedores?
Ejecutar varios contenedores en un mismo Pod es ideal para aplicaciones estrechamente acopladas que necesitan compartir:
- El espacio de nombres de red (la misma dirección IP; pueden comunicarse mediante
localhost) - Volúmenes de almacenamiento
- El ciclo de vida (se inician, detienen y reinician juntos)
Esto permite gestionar los procesos relacionados como una única unidad.
Explicación del patrón sidecar
Un diseño habitual es el patrón sidecar. En este caso, un contenedor «sidecar» se ejecuta junto al contenedor de la aplicación principal.
Amplía o mejora la funcionalidad de la aplicación principal sin modificarla. ¡Piense en él como un compañero útil!
Casos de uso de sidecar
Los sidecar son increíblemente versátiles. Entre sus usos habituales se incluyen:
- Recopilación de registros: Un sidecar recopila los registros de la aplicación principal y los envía a un servicio centralizado de registros.
- Proxy: Un sidecar proporciona funciones de proxy de red, por ejemplo, para la seguridad (mTLS) o la gestión del tráfico.
- Sincronización de archivos: Un sidecar mantiene actualizado un volumen compartido con la configuración o los datos.
Pod con dos contenedores (YAML)
Veamos cómo se definen varios contenedores en el manifiesto YAML de un Pod. Cada contenedor es un elemento de la matriz containers.
Observe los contenedores nginx-proxy y main-app definidos en spec.containers.
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: nginx-proxy
image: nginx:latest
ports:
- containerPort: 80
- name: main-app
image: busybox:latest
command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]Almacenamiento compartido: emptyDir
Los contenedores del mismo Pod pueden compartir datos mediante volúmenes de Kubernetes. Una forma sencilla de hacerlo es mediante un volumen emptyDir.
Un volumen emptyDir se crea cuando se asigna un Pod a un nodo y existe mientras ese Pod se ejecuta en dicho nodo. Es un almacenamiento temporal.
Ejemplo: sidecar recopilador de registros
Imagine una aplicación principal que genera registros en un archivo. A continuación, un sidecar puede leer este archivo y enviarlo a un servicio de registros.
Esto desacopla la lógica de registro de la aplicación principal, que queda limpia y centrada en su función.
YAML del recopilador de registros (parte 1)
Este es el YAML de nuestro ejemplo de recopilador de registros. Definimos un volumen emptyDir llamado log-volume. Ambos contenedores montarán este volumen.
El contenedor main-app escribe un mensaje de registro en /var/log/app.log, dentro del volumen compartido.
apiVersion: v1
kind: Pod
metadata:
name: log-collector-pod
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: main-app
image: busybox:latest
command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
volumeMounts:
- name: log-volume
mountPath: /var/logYAML del recopilador de registros (parte 2)
Ahora, el contenedor log-sidecar monta el mismo log-volume. Después, utiliza tail -f para leer continuamente el archivo de registro escrito por la aplicación principal.
En un escenario real, este sidecar procesaría estos registros y los enviaría a un sistema de registro como Elasticsearch o Splunk.
apiVersion: v1
kind: Pod
metadata:
name: log-collector-pod # Same Pod as before
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: main-app
image: busybox:latest
command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
volumeMounts:
- name: log-volume
mountPath: /var/log
- name: log-sidecar
image: busybox:latest
command: ["sh", "-c", "tail -f /var/log/app.log"]
volumeMounts:
- name: log-volume
mountPath: /var/logComprobación rápida: ventajas de los sidecar
Los Pods con varios contenedores, especialmente cuando utilizan el patrón sidecar, ofrecen varias ventajas para gestionar aplicaciones complejas.
¿Cuáles de las siguientes son ventajas clave de utilizar un contenedor sidecar?
Resumen: Pods con varios contenedores
¡Buen trabajo! Ha aprendido sobre los Pods con varios contenedores y el potente patrón sidecar.
- Los Pods pueden alojar varios contenedores que comparten la red y el almacenamiento.
- El patrón sidecar ayuda a ampliar o mejorar la funcionalidad de la aplicación principal.
- Entre sus usos habituales se incluyen la recopilación de registros, los proxies y la sincronización de datos.
- Los volúmenes
emptyDirproporcionan almacenamiento temporal compartido dentro de un Pod.
¡Este patrón es fundamental para crear aplicaciones robustas y modulares en Kubernetes!
Preguntas frecuentes
¿La lección «Pods con varios contenedores (sidecars)» es gratis?
Sí — el texto completo de «Pods con varios contenedores (sidecars)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kubernetes Basics, actualiza a CoddyKit PRO. El curso de Kubernetes Basics incluye 4 lecciones en total.
¿Qué aprenderé en «Pods con varios contenedores (sidecars)»?
Explore patrones para ejecutar varios contenedores ubicados conjuntamente en un solo Pod, como los contenedores sidecar. Practicas Kubernetes Basics con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kubernetes Basics?
No se requiere experiencia previa. Kubernetes Basics en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Pods con varios contenedores (sidecars)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kubernetes Basics?
Sí. Cada lección de Kubernetes Basics incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Pods: la unidad más pequeña
- Ciclo de vida y estados de los Pods
- Pods con varios contenedores (sidecars)
- Contenedores init y orden de inicio