Init Container란?
앱 컨테이너 실행 전에 미리 동작시킬 컨테이너이다.
본 Container가 실행되기 전에 사전 작업이 필요할 경우 사용한다.
초기화 컨테이너가 모두 실행된 후에 앱 컨테이너를 실행한다.
초기화 컨테이너는 여러 개를 구성할 수 있다. 초기화 컨테이너가 여러 개 있다면 파드 템플릿에 명시한 순서대로 초기화 컨테이너가 실행된다.
초기화 컨테이너 실행이 실패하면 성공할 때까지 재시작한다.
[실습]
다음의 yaml 파일은 두 개의 초기화 컨테이너를 포함한 간단한 파드에 대한 개요를 보여준다. 첫 번째는 myservice 를 기다리고 두 번째는 mydb 를 기다린다. 두 컨테이너들이 완료되면, 파드가 시작될 것이다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
- name: init-mydb
image: busybox:1.28
command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for m
apiVersion: v1
kind: Service
metadata:
name: myservice
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9376
apiVersion: v1
kind: Service
metadata:
name: mydb
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9377
초기화 컨테이너들이 완료되는 것과 myapp-pod 파드가 Running 상태로 변경되는 것을 볼 것이다.
https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/
초기화 컨테이너
이 페이지는 초기화 컨테이너에 대한 개요를 제공한다. 초기화 컨테이너는 파드의 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너이며, 앱 이미지에는 없는 유틸리티 또는 설정 스크
kubernetes.io
반응형
'Kubernetes' 카테고리의 다른 글
Pod Scheduling에 대해서 알아보자 - 1 [NodeSelector, affinity&antiaffinity] (0) | 2022.03.03 |
---|---|
mount.nfs: access denied by server while mounting (0) | 2022.03.02 |
5-2. livenessProbe를 이용해 Self-healing Pod 만들기 (0) | 2022.02.06 |
4. kubernetes architecture (0) | 2022.02.06 |
Deployment를 이용해 Container 실행하기 (0) | 2022.02.05 |