· Interview  · 12 min read

Kubernetes 면접 질문 30선 — 실무 경험 기반 답변 가이드

DevOps/SRE 면접에서 자주 나오는 Kubernetes 핵심 질문과 실무 경험을 녹여낸 답변 예시. Pod 라이프사이클부터 네트워크, 스케줄링, 트러블슈팅까지.

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 우선순위
GuaranteedRequest = Limit (모든 컨테이너)가장 낮음 (안전)
BurstableRequest < Limit중간
BestEffortRequest/Limit 미설정가장 높음 (위험)

11. HPA(Horizontal Pod Autoscaler)는 어떻게 동작하나요?

  1. Metrics Server에서 Pod 메트릭 수집 (CPU, Memory, Custom)
  2. 목표 메트릭 대비 현재 값 비교
  3. 필요한 Replica 수 계산: 원하는 Replica = ceil(현재 Replica × (현재 메트릭 / 목표 메트릭))
  4. 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실패 시 동작용도
LivenessPod 재시작데드락 감지
ReadinessService에서 제거트래픽 수신 준비 확인
StartupLiveness 체크 지연느린 초기화 앱 보호

스토리지

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> -- sh

22. OOMKilled가 발생하면 어떻게 대응하나요?

  1. kubectl describe pod로 OOMKilled 확인
  2. Prometheus에서 실제 메모리 사용량 패턴 분석 (P50, P90, P99)
  3. Memory Limit 조정 또는 애플리케이션 메모리 최적화
  4. 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-schedulerPod를 적절한 노드에 배치
kube-controller-manager상태를 원하는 상태로 유지 (Reconcile Loop)
cloud-controller-manager클라우드 리소스 연동 (LB, 노드 등)

25. etcd의 중요성과 백업 전략은?

etcd는 클러스터의 모든 상태(Pod, Service, ConfigMap 등)를 저장하는 단일 진실의 원천(Single Source of Truth)입니다.

백업 전략:

  • etcdctl snapshot save 정기 수행
  • 멀티 마스터 구성으로 고가용성 확보
  • 별도 볼륨에 스냅샷 저장

실무 시나리오

26. 무중단 배포 시 주의할 점은?

  1. Readiness Probe 설정으로 준비된 Pod만 트래픽 수신
  2. preStop Hook으로 graceful shutdown 시간 확보
  3. PodDisruptionBudget으로 최소 가용 Pod 수 보장
  4. 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에 시크릿을 평문으로 저장하면 안 되므로:

  1. External Secrets Operator: AWS Secrets Manager/Vault에서 동적으로 가져옴
  2. Sealed Secrets: 공개키로 암호화하여 Git에 저장, 클러스터에서 복호화
  3. SOPS + Age: 파일 레벨 암호화

30. 대규모 클러스터에서 성능 최적화 경험은?

  • CoreDNS HPA 적용으로 DNS 병목 해소
  • Pod Topology Spread Constraints로 균등 분산
  • Priority Class 설정으로 중요 워크로드 우선 스케줄링
  • Resource Quota/LimitRange로 네임스페이스별 리소스 제한
  • Cluster Autoscaler + Spot Instance로 비용 최적화
Back to Blog

Related Posts

View All Posts »