[ k8s ] init container / infra container
쿠버네티스 Pod는 하나 이상의 컨테이너를 포함할 수 있습니다. Pod를 구성하는 Container가 실행되기 전에 사전 작업이 필요한 경우, 해당 Container들이 정상동작하기 위해 미리 필요한 작업을 수행하는 Container가 있는데
이를 Init Container라고 부릅니다. Init Container가 성공적으로 수행되어야 Pod를 구성하는 컨테이너들의 동작, 즉 Pod가 목적으로 하는 작업을 수행할 수 있습니다.
- 앱 컨테이너 실행 전에 미리 동작시킬 컨테이너
- 본 컨테이너가 실행되기 전에 사전 작업이 필요할 경우 사용
- 초기화 컨테이너가 모두 실행된 후에 앱 컨테이너를 실행
https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/
Pod는 Container로 구성되어 있으며, Pod가 생성될 때 기본적으로 infra container(pause)가 생성됩니다.
해당 Container의 역할은 Pod에 대한 Infra(IP, hostname)을 생성하고 관리하는 Container입니다.
https://www.devopsschool.com/blog/what-is-pause-container-in-kubernetes/
주로 Pod 내의 다른 컨테이너들 간의 네트워크 통신 및 파일 시스템 공유를 관리하는 데 사용되는 특별한 종류의 컨테이너입니다. 이는 Kubernetes에서 Pod 내에서 여러 컨테이너가 함께 실행되는 경우의 일부 동작을 지원하기 위한 메커니즘입니다. Pause 컨테이너의 역할에 대해 정리해보면 다음과 같습니다.
- 네트워크 네임스페이스 공유: Pause Container는 Pod 내의 모든 다른 컨테이너들이 동일한 네트워크 네임스페이스를 공유할 수 있도록 하는 역할을 합니다. 이를 통해 같은 Pod에 속한 다른 컨테이너들이 동일한 네트워크 인터페이스 및 IP 주소를 사용할 수 있습니다.
- IPC (Inter-Process Communication) 공유: Pause Container는 다른 컨테이너 간의 프로세스 간 통신을 위해 IPC 네임스페이스를 공유하는 데 사용됩니다. 이를 통해 같은 Pod 내의 다른 컨테이너들이 서로 통신할 수 있습니다.
- Volume 마운트 공유: Pause Container는 Pod 내의 다른 컨테이너들이 공유하는 Volume을 마운트하는 역할을 합니다. 이를 통해 Pod 내의 컨테이너들이 동일한 파일 시스템을 사용할 수 있습니다.
Pause Container는 주로 Kubernetes 시스템이나 다른 관리 목적으로 사용되며, 사용자가 직접 작성하는 애플리케이션 컨테이너가 아닙니다. Pause Container는 일반적으로 "pause"라는 이름의 이미지를 사용하며, 이는 간단한 기능만을 수행하는 작은 컨테이너입니다. 이러한 Pause Container의 개념은 Kubernetes가 여러 컨테이너로 구성된 Pod를 관리하면서 발생하는 몇 가지 동작을 추상화하고 단순화하는 데 도움이 됩니다.