🎁 지금 가입하면 온라인 AI를 최대 30분 무료로 사용할 수 있습니다. 신용카드는 필요하지 않습니다.

쿠버네티스 면접 질문과 답변: 명령어 포함 26가지 질문

August 24, 2026
파드, 디플로이먼트, 서비스, 프로브, 스케일링, 스토리지, RBAC, CrashLoopBackOff 및 Pending 파드 트러블슈팅에 대한 답변을 포함한 쿠버네티스 면접 질문.
쿠버네티스 면접 질문과 답변: 명령어 포함 26가지 질문
kubernetes interview questions
kubernetes interview questions and answers
k8s interview questions
kubernetes troubleshooting interview

Kubernetes 면접은 용어(pod, deployment, service)에서 시작해 운영(pod가 죽으면 무슨 일이 일어나는지, 멈춘 rollout을 어떻게 디버깅하는지)과 설계(앱을 어떻게 안전하게 운영할지)로 넘어갑니다. 면접관은 명령어와 증상을 좋아하므로, 실제로 어떤 명령을 입력하고 무엇이 보일 것으로 예상하는지 말하는 연습을 하세요.

아래는 주제별로 묶은 26개의 질문과 답변입니다. 가능하면 예시를 자신의 클러스터 경험으로 바꿔 보세요.

아키텍처와 오브젝트

1. Kubernetes란 무엇인가요?

여러 머신으로 이루어진 클러스터 전반에서 컨테이너를 실행하고 관리하기 위한 오픈 소스 시스템입니다. 서비스의 복사본 세 개와 같이 원하는 상태를 선언하면, Kubernetes가 그 상태에 맞추기 위해 계속 동작합니다.

2. 클러스터의 주요 구성 요소는 무엇인가요?

컨트롤 플레인에는 API 서버(정문), etcd(데이터 저장소), 스케줄러(각 pod에 노드를 배정), 컨트롤러 매니저(컨트롤 루프 실행)가 있습니다. 각 워커 노드는 kubelet(pod 실행), 컨테이너 런타임, kube-proxy(서비스 네트워킹 처리)를 실행합니다.

3. pod란 무엇인가요?

배포 가능한 가장 작은 단위입니다. 네트워크 네임스페이스와 스토리지를 공유하는 하나 이상의 컨테이너를 담습니다. 대부분의 pod에는 메인 컨테이너가 하나 있고, 추가 컨테이너는 사이드카나 init 컨테이너입니다.

4. Deployment, ReplicaSet, StatefulSet의 차이는 무엇인가요?

ReplicaSet은 동일한 pod를 정해진 개수만큼 실행 상태로 유지합니다. Deployment는 ReplicaSet을 관리하며 롤링 업데이트와 롤백을 제공합니다. StatefulSet은 상태가 있는 앱을 위한 것으로, pod에 안정적인 이름과 안정적인 스토리지가 부여되고 시작과 중지가 순서대로 이루어집니다.

5. DaemonSet은 무엇인가요? Job은? CronJob은?

DaemonSet은 로그 수집기 같은 에이전트를 위해 노드마다 pod 하나를 실행합니다. Job은 작업을 완료될 때까지 실행합니다. CronJob은 일정에 따라 Job을 실행합니다.

6. label, selector, annotation이란 무엇인가요?

label은 오브젝트에 붙는 키-값 쌍이고, selector는 label로 오브젝트를 선택합니다. Service는 이 방식으로 pod를 찾고, Deployment는 자신의 ReplicaSet을 찾습니다. annotation도 키-값 데이터를 담지만, 도구가 사용하는 식별 목적이 아닌 메타데이터용입니다.

7. namespace란 무엇인가요?

클러스터를 보통 팀이나 환경별로 가상 그룹으로 나누는 방법입니다. namespace는 이름의 범위를 정하고, namespace별로 리소스 쿼터와 접근 규칙을 적용할 수 있습니다. 그 자체로 강력한 보안 경계는 아닙니다.

네트워킹

8. Service 유형에는 무엇이 있나요?

유형하는 일
ClusterIP클러스터 내부에서만 접근 가능한 안정적인 내부 IP (기본값)
NodePort모든 노드에 포트를 엽니다
LoadBalancer클라우드 제공자를 통해 외부 로드 밸런서를 생성합니다
ExternalName서비스를 DNS 이름에 매핑합니다

9. Ingress란 무엇인가요?

