0Pricing
DevOps Bootcamp · Lección

Contenedores init y orden de inicio

Aprenda cómo los contenedores init ejecutan tareas de preparación antes de que se inicien los contenedores principales y cómo imponen el orden dentro de un Pod.

Contenedores init y orden de inicio es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 4 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 DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué son los contenedores de inicialización?

Un contenedor de inicialización es un contenedor especial que se ejecuta hasta completarse antes de que se inicien los contenedores principales de la aplicación en un Pod. Los Pods pueden tener uno o varios.

Son ideales para tareas de configuración que se realizan una sola vez: esperar a una dependencia, clonar la configuración o ejecutar una migración de base de datos.

En qué se diferencian de los contenedores de aplicación

Los contenedores de inicialización siempre se ejecutan hasta completarse y deben finalizar correctamente antes de que se inicie el siguiente. En cambio, los contenedores de aplicación se ejecutan de forma continua.

  • Los contenedores de inicialización se ejecutan secuencialmente, de uno en uno
  • Los contenedores de aplicación se ejecutan en paralelo
  • Si falla un contenedor de inicialización, el Pod lo reinicia (según restartPolicy)

Una especificación básica de un contenedor de inicialización

Los contenedores de inicialización se encuentran en spec.initContainers, al mismo nivel que spec.containers.

apiVersion: v1
kind: Pod
metadata:
  name: app-with-init
spec:
  initContainers:
  - name: wait-for-db
    image: busybox:1.36
    command: ['sh', '-c', 'echo waiting; sleep 5']
  containers:
  - name: app
    image: nginx:1.27

Por qué es importante el orden

Kubernetes garantiza el orden: todos los contenedores de inicialización deben finalizar correctamente antes de que los contenedores principales siquiera comiencen.

Esto permite expresar las dependencias de forma declarativa, en lugar de incorporar bucles de reintento a la imagen de la aplicación.

Esperar a un Service

Un patrón habitual consiste en bloquear el inicio hasta que un Service del que se depende responda.

initContainers:
- name: wait-for-api
  image: busybox:1.36
  command:
  - sh
  - -c
  - 'until nslookup api-service; do echo waiting; sleep 2; done'

Varios contenedores de inicialización

Puede encadenar varios contenedores de inicialización. Se ejecutan en el orden en que aparecen y cada uno debe completarse por completo antes de que comience el siguiente.

initContainers:
- name: step-1-fetch-config
  image: busybox:1.36
  command: ['sh', '-c', 'echo fetching config']
- name: step-2-migrate
  image: busybox:1.36
  command: ['sh', '-c', 'echo running migration']

Compartir datos con emptyDir

Los contenedores de inicialización suelen preparar archivos para el contenedor de aplicación mediante un volumen compartido emptyDir.

volumes:
- name: shared
  emptyDir: {}
initContainers:
- name: setup
  image: busybox:1.36
  command: ['sh', '-c', 'echo hello > /work/index.html']
  volumeMounts:
  - name: shared
    mountPath: /work

Inspeccionar el estado de inicialización

Mientras se ejecutan los contenedores de inicialización, el Pod muestra un estado como Init:0/2. Use kubectl para seguir el progreso.

kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-init

Reglas de uso de recursos

Como los contenedores de inicialización se ejecutan secuencialmente, Kubernetes utiliza la solicitud o el límite de recursos más alto entre ellos (no la suma) al programarlos, y después lo compara con las necesidades de los contenedores de aplicación.

Casos de uso habituales

  • Esperar a que una base de datos o una API externa estén disponibles
  • Ejecutar migraciones de esquema antes de iniciar la aplicación
  • Generar o descargar archivos de configuración
  • Establecer permisos de archivo en un volumen montado
  • Registrar el Pod en un registro de servicios

Comportamiento ante fallos

Si falla un contenedor de inicialización y la restartPolicy del Pod es Always o OnFailure, Kubernetes seguirá reintentándolo hasta que se complete correctamente. Los contenedores principales no se iniciarán hasta entonces.

Comprobación rápida

Compruebe su comprensión del orden de los contenedores de inicialización.

Resumen

Ha aprendido que los contenedores de inicialización se ejecutan secuencialmente hasta completarse, antes de que se inicien los contenedores de aplicación. Imponen el orden de inicio, preparan datos compartidos mediante volúmenes y gestionan configuraciones que se realizan una sola vez, como migraciones o comprobaciones de dependencias.

A continuación, puede combinar contenedores de inicialización con sidecars para crear patrones de inicio de Pods más completos.

Preguntas frecuentes

¿La lección «Contenedores init y orden de inicio» es gratis?

Sí — el texto completo de «Contenedores init y orden de inicio» 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 DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «Contenedores init y orden de inicio»?

Aprenda cómo los contenedores init ejecutan tareas de preparación antes de que se inicien los contenedores principales y cómo imponen el orden dentro de un Pod. Practicas DevOps Bootcamp 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 DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp 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 4 de 4.

¿Cuánto tiempo toma la lección «Contenedores init y orden de inicio»?

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 DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp 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

  1. Pods: la unidad más pequeña
  2. Ciclo de vida y estados de los Pods
  3. Pods con varios contenedores (sidecars)
  4. Contenedores init y orden de inicio
← Volver a DevOps Bootcamp