앱 배치 디버깅

가상 프라이빗 클라우드 클래식 인프라

앱 배치를 디버그해야 하는 옵션을 검토하고 실패의 근본 원인을 찾습니다.

시작하기 전에 앱이 배치된 네임스페이스에 대해 작성자 또는 관리자 IBM Cloud IAM 서비스 액세스 역할이 있는지 확인하십시오.

  1. Red Hat OpenShift 클러스터에 배치할 수 있도록 앱을 수정해야 하는 공통 시나리오를 검토하십시오.

  2. describe 명령을 실행하여 서비스 또는 배치 리소스의 비정상 항목을 찾으십시오.

    oc describe service <service_name>
    
  3. 컨테이너가 ContainerCreating 상태인지 확인하십시오.

  4. 클러스터가 Critical 상태인지 확인하십시오. 클러스터가 Critical 상태이면 방화벽 규칙을 검사하고 마스터가 작업자 노드와 통신할 수 있는지 확인하십시오.

  5. 서비스가 올바른 포트에서 청취하는지 확인하십시오.

    1. 팟(Pod)의 이름을 가져오십시오.
      oc get pods
      
    2. 컨테이너에 로그인하십시오.
      oc exec -it <pod_name> -- /bin/bash
      
    3. 컨테이너 내에서 앱을 curl하십시오. 포트에 액세스할 수 없는 경우 서비스가 올바른 포트에서 청취 중이지 않거나 앱에 문제가 있을 수 있습니다. 서비스의 구성 파일을 올바른 포트로 업데이트하고 다시 배포하거나 앱의 잠재적인 문제를 조사하세요.
      curl localhost:<port>
      
  6. 서비스가 팟(Pod)에 올바르게 링크되었는지 확인하십시오.

    1. 팟(Pod)의 이름을 가져오십시오.
      oc get pods
      
    2. 컨테이너에 로그인하십시오.
      oc exec -it <pod_name> -- /bin/bash
      
    3. 서비스의 클러스터 IP 주소 및 포트를 curl하십시오.
      curl <cluster_IP>:<port>
      
    4. IP 주소 및 포트에 액세스할 수 없는 경우 서비스의 엔드포인트를 살펴보십시오.
      • 엔드포인트가 나열되지 않으면 서비스의 선택기가 팟(Pod)과 일치되지 않습니다. 예를 들어, 앱 배치에 app=foo 레이블이 있을 수 있으나 서비스에는 run=foo 선택기가 있을 수 있습니다.
      • 엔드포인트가 나열된 경우 서비스의 대상 포트 필드를 살펴보고 대상 포트가 팟(Pod)에 사용된 것과 동일한지 확인하십시오. 예를 들어, 앱이 포트 9080에서 청취할 수 있으나 서비스는 포트 80에서 청취할 수 있습니다.
  7. Ingress 서비스의 경우 클러스터 내에서 서비스에 액세스할 수 있는지 확인하십시오.

    1. 팟(Pod)의 이름을 가져오십시오.
      oc get pods
      
    2. 컨테이너에 로그인하십시오.
      oc exec -it <pod_name> -- /bin/bash
      
    3. Ingress 서비스에 대해 지정된 URL을 curl하십시오. URL에 액세스할 수 없는 경우 클러스터와 외부 엔드포인트 간의 방화벽 문제를 확인하십시오.
      curl <host_name>.<domain>