콘텐츠로 이동

4단계. 배포 상태 확인 및 오류 해결

Runway 플랫폼 UI에서는 오류 메시지가 상세하게 표시되지 않는 경우가 있습니다. ArgoCD UI 또는 kubectl을 사용해 원인을 파악할 수 있습니다.


ArgoCD에서 확인

Runway 플랫폼은 내부적으로 ArgoCD를 사용해 헬름 배포를 관리합니다. ArgoCD UI에서 배포 상태를 시각적으로 확인할 수 있습니다.

ArgoCD에 접근하려면 애플리케이션 상세 페이지 > 정보 영역에서 ArgoCD URL을 확인하고 클릭합니다.

배포 상태 흐름

ArgoCD 애플리케이션 그래프에서 왼쪽부터 오른쪽으로 App → Deployment → ReplicaSet → Pod 순서로 상태가 표시됩니다.

  • 모든 노드에 초록 아이콘이 표시되면 정상 배포된 것입니다.
  • 빨간 하트(💔)가 표시된 노드에서 문제가 발생한 것입니다.

ArgoCD에서 확인할 수 있는 주요 정보

위치 확인 내용
App 노드 > SYNC STATUS Synced 여부 — values.yaml이 정상 적용됐는지 확인
ReplicaSet 노드 💔 Pod 생성 실패 — CPU 쿼터 초과 등 스케줄링 문제
Pod 노드 💔 컨테이너 실행 실패 — CrashLoopBackOff, Init:RunContainerError
Pod > EVENTS 탭 FailedCreate 이벤트와 상세 오류 메시지
Pod > LOGS 탭 컨테이너 로그 — 권한 오류, 파일시스템 오류 등

Progressing 상태에서 멈추는 경우, Pod 노드를 클릭해 EVENTS 또는 LOGS 탭에서 원인을 확인합니다.


kubectl로 확인

kubeconfig 파일은 Runway 플랫폼에서 직접 다운로드할 수 있습니다.

Pod 상태 확인

kubectl --kubeconfig <KUBECONFIG_PATH> get pods -n <PROJECT_NAMESPACE>

STATUS 컬럼에서 아래 상태가 보이면 오류가 발생한 것입니다.

상태 의미
Init:CrashLoopBackOff initContainer 실행 실패 → enableDefaultInitContainers: false 설정 필요
CrashLoopBackOff 메인 컨테이너 반복 실패 → 로그 확인 필요
Pending Pod 스케줄 실패 → 리소스 쿼터 초과 여부 확인 필요

로그 확인

kubectl --kubeconfig <KUBECONFIG_PATH> logs -n <PROJECT_NAMESPACE> \
  -l app.kubernetes.io/instance=<HELM_RELEASE_NAME> --previous

주요 오류 메시지와 해결 방법:

오류 메시지 원인 해결 방법
mkdir() ... failed (30: Read-only file system) 읽기 전용 파일시스템 readOnlyRootFilesystem: false
open() "/run/nginx.pid" failed (13: Permission denied) 권한 부족 runAsUser: 0, runAsNonRoot: false
chown(...) failed (1: Operation not permitted) capability 부족 capabilities.add: ["CHOWN", "SETUID", "SETGID"]

ReplicaSet 이벤트 확인

Pod 자체가 생성되지 않는 경우 ReplicaSet 이벤트를 확인합니다.

kubectl --kubeconfig <KUBECONFIG_PATH> describe rs -n <PROJECT_NAMESPACE>

아래 메시지가 보이면 CPU 쿼터가 초과된 것입니다.

exceeded quota: ..., requested: limits.cpu=150m, used: limits.cpu=2, limited: limits.cpu=2

이 경우 resourcesPreset: "none"으로 설정하고 resources에 더 낮은 값을 직접 지정합니다.

Gateway 조회

HTTPRoute에 설정할 Gateway 이름과 네임스페이스를 확인합니다.

kubectl --kubeconfig <KUBECONFIG_PATH> get gateway -A

출력 예시:

NAMESPACE      NAME                    CLASS   ADDRESS           PROGRAMMED
istio-system   platform-core-gateway   istio   192.168.134.105   True

NAMENAMESPACE 값을 httpRoute.parentRefs에 입력합니다.