【クラウドネイティブ】Podにおけるkubernetes initコンテナの役割と使い方

目次

ポッド内の初期コンテナ

1 初期コンテナの機能

2 初期化コンテナの使用


ポッド内の初期コンテナ

Init コンテナは、Pod 内のアプリケーション コンテナが起動する前に実行される特別なコンテナです。init コンテナには、アプリケーション イメージには存在しないいくつかのユーティリティとインストール スクリプトを含めることができます。

1 初期コンテナの機能

init コンテナは、次の点を除いて通常のコンテナと非常によく似ています。

  • 常に完了まで実行されます。ポッドの Init コンテナが失敗した場合、kubelet は成功するまで Init コンテナを再起動し続けます。ただし、ポッドのrestartPolicy値が「Never」で、ポッドの Init コンテナが失敗した場合、Kubernetes はポッド全体のステータスを失敗に設定します。

  • 次の処理を開始するには、それぞれが正常に完了する必要があります。

  • また、Init コンテナは、ポッドの準備ができる前に完了するまで実行する必要があるため、lifecyclelivenessProbereadinessProbeおよびをサポートしません。startupProbe

  • Pod に複数の Init コンテナが指定されている場合、それらは 1 つずつ順番に実行されます。次の Init コンテナが実行される前に、各 Init コンテナが正常に実行される必要があります。すべての Init コンテナの実行が完了すると、Kubernetes はポッドのアプリケーション コンテナを初期化し、通常どおり実行します。

  • Init コンテナは、リソース制限、データ ボリューム、セキュリティ設定など、アプリケーション コンテナのすべてのフィールドと機能をサポートします。ただし、Init コンテナはリソースのリクエストと制限を少し異なる方法で処理します。

2 初期化コンテナの使用

公式 Web サイトのアドレス: Init コンテナー | Kubernetes

containersInit コンテナは、アプリケーション コンテナを記述する配列と並行してPod 仕様で指定されます。

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']
  • スタートアップの詳細を表示する

$ 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

おすすめ

転載: blog.csdn.net/weixin_53678904/article/details/132156422