pod 内で実行するコンテナに準備が必要なことがあります。たとえば、サービスが利用可能になるのを待つ、実行時に何かを設定する、データベースのデータを初期化するといったことです。こういう場合に init コンテナ が役立ちます。留意点として、Kubernetes はすべての init コンテナを実行してから (それらが正常に終了してから)、メインのコンテナを実行します。

では deployment を作成しましょう。この中で init コンテナが /ic/this ファイルにメッセージを書き込み、メインの (実行状態を持続する) コンテナがこのファイルを読み込みます。

$ kubectl apply -f https://raw.githubusercontent.com/openshift-evangelists/kbe/master/specs/ic/deploy.yaml

メインのコンテナの出力を確認しましょう。

$ kubectl get deploy,po
NAME                              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/ic-deploy   1         1         1            1           11m

NAME                            READY   STATUS    RESTARTS   AGE
pod/ic-deploy-bf75cbf87-8zmrb   1/1     Running   0          59s

$ kubectl logs ic-deploy-bf75cbf87-8zmrb -f
INIT_DONE
INIT_DONE
INIT_DONE
INIT_DONE
INIT_DONE
^C

init コンテナとその関連トピックについてさらに学ぶには、ブログ記事 Kubernetes: A Pod’s Life を読んでください。

前へ | 次へ