Kubernetes 인터뷰 질문 및 답변 (전문가 – 6년 경력)

발행: (2025년 12월 30일 오전 05:05 GMT+9)
13 min read
원문: Dev.to

Source: Dev.to

위의 링크에 있는 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다. (코드 블록, URL 및 마크다운 형식은 그대로 유지됩니다.)

1. Kubernetes Architecture

Q1. What happens when you run kubectl apply -f deployment.yaml?

Answer:

kubectl apply 를 실행하면 요청이 kube‑apiserver 로 전송됩니다.

  1. API 서버는 YAML을 검증하고 인증 및 권한을 확인한 뒤 원하는 상태를 etcd 에 저장합니다.
  2. 컨트롤러는 새로운 원하는 상태를 감지하고 ReplicaSet 을 생성합니다.
  3. 스케줄러 가 파드가 실행될 노드를 결정합니다.
  4. 해당 노드의 kubelet 이 이미지를 가져와 컨테이너를 시작합니다.

Q2. What is etcd and why is it critical?

Answer:

  • etcd 는 전체 클러스터 상태를 보관하는 분산 키‑값 저장소 입니다.
  • etcd 가 다운되거나 손상되면 Kubernetes 가 정상적으로 동작할 수 없습니다.
  • 따라서 운영 환경에서는 백업, 암호화, 고가용성(HA) etcd 구성이 필수적입니다.

2. 워크로드 및 컨트롤러

Q3. Deployment, StatefulSet, DaemonSet의 차이점은?

답변:

리소스사용 사례
Deployment무상태 애플리케이션(예: 웹 서비스)
StatefulSet상태 저장 애플리케이션(예: 데이터베이스, Kafka) – 안정적인 네트워크 ID와 영구 스토리지를 제공
DaemonSet노드당 하나의 파드 – 일반적으로 로깅, 모니터링, 보안 에이전트에 사용

Q4. 언제 Job 또는 CronJob을 사용하나요?

답변:

  • Job – 데이터베이스 마이그레이션과 같은 일회성 작업.
  • CronJob – 백업이나 정리 작업과 같은 정기적인 예약 작업.

3. Networking (Very Important)

Q5. How does traffic reach a pod from the internet?

Answer:

Typical flow:

Internet → Load Balancer → Ingress → Service → Pod
  • Ingress는 라우팅 규칙을 처리합니다.
  • Service는 트래픽을 적절한 파드로 로드밸런싱합니다.
  • Pod이 최종적으로 요청을 제공합니다.

Q6. Difference between Service types?

Answer:

유형노출
ClusterIP내부 전용 (기본값)
NodePort각 노드의 IP와 포트에 서비스를 노출
LoadBalancer클라우드 로드밸런서를 프로비저닝 (프로덕션 급)

Q7. What is a NetworkPolicy?

Answer:

NetworkPolicy어떤 파드가 어떤 파드와 통신할 수 있는지를 정의합니다.

  • 기본적으로 트래픽은 제한이 없습니다.
  • 프로덕션 환경에서는 보안을 위해 트래픽을 제한(제로 트러스트)하는 것이 일반적입니다.

4. 구성 및 비밀

Q8. 프로덕션에서 비밀을 어떻게 관리합니까?

Answer:

가능하면 비밀을 Kubernetes에 직접 저장하지 마세요. 일반적인 통합:

  • AWS Secrets Manager
  • AWS SSM Parameter Store
  • HashiCorp Vault

비밀은 external‑secrets, CSI 드라이버 또는 유사한 메커니즘을 통해 런타임에 주입됩니다.

Q9. Kubernetes 비밀은 암호화됩니까?

Answer:

  • 기본적으로 비밀은 base64‑인코딩만 되어 있으며 암호화되지 않습니다.
  • 프로덕션에서는 휴지 상태 암호화를 활성화하고 RBAC로 접근을 제한합니다.

5. 스토리지 및 상태 저장 애플리케이션

