T-초기화 컨테이너는 재시작되는가

개요

파드 내 컨테이너의 재시작 정책은 기본적으로 Always이다.
Pasted image 20240810204636.png
그리고 이것은 사이드카 컨테이너를 제외한 모든 컨테이너에 적용된다고 한다.
이건 파드 라이프사이클 문서의 내용이다.
사이드카'만' 예외인 것처럼 느껴지게 서술을 해놨는데, 초기에만 사용되면서 실패 시 파드의 초기 상태를 결정짓는 초기화 컨테이너는 어떨까?
Pasted image 20240810204550.png
init 컨테이너 문서의 디테일 부분에서는 말이 조금 다르다.
재시작 정책이 Always라면 init 컨테이너의 재시작 정책은 OnFailure라고 한다.
Pasted image 20240810203833.png
init 컨테이너 문서에서는 완료 기록이 존재할 때는 재시작하지 않는다고 한다.

그래도 간단하게 확인하는 작업은 필요할 것으로 생각된다.
엄밀하게 문서가 모순되는 것은 아니지만, 설명이 모호하다면 직접 확인해보는 것이 최선이다.

init 컨테이너의 실패

이건 그냥 해봤다.

세팅

Pasted image 20240810210028.png
첫 번째는 초기 컨테이너가 실패인데 재시작도 never라면 파드의 상태.

결과

Pasted image 20240810210110.png
당연히 failed이다.

파드가 running 일 때 정상 작동한 init 컨테이너는?

세팅

Pasted image 20240810210442.png
이게 사실 보고 싶었다.
상식적으로도 init 컨테이너는 절대 재시작되어서는 안 된다.

결과

Pasted image 20240810210559.png
음. 확실히 문제 없이 종료되었다.
Pasted image 20240810210620.png
이벤트 상으로도 문제는 없다.

추가적인 생각

어차피 파드가 완료되어서 재시작된다면, 그때 init 컨테이너 역시 재시작한다고 나온다.
그런데 도대체 파드가 재시작하는 경우가 언제 있는가?
명확하게 보자면 파드가 재시작하는 경우는 존재하지 않는 것 같다.
파드는 기본적으로 불편 객체이며, 따라서 업데이트가 되면 새로운 파드가 자리를 대체하는 식으로 동작한다.
결국 엄밀하게 말해서 init 컨테이너가 재시작하는 일은 발생하지 않는다.
단 하나, 초기화 컨테이너가 실패한 경우에만 재시작할 것이다.

파드의 정보가 가비지 컬렉션되는 경우는 무엇이란 말인가?
리소스 문제 등의 이유로 발생하는 케이스가 아니라면 웬만해서 발생하지 않을 것으로 보인다.

결론

init 컨테이너는 기본적으로 OnFailure지만, 재시작 정책이 Never로 명시된 경우에만 Never가 적용된다.
파드의 라이프사이클 문서에서는 제대로 명시하지 않으니 유의할 필요가 있다.

쿠버네티스 문서는 사실 그다지 믿고 읽을 정도로 정합적이지 않다.
에휴..

참고