Skip to content

파드 오류 대응

파드 상태 확인

# 비정상 파드 확인
kubectl get pods -A | grep -v Running | grep -v Completed

# 특정 네임스페이스 파드 상태
kubectl get pods -n {namespace명}

# 파드 상세 정보 및 이벤트 확인
kubectl describe pod {pod명} -n {namespace명}

주요 오류 상태와 대응

CrashLoopBackOff

파드가 반복적으로 크래시되는 상태입니다.

  1. 파드 로그 확인으로 원인 파악

    kubectl logs {pod명} -n {namespace명}
    # 이전 컨테이너 로그 확인
    kubectl logs {pod명} -n {namespace명} --previous
    
  2. 원인별 대응

    원인 대응
    OOM(메모리 부족) 리소스 limit 상향 또는 메모리 누수 수정
    설정 오류 ConfigMap/Secret 확인 및 수정
    의존 서비스 미준비 의존 파드 상태 먼저 확인

Pending

파드가 노드에 스케줄링되지 못하는 상태입니다.

kubectl describe pod {pod명} -n {namespace명}
# Events 섹션에서 스케줄링 실패 이유 확인
원인 대응
자원 부족 노드 자원 확인 후 요청량 조정
Node selector 불일치 파드 스펙의 nodeSelector 확인
PVC 마운트 실패 PVC/PV 상태 확인

ImagePullBackOff

컨테이너 이미지를 가져오지 못하는 상태입니다.

kubectl describe pod {pod명} -n {namespace명}
# Events에서 이미지 풀 오류 상세 확인
  • Gitea 레지스트리 접근 가능 여부 확인
  • 이미지 태그 및 경로 정확성 확인
  • ImagePullSecret 설정 확인

파드 재기동

정상 복구가 되지 않을 경우 파드를 재기동합니다.

주의

재기동으로 인한 Side effect가 발생할 수 있으므로 재기동은 마키나락스 담당자에게 확인 후 진행해주시기 바랍니다.

K9s

  1. :을 입력하여 command mode로 진입합니다.

  2. Deployment를 검색합니다.

    • 전체 deployment 검색

      > deploy all
      
    • 특정 namespace deployment 검색

      > deploy -n {namespace명}
      
  3. 재기동이 필요한 Pod의 Deployment를 선택한 후 r을 입력하면 자동으로 기존 Pod 삭제 및 신규 Pod 생성의 Rollout을 수행합니다. Replicaset이 있는 경우에도 Deployment만 재기동하면 Pod의 모든 Replicas는 자동으로 재배포됩니다.

    Deployment rollout

CLI

  1. 마스터 노드 1번 서버에 접속합니다.

  2. deployment를 검색합니다.

    • 전체 deployment 검색

      kubectl get deploy -A
      
    • 특정 namespace deployment 검색

      kubectl get deploy -n {namespace명}
      
  3. 재기동이 필요한 Pod의 Deployment 명을 입력하고 재기동을 실행합니다.

    kubectl rollout restart deployment/{deployment명} -n {namespace명}