쿠버네티스 K8s 파드 확인 방법과 운영 시 주의사항

반응형
쿠버네티스 K8s 파드 확인 방법과 운영 시 주의사항

쿠버네티스 K8s 파드 확인 방법과 운영 시 주의사항

쿠버네티스 K8s에서 장애를 확인할 때 가장 먼저 보는 대상은 파드입니다. 파드는 애플리케이션 컨테이너가 실제로 실행되는 최소 단위이기 때문에 상태, 로그, 이벤트, 재시작 횟수만 확인해도 문제의 방향을 빠르게 좁힐 수 있습니다.

파드 확인이 중요한 이유

쿠버네티스 K8s 환경에서는 서비스가 정상처럼 보여도 내부 파드가 재시작 중이거나, 일부 컨테이너만 비정상 상태일 수 있습니다. 특히 운영 환경에서는 단순히 Running 상태인지 보는 것만으로는 충분하지 않습니다. 실제 사용 시에는 준비 상태, 재시작 횟수, 이벤트, 로그를 함께 확인해야 장애 원인을 정확히 파악할 수 있습니다.

파드 상태 확인의 핵심은 단순 상태값이 아니라 전체 흐름을 보는 것입니다.
현재 상태, 준비 여부, 재시작 횟수, 최근 이벤트, 로그를 함께 확인해야 합니다.
관리자 입장에서 보면 특정 파드 하나의 문제가 서비스 전체 장애로 이어질 수 있으므로 반복 점검 기준을 갖추는 것이 중요합니다.

전체 파드 목록 확인

가장 기본적인 쿠버네티스 파드 확인 명령어는 kubectl get pods입니다. 현재 네임스페이스에 있는 파드 목록과 상태를 간단히 확인할 수 있습니다.

kubectl get pods

다른 네임스페이스의 파드를 확인하려면 -n 옵션을 사용합니다.

kubectl get pods -n 네임스페이스명

클러스터 전체 네임스페이스의 파드를 한 번에 보려면 다음 명령어를 사용합니다.

kubectl get pods -A
명령어 용도
kubectl get pods 현재 네임스페이스의 파드 목록 확인
kubectl get pods -n default 특정 네임스페이스의 파드 목록 확인
kubectl get pods -A 전체 네임스페이스의 파드 목록 확인
kubectl get pods -o wide 노드, 파드 IP 등 추가 정보 확인

파드 상태값 읽는 방법

kubectl get pods 결과에서 가장 먼저 볼 항목은 READY, STATUS, RESTARTS, AGE입니다. 이 네 가지 항목은 쿠버네티스 파드 확인 과정에서 기본 점검 지표로 사용됩니다.

항목 확인 포인트
READY 컨테이너가 준비 상태인지 확인합니다. 예를 들어 1/1은 정상, 0/1은 준비되지 않은 상태입니다.
STATUS Running, Pending, CrashLoopBackOff, Error 등 현재 상태를 보여줍니다.
RESTARTS 컨테이너가 재시작된 횟수입니다. 값이 계속 증가하면 로그와 이벤트 확인이 필요합니다.
AGE 파드가 생성된 후 경과한 시간입니다. 최근 생성된 파드인지 장시간 운영 중인지 판단할 수 있습니다.
STATUSRunning이어도 서비스가 정상이라는 뜻은 아닙니다.
READY가 부족하거나 RESTARTS가 증가 중이면 내부 컨테이너 문제가 남아 있을 수 있습니다.
운영 환경에서는 상태값 하나만 보지 말고 반드시 상세 정보와 로그를 함께 확인해야 합니다.

파드 상세 정보 확인

특정 파드의 상세 정보를 확인하려면 kubectl describe pod 명령어를 사용합니다. 이 명령어는 파드의 스케줄링 정보, 컨테이너 상태, 볼륨, 이벤트 등을 한 번에 보여줍니다.

kubectl describe pod 파드명