호스트와 경로를 기준으로 외부 HTTP 및 HTTPS 트래픽을 서비스로 라우팅하는 오브젝트이며, 실제 작업은 ingress 컨트롤러가 수행합니다. 더 새롭고 표현력이 뛰어난 후속 모델로 Gateway API가 있습니다.

10. pod는 서로를 어떻게 찾나요?

Service와 클러스터 DNS를 통해 찾습니다. shop namespace에 있는 api라는 서비스는 api.shop.svc.cluster.local로 접근할 수 있고, 같은 namespace 안에서는 그냥 api로도 접근할 수 있습니다.

11. NetworkPolicy란 무엇인가요?

어떤 pod가 어떤 pod와 통신할 수 있는지 제어하는 규칙 집합입니다. 기본적으로 모든 pod는 서로 접근할 수 있습니다. 정책(그리고 이를 적용하는 네트워크 플러그인)을 사용하면 트래픽을 제한할 수 있습니다. 예를 들어 API pod만 데이터베이스에 접근하도록 허용할 수 있습니다.

구성과 스토리지

12. ConfigMap과 Secret의 차이는 무엇인가요?

둘 다 환경 변수나 파일로 주입되는 구성을 담습니다. Secret은 민감한 데이터를 위한 것이지만, 기본적으로는 암호화가 아니라 base64 인코딩만 되어 있습니다. 저장 시 암호화를 켜고, RBAC로 접근을 제한하고, 외부 시크릿 매니저도 고려하세요.

13. PersistentVolume과 PersistentVolumeClaim이란 무엇인가요?

PersistentVolume은 클러스터에 있는 스토리지 조각입니다. PersistentVolumeClaim은 pod의 스토리지 요청입니다. StorageClass를 사용하면 Kubernetes가 볼륨을 자동으로 프로비저닝합니다. 일반 컨테이너 파일 시스템의 데이터는 pod가 교체되면 사라집니다.

14. request와 limit이란 무엇인가요?

request는 스케줄러가 컨테이너를 위해 예약하는 리소스입니다. limit은 컨테이너가 사용할 수 있는 최댓값입니다. 메모리 limit을 초과하면 컨테이너가 종료되고(OOMKilled), CPU limit을 초과하면 스로틀링이 발생합니다.

안정성과 업데이트

15. 라이브니스, 레디니스, 스타트업 프로브란 무엇인가요?

라이브니스는 컨테이너를 재시작해야 하는지 확인합니다. 레디니스는 트래픽을 받아야 하는지 확인합니다. 스타트업은 시작이 느린 앱에 다른 프로브가 시작되기 전까지 시간을 줍니다. 흔한 실수는 데이터베이스에 의존하는 라이브니스 프로브를 두는 것인데, 이러면 데이터베이스가 다운될 때 모든 파드가 재시작될 수 있습니다.

16. 롤링 업데이트는 어떻게 동작하나요?

Deployment가 새 파드를 만들고 기존 파드를 점진적으로 제거하는데, 이는 maxSurge와 maxUnavailable로 제어됩니다. 레디니스 프로브가 새 파드가 언제 준비된 것으로 간주될지 결정합니다. 문제가 생기면 kubectl rollout undo로 이전 리비전으로 되돌립니다.

17. 오토스케일링은 어떻게 동작하나요?

Horizontal Pod Autoscaler는 CPU 같은 메트릭을 기반으로 파드 수를 변경합니다. Vertical Pod Autoscaler는 requests와 limits를 조정합니다. 클러스터 오토스케일러는 파드를 스케줄할 수 없거나 노드가 충분히 활용되지 않을 때 노드를 추가하거나 제거합니다.

18. 노드 유지보수 중에 앱 가용성을 어떻게 유지하나요?

여러 레플리카를 실행하고, 노드나 존에 분산시키고, PodDisruptionBudget을 설정해 자발적 축출이 발생해도 최소 개수가 계속 실행되도록 합니다. kubectl drain으로 노드를 드레인합니다.

트러블슈팅

19. 파드가 CrashLoopBackOff 상태입니다. 어떻게 하나요?

컨테이너가 시작했다가 반복적으로 종료되는 상황입니다. kubectl logs <pod> --previous로 실패 원인을 확인하고, kubectl describe pod로 이벤트, 종료 코드, 프로브 실패를 확인한 뒤, 설정, 누락된 시크릿, 리소스 제한을 점검합니다.

20. 파드가 Pending 상태에서 멈춰 있습니다. 무엇을 확인하나요?

kubectl describe pod가 스케줄러가 파드를 배치하지 못한 이유를 보여줍니다. 어떤 노드에도 CPU나 메모리가 충분하지 않거나, 노드 셀렉터나 테인트가 맞지 않거나, 볼륨 클레임이 바인딩되지 않은 경우입니다.

