7.2.2. Init Container 생성
initContainers 구성이 포함된 Pod 사양을 생성하여 init 컨테이너를 생성합니다.
다음 예제에서는 두 개의 init 컨테이너가 있는 간단한 Pod를 간략하게 설명합니다. 첫 번째 init 컨티너는 myservice 서비스가 완료될 때까지 기다립니다. 그 후 두 번째는 mydb 서비스가 완료될 때까지 기다립니다. 두 init 컨테이너가 모두 완료되면 Pod가 시작됩니다.
프로세스
Init 컨테이너에 대한 포드를 생성합니다.
다음과 유사한 YAML 파일을 생성합니다.
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: myapp-container image: registry.access.redhat.com/ubi9/ubi:latest command: ['sh', '-c', 'echo The app is running! && sleep 3600'] securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL] initContainers: - name: init-myservice image: registry.access.redhat.com/ubi9/ubi:latest command: ['sh', '-c', 'until getent hosts myservice; do echo waiting for myservice; sleep 2; done;'] securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL] - name: init-mydb image: registry.access.redhat.com/ubi9/ubi:latest command: ['sh', '-c', 'until getent hosts mydb; do echo waiting for mydb; sleep 2; done;'] securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL]다음 명령을 사용하여 Pod를 생성합니다.
$ oc create -f myapp.yaml다음 명령을 사용하여 Pod의 상태를 확인합니다.
$ oc get pods출력 예
NAME READY STATUS RESTARTS AGE myapp-pod 0/1 Init:0/2 0 5s포드 상태
Init:0/2는 두 서비스를 기다리고 있음을 나타냅니다.
myservice서비스를 생성합니다.다음과 유사한 YAML 파일을 생성합니다.
kind: Service apiVersion: v1 metadata: name: myservice spec: ports: - protocol: TCP port: 80 targetPort: 9376다음 명령을 사용하여 Pod를 생성합니다.
$ oc create -f myservice.yaml다음 명령을 사용하여 Pod의 상태를 확인합니다.
$ oc get pods출력 예
NAME READY STATUS RESTARTS AGE myapp-pod 0/1 Init:1/2 0 5s포드 상태
Init:1/2는 하나의 서비스, 이 경우에는mydb서비스를 기다리고 있음을 나타냅니다.
mydb서비스를 생성합니다.다음과 유사한 YAML 파일을 생성합니다.
kind: Service apiVersion: v1 metadata: name: mydb spec: ports: - protocol: TCP port: 80 targetPort: 9377다음 명령을 사용하여 Pod를 생성합니다.
$ oc create -f mydb.yaml다음 명령을 사용하여 Pod의 상태를 확인합니다.
$ oc get pods출력 예
NAME READY STATUS RESTARTS AGE myapp-pod 1/1 Running 0 2mPod 상태(
실행 중)는 더 이상 서비스를 기다리지 않고 실행 중임을 나타냅니다.