본문 바로가기
개발/개발공부

Kubernetes Init Container / Pattern, 초기화 컨테이너, 이닛 컨테이너, 패턴

by 치킨개발자 2023. 1. 18.
728x90

Kubernetes Init Container


초기화 관련 작업을 위해 개별적인 Life cycle을 갖는 Container

Main application container과 분리된 개념

Main container가 실행되기 전 file system, seed data, 권한 설정들이 필요할 때 Init container를 통해 초기화 작업을 지원

Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  26s   default-scheduler  Successfully assigned ~~~
  Normal  Pulled     25s   kubelet            Container image ~~~
  Normal  Created    25s   kubelet            Created container init
  Normal  Started    24s   kubelet            Started container init
  Normal  Pulled     23s   kubelet            Container image ~~~
  Normal  Pulled     22s   kubelet            Container image ~~~
  Normal  Created    21s   kubelet            Created container main
  Normal  Started    21s   kubelet            Started container main

적용중인 pod를 describe 했을 때의 event

Init container에서 volume mounts, image pull 한 뒤 체크작업.. 등등을 진행

Main container는 병렬적으로 실행되지만, Init container는 순서에 맞춰서 실행

따라서 임의로 시간을 늦추지 않는 이상 작고 빠르고 성공적으로 완료되는 것을 목표로 해야함

Kubernetes Init container

아주 간단하게 그림으로 표현해봤는데, Init container(1) -> Init container(2) -> Application container(3, 병렬실행) 순서로 container가 실행된다고 보면 된다.

Init container가 실패하면 전체 Pod가 다시 시작되기 때문에 멱등성(여러번 실행해도 동일한 상태를 남기는 성질)을 보장해야함

Init container life cycle이 종료되면 application container가 실행되기 때문에 readiness check는 없음

로직 분리를 통해 application container는 application logic에만 집중 가능

 

반응형

댓글