6.2.2. Init Container 생성
다음 예제에서는 Init Container 두 개가 있는 간단한 Pod를 간략하게 설명합니다. 첫 번째 컨테이너는 myservice
를 기다리고 두 번째 컨테이너는 mydb
를 기다립니다. 두 컨테이너가 모두 완료되면 Pod가 시작됩니다.
프로세스
Init Container에 대한 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: 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