21. 파드가 OOMKilled 되었습니다. 어떻게 하나요?

메모리 제한을 초과한 것입니다. 사용량 추세를 확인하고, 누수가 있는지 아니면 제한이 너무 낮은지 파악한 뒤, 제한을 높이거나 앱을 수정합니다. 스케줄링이 현실적으로 이루어지도록 requests를 실제 사용량에 가깝게 설정합니다.

22. 서비스에 접근할 수 없습니다. 어떻게 디버깅하나요?

  1. 파드가 실행 중이고 준비 상태인지 확인합니다.
  2. 서비스의 셀렉터가 파드 레이블과 일치하는지 확인합니다(kubectl get endpoints).
  3. 임시 파드로 클러스터 내부에서 테스트합니다.
  4. 포트, 타깃 포트, 컨테이너의 리스닝 주소를 확인합니다.
  5. 네트워크 정책을 확인한 뒤, 인그레스와 DNS를 확인합니다.

보안과 운영

23. RBAC는 어떻게 동작하나요?

Role은 리소스에 대한 권한을 정의하고, 바인딩은 이를 사용자, 그룹, 서비스 어카운트에 부여합니다. 가능하면 네임스페이스 범위의 Role을 사용하고, cluster-admin은 피하며, 각 워크로드에 필요한 최소 권한만 가진 자체 서비스 어카운트를 부여합니다.

24. 클러스터를 어떻게 보안하나요?

최소 권한 원칙의 RBAC를 사용하고, API 접근을 제한하고, 이미지를 스캔하고, 가능하면 읽기 전용 파일시스템으로 비루트 사용자로 컨테이너를 실행하고, 네트워크 정책을 적용하고, 시크릿을 암호화하고, Kubernetes를 최신 상태로 유지하고, 활동을 감사합니다.

25. Helm이란 무엇인가요?

Kubernetes용 패키지 관리자입니다. 차트는 템플릿화된 매니페스트의 집합이고, 릴리스는 자체 values를 가진 설치된 인스턴스입니다. 여러 환경에 걸쳐 배포를 재사용하고 버전 관리하는 데 도움이 됩니다. Kustomize는 일반 매니페스트를 패치하는 또 다른 접근 방식입니다.

26. 웹 앱을 Kubernetes에 안전하게 배포하려면 어떻게 하나요?

"존에 분산된 최소 세 개의 레플리카를 가진 Deployment, requests와 limits 설정, 레디니스와 라이브니스 프로브, TLS가 적용된 Service와 Ingress, ConfigMap과 Secret에 담긴 설정, HPA, PodDisruptionBudget을 구성합니다. 롤링 업데이트와 손쉬운 롤백이 가능한 파이프라인을 통해 배포하고, 롤아웃 중에 에러율과 지연 시간을 모니터링합니다."

알아두면 좋은 명령어

작업명령어
파드 목록kubectl get pods -n <namespace>
파드 상세 정보와 이벤트kubectl describe pod <pod>
로그kubectl logs <pod> -c <container> (크래시 후에는 --previous 추가)
파드 내 셸kubectl exec -it <pod> -- sh
롤백kubectl rollout undo deployment/<name>
스케일kubectl scale deployment/<name> --replicas=5
매니페스트 적용kubectl apply -f file.yaml

준비 방법

kind나 minikube로 로컬에 작은 클러스터를 띄우고 일부러 문제를 만들어 보세요. 잘못된 이미지 태그, 실패하는 프로브, 너무 낮은 메모리 제한 같은 것들입니다. describe와 logs의 출력을 읽는 연습을 하세요. 직접 처리한 실제 장애 하나와 그 후 무엇을 바꿨는지를 준비하세요. 설계 연습은 시스템 디자인 가이드를, 클라우드 주제는 AWS 면접 가이드를 참고하세요.

디버깅 단계를 소리 내어 말해 보세요. 면접관은 확인 순서를 중요하게 봅니다. 트랜스크립트가 있는 모의 면접을 하면 어느 단계를 건너뛰었는지 알 수 있습니다. 실시간 면접에서는 AI 도구에 관한 회사 규칙을 따르세요.

YesToTheOffer와 함께 쿠버네티스 면접 답변을 연습하세요

모의 기술 면접을 진행하고, 디버깅 단계를 말로 설명하고, 이후에 녹취록을 검토하세요. 30분 무료, 구독 없음.

iOS & Android — 출시 예정
요금 보기