본문 바로가기

IT Study/Kubernetes

kubernetes init container

kubernetes init container

초기화컨테이너(init container)는 APP컨테이너가 실행되기전에 파드를 초기화 해준다

초기화컨테이너는 여러개를 구성할 수 있다.

초기화컨테이너의 실행이 실패하면 성공할 때까지 재시작된다. 즉 필요한 명령,제어,조건들을 순서대로 실행하는데 사용

초기화컨테이너가 성공해야 APP컨테이너 실행된다.

초기화컨테이너는 파드가 모두 준비되기전에 실행한 후 종료되는 컨테이너이기 때문에 Probe기능을 지원하지 않는다.

초기화컨테이너는 파드가 재시작 되었다면 반드시 다시 실행된다.

 

APP컨테이너 즉 Main container를 실행하는데 있어 init container 기능을 활용하여

메인컨테이너가 요구하는 환경,조건이 제데로 구성되어있는지 점검하고 완료되면 메인컨테이너를 실행

 

 

 

 

●init container 예시 및 test


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;']

1.until nslookup myservice 가 실행되면 종료 , 실행되지 않으면 반복

2.until nslookup mydb가 실행되면 종료 , 실행되지않으면 반복

-> 즉 1번 조건이 성공하면 순서대로 2번 조건이 실행된다  1,2번조건이 모두성공하면 Main container가 실행된다.

 

해당 내용을 kubectl명령어로 체크하면 다음과 같이 확인할 수 있다.

STATUS Init:0/2 = 1개의 POD안에  init container의 조건이 두개 존재

test init container 가 완료 될 수 있도록 초기화컨테이너에서 요구하는

myservice 와 mydb service를 yaml로 작성하여 시작

 

 

'IT Study > Kubernetes' 카테고리의 다른 글

kubernetes static pod & kubelet  (0) 2023.01.12
kubernetes infra container pause  (0) 2023.01.12
kubernetes Probe? self-healing  (0) 2023.01.11
kubernetes pod  (0) 2023.01.07
kubernetes yaml  (0) 2023.01.06