네임스페이스를 지정해야 하는 경우에는 다음처럼 입력합니다.

kubectl describe pod 파드명 -n 네임스페이스명

상세 정보에서 특히 중요한 부분은 Events 영역입니다. 이미지 Pull 실패, 리소스 부족, 볼륨 마운트 실패, 헬스 체크 실패 같은 원인이 이벤트에 남는 경우가 많습니다.

상세 정보에서 우선 확인할 부분은 State, Last State, Ready, Restart Count, Events입니다.
장애 분석 시에는 마지막 상태와 최근 이벤트를 함께 보면 원인 추적이 훨씬 쉬워집니다.

파드 로그 확인

애플리케이션 내부 오류를 확인하려면 파드 로그를 확인해야 합니다. 단일 컨테이너 파드라면 다음 명령어로 로그를 볼 수 있습니다.

kubectl logs 파드명

실시간으로 로그를 추적하려면 -f 옵션을 사용합니다.

kubectl logs -f 파드명

여러 컨테이너가 들어 있는 파드라면 컨테이너 이름을 지정해야 합니다.

kubectl logs 파드명 -c 컨테이너명

이전에 종료된 컨테이너의 로그를 확인하려면 --previous 옵션을 사용합니다. CrashLoopBackOff 상태를 분석할 때 특히 유용합니다.

kubectl logs 파드명 --previous

자주 보는 파드 이상 상태

쿠버네티스 파드 확인 중 자주 만나는 상태값은 다음과 같습니다. 상태값의 의미를 알고 있으면 문제 원인을 빠르게 분류할 수 있습니다.

상태 의미 우선 확인할 항목
Pending 파드가 아직 노드에 배치되지 않았거나 실행 준비가 끝나지 않은 상태입니다. 노드 리소스, 스케줄링 조건, PVC 바인딩 여부
CrashLoopBackOff 컨테이너가 실행 후 반복적으로 종료되는 상태입니다. 애플리케이션 로그, 환경 변수, 실행 명령, 이전 로그
ImagePullBackOff 컨테이너 이미지를 가져오지 못하는 상태입니다. 이미지 경로, 태그, 레지스트리 인증 정보
ErrImagePull 이미지 Pull 과정에서 오류가 발생한 상태입니다. 이미지 이름, 네트워크, 권한, Secret 설정
Completed Job 성격의 파드가 정상 종료된 상태입니다. Job 실행 결과, 재실행 필요 여부

노드와 파드 위치 확인

파드가 어느 노드에서 실행 중인지 확인하려면 -o wide 옵션을 사용합니다. 특정 노드에서만 문제가 반복될 때 유용합니다.

kubectl get pods -o wide

전체 네임스페이스 기준으로 노드 배치를 확인하려면 다음 명령어를 사용할 수 있습니다.

kubectl get pods -A -o wide

특정 노드에 장애가 있거나 리소스가 부족하면 해당 노드에 배치된 파드에서만 문제가 반복될 수 있습니다. 이때는 파드 상태뿐 아니라 노드 상태도 함께 확인해야 합니다.

kubectl get nodes
kubectl describe node 노드명

라벨로 파드 필터링하기

운영 중인 클러스터에서는 파드 수가 많기 때문에 라벨 필터를 사용하는 것이 좋습니다. 특정 애플리케이션의 파드만 확인하려면 -l 옵션을 사용합니다.

kubectl get pods -l app=애플리케이션명

네임스페이스와 라벨을 함께 지정하면 더 정확하게 조회할 수 있습니다.

kubectl get pods -n 네임스페이스명 -l app=애플리케이션명

배포 리소스와 연결된 파드를 확인할 때도 라벨 기준 조회가 유용합니다. 실무 기준으로 보면 파드 이름은 재생성될 때 바뀔 수 있으므로, 운영 점검 자동화에서는 파드 이름보다 라벨을 기준으로 조회하는 방식이 더 안정적입니다.

