6.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: registry.access.redhat.com/ubi8/ubi:latest command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: registry.access.redhat.com/ubi8/ubi:latest command: ['sh', '-c', 'until getent hosts myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: registry.access.redhat.com/ubi8/ubi:latest command: ['sh', '-c', 'until getent hosts 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: 9376mydbサービス用の 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 createdPod のステータスを表示します。
$ oc get pods出力例
NAME READY STATUS RESTARTS AGE myapp-pod 0/1 Init:0/2 0 5sPod のステータスが、待機状態であることを示していることを確認します。
以下のコマンドを実行してサービスを作成します。
$ oc create -f mydb.yaml$ oc create -f myservice.yamlPod のステータスを表示します。
$ oc get pods出力例
NAME READY STATUS RESTARTS AGE myapp-pod 1/1 Running 0 2m