5.2.2. Init コンテナーの作成
以下の例は、2 つの init コンテナーを持つ単純な Pod の概要を示しています。1 つ目は myservice
を待機し、2 つ目は mydb
を待機します。両方のコンテナーが完了すると、Pod が開始されます。
手順
init コンテナーの YAML ファイルを作成します。
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: busybox command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
myservice
サービス用の YAML ファイルを作成します。kind: Service apiVersion: v1 metadata: name: myservice spec: ports: - protocol: TCP port: 80 targetPort: 9376
mydb
サービス用の YAML ファイルを作成します。kind: Service apiVersion: v1 metadata: name: mydb spec: ports: - protocol: TCP port: 80 targetPort: 9377
以下のコマンドを実行して
myapp-pod
を作成します。$ oc create -f myapp.yaml
出力例
pod/myapp-pod created
Pod のステータスを表示します。
$ oc get pods
出力例
NAME READY STATUS RESTARTS AGE myapp-pod 0/1 Init:0/2 0 5s
Pod のステータスが、待機状態であることを示していることを確認します。
以下のコマンドを実行してサービスを作成します。
$ oc create -f mydb.yaml
$ oc create -f myservice.yaml
Pod のステータスを表示します。
$ oc get pods
出力例
NAME READY STATUS RESTARTS AGE myapp-pod 1/1 Running 0 2m