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는 순서에 맞춰서 실행
따라서 임의로 시간을 늦추지 않는 이상 작고 빠르고 성공적으로 완료되는 것을 목표로 해야함
아주 간단하게 그림으로 표현해봤는데, 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에만 집중 가능
반응형
댓글