Sobes.tech
Middle

¿Qué es un contenedor init en Kubernetes?

sobes.tech AI

Respuesta de la IA

Un contenedor especial en un pod que finaliza su trabajo antes de que los contenedores principales del pod comiencen.

Su propósito:

  • Inicializar el entorno antes de ejecutar la aplicación principal.
  • Cargar configuraciones o scripts.
  • Esperar a que los servicios externos estén listos (bases de datos, API).
  • Configurar el sistema de archivos o permisos.

Características principales:

  • Se ejecutan en el orden especificado en la especificación del pod.
  • Cada init-container debe completarse con éxito antes de que el siguiente inicie o los contenedores principales comiencen a funcionar.
  • Si un init-container falla, Kubernetes reinicia el pod hasta que el init-container se complete con éxito (según la política de reinicio del pod).
  • Tienen acceso a un volumen compartido del pod, lo que permite transferir datos a los contenedores principales.

Especificación en YAML:

// Ejemplo de especificación de un pod con init-container
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  initContainers: // Lista de init-containers
  - name: init-myservice // Nombre del init-container
    image: my-init-image // Imagen del init-container
    command: ["sh", "-c", "echo 'Initializing...' && sleep 5"] // Comando a ejecutar
  containers: // Lista de contenedores principales
  - name: my-app // Nombre del contenedor principal
    image: my-app-image // Imagen del contenedor principal
    ports:
    - containerPort: 80