[Nativo de la nube] La función y el uso del contenedor de inicio de kubernetes en Pod

Tabla de contenido

El contenedor init en el Pod

Características del contenedor 1 init

2 Usando el contenedor init


El contenedor init en el Pod

Los contenedores de inicio son contenedores especiales que se ejecutan antes de que se inicien los contenedores de aplicaciones dentro de un pod. El contenedor de inicio puede incluir algunas utilidades y scripts de instalación que no están presentes en la imagen de la aplicación.

Características del contenedor 1 init

El contenedor init es muy parecido a un contenedor normal, excepto por lo siguiente:

  • Siempre corren hasta el final. Si el contenedor Init del pod falla, el kubelet seguirá reiniciando el contenedor Init hasta que tenga éxito. Sin embargo, si un Pod tiene restartPolicyun valor de "Nunca" y el contenedor de inicio del Pod falla, Kubernetes configurará el estado de todo el Pod como Fallido.

  • Cada uno debe completarse correctamente antes de que se pueda iniciar el siguiente.

  • Además, los contenedores Init no son compatibles con lifecycle, y , porque deben ejecutarse hasta el final antes de que el Pod esté listo livenessProbe.readinessProbestartupProbe

  • Si se especifican varios contenedores Init para un Pod, se ejecutarán secuencialmente uno por uno. Cada contenedor Init debe ejecutarse correctamente antes de que pueda ejecutarse el siguiente. Cuando todos los contenedores Init hayan terminado de ejecutarse, Kubernetes inicializará el contenedor de la aplicación para el Pod y se ejecutará como de costumbre.

  • Los contenedores de inicio admiten todos los campos y funciones de los contenedores de aplicaciones, incluidos los límites de recursos, los volúmenes de datos y la configuración de seguridad. Sin embargo, los contenedores Init manejan las solicitudes de recursos y los límites de forma ligeramente diferente.

2 Usando el contenedor init

Dirección del sitio web oficial: Contenedor de inicio | Kubernetes

El contenedor Init se especifica en la especificación del Pod containersen paralelo a la matriz que describe el contenedor de la aplicación.

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', 'echo init-myservice is running! && sleep 5']
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', 'echo init-mydb is running! && sleep 10']
  • Ver detalles de inicio

$ kubectl describe pod init-demo
​
# 部分结果
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  2m16s  default-scheduler  Successfully assigned default/init-demo to k8s-node2
  Normal  Pulling    2m16s  kubelet            Pulling image "busybox:1.28"
  Normal  Pulled     118s   kubelet            Successfully pulled image "busybox:1.28" in 17.370617268s (17.370620685s including waiting)
  Normal  Created    118s   kubelet            Created container init-myservice
  Normal  Started    118s   kubelet            Started container init-myservice
  Normal  Pulled     112s   kubelet            Container image "busybox:1.28" already present on machine
  Normal  Created    112s   kubelet            Created container init-mydb
  Normal  Started    112s   kubelet            Started container init-mydb
  Normal  Pulled     101s   kubelet            Container image "busybox:1.28" already present on machine
  Normal  Created    101s   kubelet            Created container myapp-container
  Normal  Started    101s   kubelet            Started container myapp-container

Supongo que te gusta

Origin blog.csdn.net/weixin_53678904/article/details/132156422
Recomendado
Clasificación