파드(Pod) 디버깅

artp·2025년 1월 3일

kubernetes

목록 보기
4/18
post-thumbnail

Pod가 정상적으로 실행되지 않는 경우

매니페스트 파일 생성

apiVersion: v1 # Pod를 생성할 때 사용하는 API 버전
kind: Pod # 생성하려는 리소스 종류(Pod)

metadata:
  name: nginx-pod # Pod의 이름
  
spec:
  containers:
    - name: nginx-container # 컨테이너 이름
    image: nginx:1.26.4 # 사용하려는 Docker 이미지
    ports:
      - containerPort: 80 # 컨테이너에서 사용할 포트 (문서화)

Pod 생성 및 확인

Pod 생성 명령어:

$ kubectl apply -f nginx-pod.yaml

Pod 생성 확인 명령어:

$ kubectl get pods

만약, Pod 생성 중 문제가 발생하면 STATUS에 에러가 표시됩니다.

  • ErrImagePullDocker 이미지를 가져오지 못했음을 의미합니다. 그러나 에러 원인을 구체적으로 알기 위해서는 추가적인 디버깅이 필요합니다.

에러 메시지 확인

kubectl describe 명령어를 사용하면 Pod의 세부 정보를 확인할 수 있습니다.

$ kubectl describe pods nginx-pod
  • 로그를 통해 nginx:1.26.4 이미지가 없어서 Docker 이미지를 가져오지 못하는 에러가 발생했음을 알 수 있습니다.

Pod의 로그를 확인하고 싶을 때

Pod 내부에서 애플리케이션이 출력한 로그를 확인하여 문제를 분석할 수 있습니다.

매니페스트 파일 수정

nginx-pod.yaml

apiVersion: v1
kind: Pod

metadata:
  name: nginx-pod
  
spec:
  containers:
    - name: nginx-container
      image: nginx:1.26.2 # 잘못된 태그를 수정 (1.26.4 → 1.26.2)
      ports:
        - containerPort: 80

변경사항 적용

$ kubectl apply -f nginx-pod.yaml

Pod 로그 확인

Pod의 로그를 확인하려면 다음 명령어를 실행합니다.
출력된 로그를 통해 애플리케이션에서 발생한 에러 메시지나 상태를 확인할 수 있습니다.

$ kubectl logs nginx-pod

Pod에 직접 접속하고 싶을 때

Pod 내부에서 실행 중인 애플리케이션 상태를 직접 확인하거나, 필요한 명령을 실행하기 위해 Pod에 접속할 수 있습니다.

# bash 쉘로 접속
$ kubectl exec -it nginx-pod -- bash

# sh 쉘로 접속 (bash가 없는 경우)
$ kubectl exec -it nginx-pod -- sh
  • 도커에서 컨테이너로 접속하는 명령(docker exec -it [컨테이너 ID] bash)과 비슷합니다.
  • bash가 설치되어 있지 않은 컨테이너에서는 sh를 사용하면 됩니다.

정리

  1. Pod 상태 확인
    • kubectl get pods로 Pod 상태를 확인합니다.
  2. Pod 상세 정보 조회
    • kubectl describe pods [Pod 이름]으로 구체적인 에러 메시지를 확인합니다.
  3. Pod 로그 확인
    • kubectl logs [Pod 이름]으로 애플리케이션 로그를 확인합니다.
  4. Pod 접속
    • kubectl exec -it [Pod 이름] -- [쉘 명령]으로 직접 접속해 문제를 해결합니다.
profile
donggyun_ee

0개의 댓글