Kubernetes Pod의 라이프사이클(Pending, Running, Succeeded, Failed, Unknown)을 단계별로 설명하고, 각 단계에서 Pod가 어떤 상태에 있으며 어떤 이벤트가 발생하는지 구체적으로 설명해 주세요.
힌트 · Pod가 스케줄링되고, 컨테이너가 시작/종료되며, 최종 상태에 도달하기까지의 과정을 단계별로 설명해야 합니다.
모범답안
네, Kubernetes Pod의 라이프사이클에 대해 설명드리겠습니다.
Pod는 크게 Pending, Running, Succeeded, Failed, Unknown의 5가지 상태를 가집니다.
Pending: Pod가 생성되었지만 아직 노드에 스케줄링되지 않았거나, 필요한 이미지를 다운로드하는 중인 상태입니다. 이 단계에서는 kube-scheduler가 적절한 노드를 찾고, 컨테이너 이미지를 가져오는 데 시간이 소요될 수 있습니다.
Running: Pod가 노드에 스케줄링되었고, 모든 컨테이너가 정상적으로 실행 중인 상태입니다. 이 단계에서는 liveness probe와 readiness probe가 동작하며, Pod의 상태를 지속적으로 확인합니다.
Succeeded: Pod 내의 모든 컨테이너가 성공적으로 종료되었고, 더 이상 재시작할 필요가 없는 상태입니다. 주로 배치 작업에 사용됩니다.
Failed: Pod 내의 컨테이너 중 하나 이상이 실패로 종료되었고, 재시작 정책에 따라 재시작되지 않는 상태입니다.
Unknown: Pod의 상태를 확인할 수 없는 상태입니다. 주로 노드와의 통신 문제로 발생합니다.
각 단계에서 발생하는 이벤트들을 모니터링하여 Pod의 상태 변화를 추적하고 문제 해결에 활용할 수 있습니다. 예를 들어, kubectl describe pod <pod-name> 명령어를 통해 Pod의 이벤트 로그를 확인할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Docker / Kubernetes 면접 질문
- Docker 컨테이너의 다양한 네트워크 모드(bridge, host, none, overlay 등)에 대해 설명하고, 각각의 모드가 어떤 상황에 적합하며 어떤 제약사항을 가지는지 비교하여 설명해 주세요.
- Docker에서 데이터를 영속적으로 저장하기 위해 사용되는 Volume과 Bind Mount의 차이점을 설명하고, 각각 어떤 시나리오에서 더 적합한지 구체적인 사용 사례를 들어 비교해 주세요.
- 단일 호스트에서 여러 Docker 컨테이너로 구성된 애플리케이션을 관리할 때 Docker Compose를 사용합니다. Docker Compose 파일(`docker-compose.yml`)에서 `depends_on`, `networks`, `volumes`와 같은 고급 옵션을 사용하여 서비스 간 의존성 관리 및 네트워크 구성을 어떻게 할 수 있는지 설명해 주세요.
- Kubernetes에서 Deployment와 ReplicaSet은 Pod를 관리하는 데 사용됩니다. 이 둘의 관계를 설명하고, Deployment가 ReplicaSet 위에 추상화된 계층으로서 어떤 이점을 제공하는지 구체적인 사용 사례(예: 롤링 업데이트, 롤백)를 들어 설명해 주세요.
- Kubernetes Service의 주요 타입(ClusterIP, NodePort, LoadBalancer)을 설명하고, 각각의 타입이 어떤 방식으로 외부 트래픽을 Pod로 라우팅하며, 어떤 상황에 적합한지 비교하여 설명해 주세요.
- Kubernetes 환경에서 애플리케이션의 복잡한 배포, 관리, 운영 라이프사이클을 자동화하기 위해 Custom Resource Definition(CRD)과 Controller를 활용하는 Operator 패턴을 설계하고 구현해야 한다면, 어떤 핵심 구성 요소를 고려하고 어떤 방식으로 애플리케이션의 상태 관리 및 자동 복구를 구현할 것인지 설명해 주십시오.