initコンテナ
- 環境ごとに変わるコマンドなどを実行させる
- ボリュームをマウントしてから出ないと実行できないコマンドなどを実行させる
- Pod起動後に必要なコマンドを実行させる
initコンテナのyamlファイル
- myserviceとmydbを2秒毎に待ち受けて、見つかれば処理終了
myapp.yaml
apiVersion : V1の
種類: ポッドの
メタデータ:
名前: myappの-ポッド
ラベル:
アプリ: myappという
スペック:
コンテナ:
- 名前: myappのコンテナの
画像: busyboxの:1.28
コマンド: [ ' SH' 、 ' -c' 、 " エコーアプリがありますランニング!&& sleep 3600 ' ]
initContainers :- 名前:
INIT-MYSERVICEの
画像: busyboxの:1.28
コマンド: [ ' SH' 、 ' -c' 、 " までnslookupを。MYSERVICE $(猫/var/run/secrets
/kubernetes.io/serviceaccount/namespace).svc.cluster.local。
やるエコー待ちのためMYSERVICEを、睡眠2; 行わ" ]
- 名前:INIT-mydbというイメージ:busyboxの:1.28 コマンド:[ ' SH' 、' -c' 、" まで
nslookupコマンド
mydb。$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
.svc.cluster.local; やるエコー待ちのためMYDBを。睡眠2; 「終了]
起動
kubectl apply -f myapp.yaml
確認
kubectl get -f myapp.yaml
serviceもdbもいないのでまだREADYになっていない
名前READYステータス再起動年齢
myapp-pod 0/1 Init:0/2 0 3分15秒
serviceを作成する
service.yaml
---
apiVersion : v1
種類: サービス
メタデータ:
名前: myservice
仕様:
ポート:
- プロトコル: TCP
ポート: 80
targetPort : 9376
---
apiVersion : v1
種類: サービス
メタデータ:
名前: mydb
仕様:
ポート:
- プロトコル: TCP
ポート: 80
targetPort : 9377
起動
kubectl apply -f service.yaml
確認
yuta:〜$ kubectl get -f myapp.yaml
名前READYステータス再起動年齢
myapp-pod 1/1ランニング0 6分15秒
ログ確認コマンド
kubectl describe -f myapp.yaml
kubectlログmyapp-pod -c init-myservice
参考
https://kubernetes.io/ja/docs/concepts/workloads/pods/init-containers/