인프라 & 클라우드 · 중급
Kubernetes에서 Deployment와 ReplicaSet은 Pod를 관리하는 데 사용됩니다. 이 둘의 관계를 설명하고, Deployment가 ReplicaSet 위에 추상화된 계층으로서 어떤 이점을 제공하는지 구체적인 사용 사례(예: 롤링 업데이트, 롤백)를 들어 설명해 주세요.
힌트 · ReplicaSet은 특정 수의 Pod를 유지하는 반면, Deployment는 ReplicaSet을 관리하여 애플리케이션의 버전 관리 및 배포 전략을 구현합니다.
선언적 업데이트롤링 업데이트롤백ReplicaSet 관리배포 전략
모범답안
Deployment와 ReplicaSet은 Kubernetes에서 Pod를 관리하는 데 사용되는 리소스입니다. ReplicaSet은 지정된 수의 Pod 복제본을 항상 실행하도록 보장하는 역할을 합니다. 만약 Pod가 죽으면 ReplicaSet은 자동으로 새로운 Pod를 생성합니다.
Deployment는 ReplicaSet을 관리하는 상위 수준의 추상화 계층입니다. Deployment를 사용하면 애플리케이션 업데이트, 롤백, 스케일링과 같은 복잡한 배포 작업을 더 쉽게 수행할 수 있습니다.
예를 들어, 롤링 업데이트를 생각해 봅시다. Deployment는 새로운 버전의 애플리케이션을 배포할 때 이전 ReplicaSet을 점진적으로 새로운 ReplicaSet으로 교체합니다. 이를 통해 서비스 중단 없이 애플리케이션을 업데이트할 수 있습니다. 만약 업데이트에 문제가 발생하면 Deployment는 이전 버전으로 롤백하는 기능도 제공합니다. Deployment는 ReplicaSet을 직접 관리하는 것보다 훨씬 편리하고 안전한 배포 전략을 제공합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Docker / Kubernetes 면접 질문
- Docker에서 데이터를 영속적으로 저장하기 위해 사용되는 Volume과 Bind Mount의 차이점을 설명하고, 각각 어떤 시나리오에서 더 적합한지 구체적인 사용 사례를 들어 비교해 주세요.
- 단일 호스트에서 여러 Docker 컨테이너로 구성된 애플리케이션을 관리할 때 Docker Compose를 사용합니다. Docker Compose 파일(`docker-compose.yml`)에서 `depends_on`, `networks`, `volumes`와 같은 고급 옵션을 사용하여 서비스 간 의존성 관리 및 네트워크 구성을 어떻게 할 수 있는지 설명해 주세요.
- Kubernetes Pod의 라이프사이클(Pending, Running, Succeeded, Failed, Unknown)을 단계별로 설명하고, 각 단계에서 Pod가 어떤 상태에 있으며 어떤 이벤트가 발생하는지 구체적으로 설명해 주세요.
- Kubernetes Service의 주요 타입(ClusterIP, NodePort, LoadBalancer)을 설명하고, 각각의 타입이 어떤 방식으로 외부 트래픽을 Pod로 라우팅하며, 어떤 상황에 적합한지 비교하여 설명해 주세요.
- Kubernetes 환경에서 애플리케이션의 복잡한 배포, 관리, 운영 라이프사이클을 자동화하기 위해 Custom Resource Definition(CRD)과 Controller를 활용하는 Operator 패턴을 설계하고 구현해야 한다면, 어떤 핵심 구성 요소를 고려하고 어떤 방식으로 애플리케이션의 상태 관리 및 자동 복구를 구현할 것인지 설명해 주십시오.
- MSA 환경에서 Kubernetes 기반의 서비스 메쉬(Service Mesh)를 도입하여 Blue/Green 배포, Canary 배포, A/B 테스트와 같은 고급 트래픽 관리 전략을 구현하려고 합니다. 서비스 메쉬가 이러한 전략들을 어떻게 지원하며, 특히 요청 기반 라우팅(request-based routing) 및 폴트 인젝션(fault injection)과 같은 기능들을 어떻게 활용하여 실제 운영 환경에 적용할 수 있을지 구체적인 시나리오와 함께 설명해 주십시오.