•
Kubernetes에서 Pod를 생성할 때 가장 먼저 생성되는 컨테이너입니다.
•
이 컨테이너는 실제로는 거의 아무 작업도 하지 않으며, 그저 "pause" 상태로 대기합니다.
•
pause라는 이름은 이 컨테이너가 아주 가벼운 컨테이너로, 단순히 잠시 멈춰 있는 상태를 의미합니다.
•
Pause container는 Kubernetes에서 각 Pod 내에서 생성되고 관리되는 특별한 내부 컨테이너입니다. 주요 목적은 같은 Pod 내의 모든 다른 컨테이너들을 위한 네트워크 네임스페이스와 IPC(Inter-Process Communication) 네임스페이스의 플레이스홀더 역할을 하는 것입니다.
동작방식
1.
Pod 생성 시
•
Kubernetes가 Pod를 생성할 때, 가장 먼저 Pause Container가 생성됩니다.
2.
네트워크 네임스페이스 생성
•
이 Pause Container는 네트워크 네임스페이스를 설정하고, 다른 모든 애플리케이션 컨테이너가 이 네트워크 네임스페이스를 공유하게 됩니다.
3.
애플리케이션 컨테이너 실행
•
이후, Pod 내에서 실행되는 다른 모든 애플리케이션 컨테이너들은 이 Pause Container의 네트워크 네임스페이스를 사용하게 되어 동일한 IP와 네트워크 환경을 공유하게 됩니다.
4.
Pause 바이너리 실행
•
Pause 컨테이너는 "Pause"라는 바이너리를 실행합니다. 이 프로그램은 pause()라는 시스템 호출을 사용합니다
1.
Binary : 실행 가능한 형식의 데이터 파일 ( ex. EXE , ELF )
2.
Signal : 비동기적인 이벤트를 발생시키는 소프트웨어 인터럽트로 특정 프로세스의 동작을 멈추거나, 다른 동작을 하게 하는 신호이다.
5.
대기 상태
•
pause() 시스템 호출은 프로그램이 특정 신호(Signal)를 받을 때까지 아무 작업도 하지 않고 대기 상태에 있게 만듭니다.
사용하는 이유
1. Network 네임스페이스 공유
•
Pause 컨테이너는 Pod 내의 모든 컨테이너가 동일한 네트워크 네임스페이스를 공유하도록 합니다.
•
Pod 내의 모든 컨테이너가 동일한 IP 주소를 사용하고, 서로 간에 네트워크 통신을 쉽게 할 수 있습니다.
2. IPC 네임스페이스 공유
•
IPC 네임스페이스를 공유함으로써, Pod 내의 컨테이너들이 세마포어, 메시지 큐, 공유 메모리 등을 통해 서로 통신할 수 있습니다.
3. UTS (Unix Time-sharing System) 네임스페이스 공유
•
Pause 컨테이너의 UTS 네임스페이스를 Pod 내의 다른 컨테이너들과 공유함으로써 모든 컨테이너가 동일한 호스트 이름을 가지게 됩니다.
Kubernetes Pod는 여러 컨테이너가 하나의 네트워크와 스토리지를 공유하는 개념인데, 이때 각 컨테이너들이 공유할 네임스페이스를 누군가가 "소유"하고 있어야 합니다. Pause container가 바로 이 역할을 담당하여, 다른 컨테이너들이 재시작되어도 네트워크 설정 등이 유지되도록 해줍니다.
즉, Pause Container는 Kubernetes의 Pod 아키텍처를 구현하기 위한 핵심 인프라 컨테이너입니다.