· Interview · 12 min read
Kubernetes 면접 질문 30선 — 실무 경험 기반 답변 가이드
DevOps/SRE 면접에서 자주 나오는 Kubernetes 핵심 질문과 실무 경험을 녹여낸 답변 예시. Pod 라이프사이클부터 네트워크, 스케줄링, 트러블슈팅까지.
기초 개념
1. Pod란 무엇이고, 왜 컨테이너 단위가 아닌 Pod 단위로 관리하나요?
Pod는 Kubernetes에서 배포 가능한 가장 작은 단위입니다. 하나 이상의 컨테이너를 포함하며, 같은 Pod 내 컨테이너는 네트워크 네임스페이스와 스토리지를 공유합니다.
핵심 답변: 사이드카 패턴(로그 수집, 프록시 등)처럼 밀접하게 결합된 컨테이너들을 하나의 배포 단위로 묶기 위함입니다. 같은 Pod 내 컨테이너는 localhost로 통신하고, 볼륨을 공유할 수 있어 응집도 높은 서비스 구성이 가능합니다.
2. ReplicaSet과 Deployment의 차이는?
- ReplicaSet: 지정된 수의 Pod 복제본을 유지
- Deployment: ReplicaSet을 관리하며 롤링 업데이트, 롤백 기능 제공
실무에서는 ReplicaSet을 직접 사용하지 않고, 항상 Deployment를 통해 관리합니다.
3. StatefulSet은 언제 사용하나요?
- Pod에 고유한 네트워크 ID가 필요할 때 (예:
mysql-0,mysql-1) - 순서가 보장된 배포/스케일링이 필요할 때
- 안정적인 퍼시스턴트 스토리지가 필요할 때
대표적 사용 사례: 데이터베이스, Kafka, ZooKeeper, Redis Cluster
4. DaemonSet의 용도는?
모든(또는 특정) 노드에 정확히 하나의 Pod를 배포합니다.
사용 사례:
- 로그 수집 에이전트 (Fluentbit, Filebeat)
- 모니터링 에이전트 (Node Exporter, Datadog Agent)
- 네트워크 플러그인 (Calico, Cilium)
네트워크
5. Service의 종류와 각각의 용도를 설명해주세요.
| Type | 용도 | 접근 범위 |
|---|---|---|
| ClusterIP | 클러스터 내부 통신 | 내부만 |
| NodePort | 외부 노출 (포트 30000-32767) | 노드 IP + 포트 |
| LoadBalancer | 클라우드 LB 연동 | 외부 IP |
| ExternalName | 외부 DNS CNAME 매핑 | DNS 레벨 |
6. Ingress와 Service의 차이는?
Service는 L4(TCP/UDP) 레벨의 로드밸런싱, Ingress는 L7(HTTP/HTTPS) 레벨의 라우팅입니다.
Ingress는 호스트/패스 기반 라우팅, TLS 종료, URL 재작성 등 HTTP 레벨 기능을 제공합니다.
7. CoreDNS의 역할과 트러블슈팅 경험을 말해주세요.
CoreDNS는 클러스터 내부 DNS 서버로, Service 이름을 IP로 해석합니다.
실무 경험 예시: CoreDNS Pod의 리소스 부족으로 DNS SERVFAIL 장애가 발생한 적이 있습니다. HPA를 적용하고 리소스 Request/Limit을 조정하여 해결했으며, UDP 53 포트가 NetworkPolicy에 의해 차단된 경우도 있었습니다.
8. CNI(Container Network Interface)란?
Pod 간 네트워크를 구성하는 플러그인 인터페이스입니다.
- AWS VPC CNI: Pod에 VPC의 실제 IP를 할당 (Secondary IP 방식)
- Calico: BGP 기반 라우팅, NetworkPolicy 지원
- Cilium: eBPF 기반, 고성능 네트워킹
스케줄링 & 리소스
9. Resource Request와 Limit의 차이는?
- Request: 스케줄링 시 보장받는 최소 리소스. 노드 선택 기준.
- Limit: 사용 가능한 최대 리소스. 초과 시 CPU는 스로틀링, 메모리는 OOMKill.
Best Practice: Request는 P50~P90, Limit은 P99 기준으로 설정합니다.
10. QoS Class 3가지를 설명해주세요.
| QoS | 조건 | OOMKill 우선순위 |
|---|---|---|
| Guaranteed | Request = Limit (모든 컨테이너) | 가장 낮음 (안전) |
| Burstable | Request < Limit | 중간 |
| BestEffort | Request/Limit 미설정 | 가장 높음 (위험) |
11. HPA(Horizontal Pod Autoscaler)는 어떻게 동작하나요?
- Metrics Server에서 Pod 메트릭 수집 (CPU, Memory, Custom)
- 목표 메트릭 대비 현재 값 비교
- 필요한 Replica 수 계산:
원하는 Replica = ceil(현재 Replica × (현재 메트릭 / 목표 메트릭)) - 15초마다 스케일 결정 (기본값)
12. Taint와 Toleration의 용도는?
- Taint: 노드에 설정. 해당 Taint를 견디지 못하는 Pod는 스케줄링 불가.
- Toleration: Pod에 설정. 특정 Taint를 허용.
사용 사례: GPU 노드 전용 워크로드, Master 노드 보호, 특정 팀 전용 노드풀 격리.
배포 전략
13. Rolling Update의 maxSurge와 maxUnavailable을 설명해주세요.
- maxSurge: 업데이트 중 추가로 생성 가능한 Pod 수 (기본 25%)
- maxUnavailable: 업데이트 중 사용 불가능한 Pod 수 (기본 25%)
예시: 4개 Pod, maxSurge=1, maxUnavailable=1이면 최대 5개, 최소 3개 Pod가 동시 실행.
14. Blue/Green과 Canary 배포의 차이는?
- Blue/Green: 전체 트래픽을 한 번에 전환. 빠른 롤백 가능, 리소스 2배 필요.
- Canary: 트래픽을 점진적으로 전환 (5% → 25% → 50% → 100%). 위험 최소화.
ArgoCD Rollouts로 Canary 배포를 자동화할 수 있습니다.
15. Liveness, Readiness, Startup Probe의 차이는?
| Probe | 실패 시 동작 | 용도 |
|---|---|---|
| Liveness | Pod 재시작 | 데드락 감지 |
| Readiness | Service에서 제거 | 트래픽 수신 준비 확인 |
| Startup | Liveness 체크 지연 | 느린 초기화 앱 보호 |
스토리지
16. PV, PVC, StorageClass의 관계를 설명해주세요.
- PV (PersistentVolume): 실제 스토리지 리소스 (EBS, NFS 등)
- PVC (PersistentVolumeClaim): 사용자의 스토리지 요청
- StorageClass: 동적 프로비저닝 정책 (어떤 종류의 PV를 생성할지)
PVC → StorageClass → PV 자동 생성 → Pod 마운트 순서로 동작합니다.
17. emptyDir과 hostPath의 차이는?
- emptyDir: Pod 생명주기와 동일. Pod 삭제 시 데이터 소실. 임시 캐시용.
- hostPath: 노드의 파일시스템 경로 마운트. Pod 이동 시 데이터 접근 불가.
프로덕션에서는 PVC + StorageClass 사용을 권장합니다.
보안
18. RBAC(Role-Based Access Control)을 설명해주세요.
- Role/ClusterRole: 허용할 API 리소스와 동작 정의
- RoleBinding/ClusterRoleBinding: Role과 사용자/ServiceAccount 연결
최소 권한 원칙(Least Privilege)에 따라 필요한 권한만 부여합니다.
19. Pod Security는 어떻게 관리하나요?
- SecurityContext: 컨테이너 레벨 보안 설정 (runAsNonRoot, readOnlyRootFilesystem)
- Pod Security Admission: 클러스터 레벨 보안 정책 (Privileged, Baseline, Restricted)
- NetworkPolicy: Pod 간 네트워크 접근 제어
20. Secret 관리 Best Practice는?
- 기본 Secret은 etcd에 Base64 인코딩만 됨 (암호화 아님)
- External Secrets Operator + AWS Secrets Manager/Vault 연동 권장
- GitOps 시 SealedSecrets 또는 SOPS로 암호화하여 저장
모니터링 & 트러블슈팅
21. Pod가 CrashLoopBackOff 상태일 때 어떻게 디버깅하나요?
# 1. Pod 상태 확인
kubectl describe pod <pod-name>
# 2. 이전 컨테이너 로그 확인
kubectl logs <pod-name> --previous
# 3. 이벤트 확인
kubectl get events --sort-by=.metadata.creationTimestamp
# 4. 컨테이너 진입 (가능한 경우)
kubectl exec -it <pod-name> -- sh22. OOMKilled가 발생하면 어떻게 대응하나요?
kubectl describe pod로 OOMKilled 확인- Prometheus에서 실제 메모리 사용량 패턴 분석 (P50, P90, P99)
- Memory Limit 조정 또는 애플리케이션 메모리 최적화
- VPA(Vertical Pod Autoscaler) 권고사항 참고
23. Node NotReady 상태의 원인과 대응은?
원인:
- kubelet 프로세스 다운
- 네트워크 단절
- 디스크/메모리 Pressure
- 커널 패닉
대응:
kubectl describe node <node-name> # Conditions 확인
ssh node && systemctl status kubelet # kubelet 상태
journalctl -u kubelet # kubelet 로그아키텍처
24. Control Plane 구성요소를 설명해주세요.
| 컴포넌트 | 역할 |
|---|---|
| kube-apiserver | 모든 통신의 중심, REST API 제공 |
| etcd | 클러스터 상태 저장소 (Key-Value) |
| kube-scheduler | Pod를 적절한 노드에 배치 |
| kube-controller-manager | 상태를 원하는 상태로 유지 (Reconcile Loop) |
| cloud-controller-manager | 클라우드 리소스 연동 (LB, 노드 등) |
25. etcd의 중요성과 백업 전략은?
etcd는 클러스터의 모든 상태(Pod, Service, ConfigMap 등)를 저장하는 단일 진실의 원천(Single Source of Truth)입니다.
백업 전략:
etcdctl snapshot save정기 수행- 멀티 마스터 구성으로 고가용성 확보
- 별도 볼륨에 스냅샷 저장
실무 시나리오
26. 무중단 배포 시 주의할 점은?
- Readiness Probe 설정으로 준비된 Pod만 트래픽 수신
- preStop Hook으로 graceful shutdown 시간 확보
- PodDisruptionBudget으로 최소 가용 Pod 수 보장
- terminationGracePeriodSeconds 충분히 설정 (기본 30초)
27. Multi-Cluster 운영 경험을 말해주세요.
- DEV/STG/PRD 클러스터 분리 운영
- ArgoCD ApplicationSet으로 멀티 클러스터 배포 관리
- 클러스터 간 서비스 통신은 AWS PrivateLink 또는 Service Mesh 활용
28. Helm Chart 관리 Best Practice는?
- values.yaml로 환경별 설정 분리 (values-dev.yaml, values-prd.yaml)
- Chart Museum 또는 OCI Registry에 Chart 버전 관리
- ArgoCD와 연동하여 GitOps 배포
- 공통 Chart를 Library Chart로 추출하여 재사용
29. GitOps로 시크릿을 어떻게 관리하나요?
Git에 시크릿을 평문으로 저장하면 안 되므로:
- External Secrets Operator: AWS Secrets Manager/Vault에서 동적으로 가져옴
- Sealed Secrets: 공개키로 암호화하여 Git에 저장, 클러스터에서 복호화
- SOPS + Age: 파일 레벨 암호화
30. 대규모 클러스터에서 성능 최적화 경험은?
- CoreDNS HPA 적용으로 DNS 병목 해소
- Pod Topology Spread Constraints로 균등 분산
- Priority Class 설정으로 중요 워크로드 우선 스케줄링
- Resource Quota/LimitRange로 네임스페이스별 리소스 제한
- Cluster Autoscaler + Spot Instance로 비용 최적화