[Cloud native] Le rôle et l'utilisation du conteneur d'initialisation kubernetes dans le pod

Table des matières

Le conteneur init dans le pod

1 fonctionnalités du conteneur init

2 Utilisation du conteneur init


Le conteneur init dans le pod

Les conteneurs d'initialisation sont des conteneurs spéciaux qui s'exécutent avant le démarrage des conteneurs d'application dans un pod. Le conteneur init peut inclure des utilitaires et des scripts d'installation qui ne sont pas présents dans l'image de l'application.

1 fonctionnalités du conteneur init

Le conteneur init ressemble beaucoup à un conteneur normal, à l'exception de ce qui suit :

  • Ils vont toujours jusqu'au bout. Si le conteneur Init du Pod échoue, le kubelet continuera à redémarrer le conteneur Init jusqu'à ce qu'il réussisse. Cependant, si un pod a restartPolicyla valeur "Jamais" et que le conteneur d'initialisation du pod échoue, Kubernetes définira l'état de l'ensemble du pod sur Échec.

  • Chacun doit se terminer avec succès avant que le suivant puisse être lancé.

  • De plus, les conteneurs Init ne prennent pas en charge lifecycle, et , car ils doivent s'exécuter jusqu'à la fin avant que le pod ne soit livenessProbeprêt .readinessProbestartupProbe

  • Si plusieurs conteneurs Init sont spécifiés pour un pod, ils seront exécutés séquentiellement un par un. Chaque conteneur Init doit s'exécuter avec succès avant que le suivant puisse s'exécuter. Lorsque tous les conteneurs Init ont fini de s'exécuter, Kubernetes initialise le conteneur d'application pour le pod et s'exécute comme d'habitude.

  • Les conteneurs d'initialisation prennent en charge tous les champs et fonctionnalités des conteneurs d'application, y compris les limites de ressources, les volumes de données et les paramètres de sécurité. Cependant, les conteneurs Init gèrent les demandes de ressources et les limites légèrement différemment.

2 Utilisation du conteneur init

Adresse du site Web officiel : Init container | Kubernetes

Le conteneur Init est spécifié dans la spécification Pod containersparallèlement au tableau décrivant le conteneur d'application.

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']
  • Afficher les détails de démarrage

$ 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

Je suppose que tu aimes

Origine blog.csdn.net/weixin_53678904/article/details/132156422
conseillé
Classement