Q10. PV, PVC, 그리고 StorageClass에 대해 설명하세요.

Answer:

ComponentDescription
PV (PersistentVolume)클러스터가 프로비저닝한 실제 스토리지 리소스입니다.
PVC (PersistentVolumeClaim)파드/개발자가 요청하는 스토리지 요구 사항입니다.
StorageClass스토리지가 동적으로 프로비저닝되는 방식을 정의합니다(예: 유형, 재사용 정책).

개발자는 PVC를 사용하고, 인프라 계층은 StorageClass에 따라 PV를 생성·관리합니다.

Q11. 쿠버네티스에서 데이터베이스를 실행하시겠습니까?

Answer:

네, 하지만 주의가 필요합니다. 프로덕션 데이터베이스의 경우 다음을 보장하세요:

  • StatefulSets 로 배포
  • persistent storage(적절한 PV) 사용
  • 신뢰할 수 있는 backup strategy 구현
  • 복제본을 분산시키기 위한 anti‑affinity rules 적용

대부분의 경우 관리형 데이터베이스 서비스를 사용하는 것이 더 나은 선택일 수 있습니다.

6. 리소스 관리 및 스케일링

Q12. requests와 limits의 차이점은?

Answer:

  • Requests – 컨테이너에 보장되는 리소스(스케줄링에 사용).
  • Limits – 컨테이너가 사용할 수 있는 최대 리소스.

포드가 memory limit을 초과하면 노드에 메모리가 남아 있더라도 OOMKilled됩니다.

Q13. HPA는 어떻게 작동하나요?

Answer:

**Horizontal Pod Autoscaler (HPA)**는 CPU, 메모리 또는 사용자 정의 메트릭(예: Prometheus)과 같은 지표를 기반으로 포드 복제본 수를 자동으로 조정합니다.

Q14. 노드에 메모리가 있는데도 포드가 재시작되는 이유는?

Answer:

포드가 memory limit을 초과했기 때문이며, 이는 노드 전체 메모리가 아니라 컨테이너별로 적용되는 제한입니다.

7. 보안 (시니어 수준)

Q15. 쿠버네티스 클러스터를 어떻게 보호합니까?

답변:

  • RBAC를 최소 권한 원칙에 따라 적용합니다.
  • 컨테이너를 non‑root 사용자로 실행합니다.
  • Pod Security Standards(또는 PSP)를 적용합니다.
  • 트래픽을 제한하기 위해 NetworkPolicies를 사용합니다.
  • 컨테이너 이미지의 취약점을 스캔합니다.
  • 정책 적용을 위해 어드미션 컨트롤러(예: OPA/Gatekeeper)를 배포합니다.

Q16. RBAC란 무엇입니까?

답변:

**Role‑Based Access Control (RBAC)**는 Roles, ClusterRoles, RoleBindings, ClusterRoleBindings를 사용하여 클러스터 내에서 누가 무엇을 할 수 있는지를 관리합니다.

Q17. 권한이 상승된 컨테이너를 어떻게 방지합니까?

답변:

  • 권한 상승을 금지하기 위해 Pod Security Standards(또는 이전의 PodSecurityPolicy)를 사용합니다.
  • 권한이 있는 보안 컨텍스트를 차단하는 OPA/Gatekeeper 정책을 적용합니다.

8. Helm

Q18. 왜 Helm을 사용합니까?

Answer:

Helm은 Kubernetes 애플리케이션을 차트로 패키징하여 다음을 제공합니다:

  • 버전 관리된 릴리스
  • 재사용 가능한 매니페스트를 위한 템플릿화
  • values 파일을 통한 환경별 구성

Q19. Helm으로 여러 환경을 어떻게 관리합니까?

Answer:

별도의 values 파일을 유지합니다:

  • values-dev.yaml
  • values-stage.yaml
  • values-prod.yaml

차트를 설치하거나 업그레이드할 때 환경별로 값을 오버라이드합니다.