YAML 또는 JSON 형식으로 확인하기

파드의 전체 설정과 상태를 자세히 보려면 YAML 또는 JSON 출력 형식을 사용할 수 있습니다.

kubectl get pod 파드명 -o yaml
kubectl get pod 파드명 -o json

이 방식은 환경 변수, 볼륨, 이미지, 어노테이션, 컨테이너 상태, 조건 정보를 세밀하게 확인할 때 유용합니다. 다만 출력량이 많기 때문에 필요한 항목을 찾을 때는 grep, jq, yq 같은 도구와 함께 사용하는 경우가 많습니다.

파드 확인 시 주의사항

쿠버네티스 K8s 파드 확인은 단순 조회 작업처럼 보이지만, 운영 환경에서는 몇 가지 주의할 점이 있습니다. 잘못된 판단으로 파드를 삭제하거나 재시작하면 장애 범위가 커질 수 있습니다.

  1. 네임스페이스를 먼저 확인합니다. 같은 이름의 애플리케이션이 여러 네임스페이스에 있을 수 있습니다.
  2. Running 상태만 믿지 않습니다. Ready 상태와 재시작 횟수를 함께 봐야 합니다.
  3. 이벤트와 로그를 함께 확인합니다. 이벤트는 인프라 원인, 로그는 애플리케이션 원인을 찾는 데 도움이 됩니다.
  4. 파드 이름 직접 의존을 피합니다. 파드는 재생성될 수 있으므로 라벨 기준 조회가 더 안전합니다.
  5. 삭제 전 소유 리소스를 확인합니다. Deployment, ReplicaSet, Job 등 상위 리소스에 의해 다시 생성될 수 있습니다.
장애 상황에서 kubectl delete pod를 먼저 실행하는 것은 위험할 수 있습니다.
삭제 전에 로그, 이벤트, 재시작 횟수, 상위 리소스, 노드 상태를 먼저 확인해야 합니다.
특히 원인 분석 전에 파드를 삭제하면 장애 당시의 단서가 사라질 수 있습니다.

운영 점검에 자주 쓰는 명령어 정리

아래 명령어는 쿠버네티스 파드 확인 과정에서 자주 사용됩니다. 장애 대응이나 배포 후 점검 시 기본 점검 세트로 활용할 수 있습니다.

목적 명령어
전체 파드 확인 kubectl get pods -A
상세 정보 확인 kubectl describe pod 파드명 -n 네임스페이스명
로그 확인 kubectl logs 파드명 -n 네임스페이스명
이전 로그 확인 kubectl logs 파드명 --previous -n 네임스페이스명
실시간 로그 확인 kubectl logs -f 파드명 -n 네임스페이스명
노드 포함 확인 kubectl get pods -A -o wide
라벨 기준 확인 kubectl get pods -l app=애플리케이션명 -n 네임스페이스명

마무리

쿠버네티스 K8s 파드 확인은 kubectl get pods에서 시작하지만, 실제 점검은 상세 정보, 로그, 이벤트, 노드 상태까지 함께 봐야 정확합니다. 특히 CrashLoopBackOff, ImagePullBackOff, Pending 같은 상태는 각각 원인이 다르므로 상태값에 맞는 순서로 확인하는 것이 중요합니다.

운영 환경에서는 파드가 일시적으로 재생성될 수 있고, 이름도 바뀔 수 있습니다. 따라서 파드 이름만 기준으로 판단하기보다 네임스페이스, 라벨, 상위 리소스, 노드 상태를 함께 확인하는 습관이 필요합니다.

  • 기본 조회는 kubectl get pods로 시작합니다.
  • 원인 분석은 describe, logs, events를 함께 확인합니다.
  • 운영 점검에서는 READYRESTARTS를 반드시 확인합니다.
  • 파드 삭제 전에는 로그와 이벤트를 먼저 확보합니다.
반응형