9. GitOps & Argo CD

Q20. GitOps란 무엇인가?

Answer:

GitOpsGit을 단일 진실 소스(single source of truth) 로 간주하여 원하는 클러스터 상태를 관리합니다. 클러스터는 Git 저장소와 실시간 상태를 지속적으로 조정(reconcile)합니다.

Q21. Argo CD는 무엇을 하는가?

Answer:

Argo CD:

  • Git에 정의된 원하는 상태와 실제 클러스터 상태를 지속적으로 비교합니다.
  • 동기화(Sync) 를 수행하고, 드리프트를 감지하며, 자동으로 롤백(rollback) 할 수 있습니다.

Q22. App‑of‑Apps 패턴이란?

Answer:

부모 Argo CD 애플리케이션이 여러 자식 애플리케이션을 관리하는 방식으로, 대규모 다중 서비스 환경을 깔끔하게 관리할 수 있게 해줍니다.

10. 문제 해결 및 운영

Q23. Pod가 CrashLoopBackOff 상태입니다. 어떻게 하시겠습니까?

Answer:

  1. kubectl logs <pod> – 컨테이너 로그를 확인합니다.
  2. kubectl describe pod <pod> – 이벤트와 상태 세부 정보를 봅니다.
  3. 최근 구성 또는 시크릿 변경 사항을 확인합니다.
  4. 필요하면 컨테이너 이미지를 로컬에서 테스트합니다.

Q24. 프로덕션이 중단되었습니다. 첫 번째 단계는?

Answer:

  1. 알림 및 모니터링 대시보드를 검토합니다.
  2. Pod 및 노드 상태를 확인합니다 (kubectl get pods, kubectl get nodes).
  3. 최근 배포 또는 구성 변경 사항을 파악합니다.
  4. 필요하면 문제를 일으킨 변경을 롤백합니다.
  5. 이해관계자에게 현재 상황 및 예상 복구 시간을 전달합니다.

11. 클라우드 쿠버네티스 (EKS 예시)

Q25. EKS에서 IRSA란 무엇인가?

Answer:

**IAM Roles for Service Accounts (IRSA)**는 파드가 AWS IAM 역할을 안전하게 맡을 수 있게 하여, 컨테이너에 정적 AWS 자격 증명을 삽입할 필요를 없애줍니다.

Q26. 노드 그룹과 Fargate의 차이점은?

Answer:

기능노드 그룹Fargate
제어EC2 인스턴스(크기, AMI 등)를 직접 관리합니다완전 관리형 서버리스 파드
비용EC2 인스턴스 비용을 지불합니다(잠재적으로 낮음)파드당 비용은 높지만 인프라 관리가 필요 없습니다
사용 사례맞춤형 OS, GPU 등 필요 작업간단한 작업, 급증하는 잡, 혹은 무운영을 원할 때

12. 디자인 및 아키텍처

Q27. 어떻게 …

(필요에 따라 나머지 질문을 계속하십시오.)

다중 팀을 위한 쿠버네티스 설계?

답변

  • 별도 네임스페이스
  • 팀별 RBAC
  • 리소스 할당량
  • 네트워크 정책
  • 환경별 GitOps

Q28. 단일 클러스터 또는 다중 클러스터?

답변

  • 소규모 팀 → 단일 클러스터
  • 대규모 조직 / 컴플라이언스 → 다중 클러스터

리스크, 비용, 격리 요구 사항에 따라 다릅니다.

최종 인터뷰 팁 (매우 중요)

면접관이 듣는 항목:

  • 명확한 사고
  • 프로덕션 경험
  • 트레이드‑오프
  • 보안 마인드셋
Back to Blog

관련 글

더 보기 »

Helm이란?

Helm이란 Wordpress와 같은 애플리케이션으로, 프런트엔드에 Wordpress 컨테이너가 필요하고 백엔드에 MySQL 데이터베이스가 필요합니다. 이러한 구성 요소를 수동으로 Deployme...