클러스터 생성 문제 해결

gcpdiag 도구 사용

gcpdiag는 오픈소스 도구입니다. 공식적으로 지원되는 Google Cloud 제품이 아닙니다. gcpdiag 도구를 사용하여 Google Cloud프로젝트 문제를 식별하고 해결할 수 있습니다. 자세한 내용은 GitHub의 gcpdiag 프로젝트를 참조하세요.

gcpdiag 도구는 다음 검사를 수행하여 다음과 같은 Dataproc 클러스터 생성 문제를 확인하는 데 도움이 됩니다.

  • 소진 오류: 로그 탐색기 로그를 평가하여 리전 및 영역의 소진을 발견합니다.
  • 할당량 부족: Dataproc 클러스터 프로젝트에서 할당량 가용성을 확인합니다.
  • 불완전한 네트워크 구성: 필요한 방화벽 규칙과 외부 및 내부 IP 구성 검사를 포함한 네트워크 연결 테스트를 수행합니다. 클러스터가 삭제된 경우 gcpdiag 도구는 네트워크 연결 검사를 수행할 수 없습니다.
  • 잘못된 프로젝트 간 구성: 프로젝트 간 서비스 계정을 확인하고 추가 역할 및 조직 정책 시행을 검토합니다.
  • 공유 가상 프라이빗 클라우드 네트워크 IAM 역할 누락: Dataproc 클러스터에서 공유 VPC 네트워크를 사용하는 경우 필요한 서비스 계정 역할 추가를 확인합니다.
  • 초기화 작업 실패: 로그 탐색기 로그를 평가하여 초기화 작업 스크립트 실패 및 시간 초과를 발견합니다.

gcpdiag 클러스터 생성 단계 목록은 잠재적 단계를 참조하세요.

gcpdiag 명령어 실행

Google Cloud 콘솔의 Cloud Shell 또는 Docker 컨테이너 내에서 gcpdiag 명령어를 실행할 수 있습니다.

Google Cloud 콘솔

  1. 다음 명령어를 작성하고 복사합니다.
  2. gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Google Cloud 콘솔을 열고 Cloud Shell을 활성화합니다.
  4. Cloud 콘솔 열기
  5. 복사한 명령어를 붙여넣습니다.
  6. gcpdiag 명령어를 실행하면 gcpdiag Docker 이미지를 다운로드한 후 진단 검사를 수행합니다. 해당하는 경우 출력 안내에 따라 실패한 검사를 수정합니다.

Docker

Docker 컨테이너에서 gcpdiag를 시작하는 래퍼를 사용하여 gcpdiag를 실행할 수 있습니다. Docker 또는 Podman이 설치되어 있어야 합니다.

  1. 로컬 워크스테이션에서 다음 명령어를 복사하고 실행합니다.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. gcpdiag 명령어를 실행합니다.
    ./gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

이 런북에 사용 가능한 매개변수를 봅니다.

다음을 바꿉니다.

    • PROJECT_ID: 리소스가 포함된 프로젝트의 ID
    • CLUSTER_NAME: 프로젝트의 대상 Dataproc 클러스터 이름
    • OPTIONAL_PARAMETERS: 다음과 같은 선택적인 매개변수를 하나 이상 추가합니다. 클러스터가 삭제된 경우 이 파라미터가 필요합니다.
      • cluster_uuid: 프로젝트에 있는 대상 Dataproc 클러스터의 UUID
      • service_account: Dataproc 클러스터 VM 서비스 계정
      • subnetwork: Dataproc 클러스터 서브네트워크 전체 URI 경로
      • internal_ip_only: True 또는 False
      • cross_project: Dataproc 클러스터가 다른 프로젝트의 VM 서비스 계정을 사용하는 경우의 프로젝트 간 ID입니다.

유용한 플래그:

모든 gcpdiag 도구 플래그의 목록과 설명은 gcpdiag 사용 안내를 참조하세요.

클러스터 생성 오류 이해 및 수정

이 섹션에서는 Dataproc 오류 메시지와 일반적인 원인 및 해결 방법을 설명합니다.

  • 작업 시간 초과: 최소 필수 DataNode/노드 관리자 2개 중 0개만 실행 중입니다.

    원인: 컨트롤러 노드는 작업자 노드와 통신할 수 없으므로 클러스터를 만들 수 없습니다.

    솔루션:

    • 방화벽 규칙 경고를 확인합니다.
    • 올바른 방화벽 규칙이 적용되었는지 확인합니다. 자세한 내용은 기본 Dataproc 방화벽 규칙 개요를 참조하세요.
    • Google Cloud 콘솔에서 연결 테스트를 수행하여 컨트롤러와 워커 노드 간의 통신을 차단하는 항목을 확인합니다.
  • projects/{projectId}/regions/{region}/subnetworks/{subnetwork}에 필요한 compute.subnetworks.use 권한

    원인: 다른 프로젝트의 VPC 네트워크를 사용하여 Dataproc 클러스터를 설정하려고 하는데 Dataproc 서비스 에이전트 서비스 계정에 네트워크를 호스팅하는 공유 VPC 프로젝트에 필요한 권한이 없으면 이 오류가 발생할 수 있습니다.

    솔루션: 다른 프로젝트에서 VPC 네트워크를 사용하는 클러스터 만들기에 나열된 순서를 따릅니다.

  • projects/zones/{zone} 영역에 (resource type:compute) 요청을 처리하는 데 필요한 리소스가 부족합니다.

    원인: 클러스터를 만드는 데 사용되는 영역에 리소스가 부족합니다.

    솔루션:

    • 클러스터를 다른 영역에 만듭니다.
    • Dataproc 자동 영역 배치 기능을 사용합니다.
  • 할당량 초과 오류

    CPUS/CPUS_ALL_REGIONS 할당량 부족
    'DISKS_TOTAL_GB' 할당량 부족
    'IN_USE_ADDRESSES' 할당량 부족

    원인: CPU, 디스크 또는 IP 주소 요청이 사용 가능한 할당량을 초과합니다.

    솔루션: Google Cloud 콘솔에서 추가 할당량을 요청합니다.

  • 초기화 작업 실패

    원인: 클러스터 생성 중에 제공된 초기화 작업을 설치하지 못했습니다.

    솔루션:

  • 노드 CLUSTER-NAME-m을 초기화할 수 없습니다. ... <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>에서 출력을 확인하세요.

    원인: Dataproc 클러스터 컨트롤러 노드를 초기화하지 못했습니다.

    솔루션:

  • 클러스터 생성 실패: IP 주소 공간 소진됨

    원인: 요청된 클러스터 노드를 프로비저닝하는 데 필요한 IP 주소 공간을 사용할 수 없습니다.

    솔루션:

    • 다른 서브네트워크 또는 네트워크에 클러스터를 만듭니다.
    • 네트워크 사용량을 줄여 IP 주소 공간을 확보합니다.
    • 네트워크에서 IP 공간을 충분히 확보할 수 있을 때까지 기다립니다.
  • 초기화 스크립트 오류 메시지: REPO_NAME 저장소에 더 이상 출시 파일이 없습니다.

    원인: Debian Oldstable 백포트 저장소가 삭제되었습니다.

    솔루션:

    초기화 스크립트에서 apt-get을 실행하는 코드 앞에 다음 코드를 추가합니다.

    oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}');
    stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}');
    
    matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)"
    if [[ -n "$matched_files" ]]; then
      for filename in "$matched_files"; do
        grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \
          sed -i -e 's/^.*-backports.*$//' "$filename"
      done
    fi
    
  • 인스턴스 DATAPROC_CLUSTER_VM_NAME의 보고를 기다리는 동안 제한 시간 초과 또는 네트워크에 연결할 수 없음: dataproccontrol-REGION.googleapis.com

    원인: 이 오류 메시지는 Dataproc 클러스터의 네트워킹 설정이 완료되지 않았음을 나타냅니다. 기본 인터넷 게이트웨이로 연결되는 경로 또는 방화벽 규칙이 누락되었을 수 있습니다.

    솔루션:

    이 문제를 해결하려면 다음 연결 테스트를 만드세요.

    • 두 Dataproc 클러스터 VM 간에 연결 테스트를 만듭니다. 이 테스트의 결과를 통해 네트워크의 인그레스 또는 이그레스 허용 방화벽 규칙이 클러스터 VM에 올바르게 적용되는지 확인할 수 있습니다.
    • Dataproc 클러스터 VM과 현재 Dataproc 제어 API IP 주소 간에 연결 테스트를 만듭니다. 현재 Dataproc 제어 API IP 주소를 가져오려면 다음 명령어를 사용합니다.
    dig dataproccontrol-REGION.googleapis.com A
    

    출력의 답변 섹션에 있는 IPv4 주소를 사용합니다.

    연결 테스트 결과를 통해 기본 인터넷 게이트웨이로의 경로와 이그레스 허용 방화벽이 올바르게 구성되었는지 확인할 수 있습니다.

    연결 테스트 결과를 기반으로 다음을 수행합니다.

  • 업데이트로 인해 오류 발생

    원인: 클러스터가 Dataproc 서비스에 제출된 작업을 수락했지만 수동으로 또는 자동 확장을 통해 확장 또는 축소할 수 없습니다. 이 오류는 비표준 클러스터 구성으로 인해 발생할 수도 있습니다.

    솔루션:

    • 클러스터 재설정: 지원 티켓을 열고 진단 tar 파일을 포함한 후 클러스터를 RUNNING 상태로 재설정해 달라고 요청합니다.

    • 새 클러스터: 동일한 구성으로 클러스터를 다시 만듭니다. 이 솔루션은 지원팀에서 제공하는 재설정보다 더 빠를 수 있습니다.

클러스터 문제 해결 도움말

이 섹션에서는 Dataproc 클러스터 생성을 방해할 수 있는 일반적인 문제를 해결하는 방법에 관한 추가 안내를 제공합니다.

Dataproc 클러스터 프로비저닝이 실패하면 일반적으로 일반 오류 메시지가 표시되거나 실패하기 전에 PENDING 또는 PROVISIONING 상태가 보고됩니다. 클러스터 실패 문제를 진단하고 해결하려면 클러스터 로그를 검사하고 일반적인 실패 지점을 평가해야 합니다.

일반적인 증상 및 오류 메시지

다음은 클러스터 생성 실패와 관련된 일반적인 증상 및 오류 메시지입니다.

  • 클러스터가 장기간 PENDING 또는 PROVISIONING 상태를 유지
  • 클러스터가 ERROR 상태로 전환됨
  • 클러스터 생성 중 일반적인 API 오류 발생(예: Operation timed out)
  • 다음과 같은 로깅된 오류 메시지 또는 API 응답 오류 메시지

    • RESOURCE_EXHAUSTED: CPU, 디스크 또는 IP 주소 할당량과 관련됨
    • Instance failed to start
    • Permission denied
    • Unable to connect to service_name.googleapis.com 또는 Could not reach required Google APIs
    • Connection refused 또는 network unreachable
    • 스크립트 실행 오류, 파일을 찾을 수 없음 등 초기화 작업 실패와 관련된 오류

클러스터 로그 검토

클러스터 생성 실패를 진단할 때 중요한 초기 단계는 Cloud Logging에서 제공되는 자세한 클러스터 로그를 검토하는 것입니다.

  1. 로그 탐색기로 이동: Google Cloud 콘솔에서 로그 탐색기를 엽니다.
  2. Dataproc 클러스터 필터:
    • 리소스 드롭다운에서 Cloud Dataproc Cluster를 선택합니다.
    • cluster_nameproject_id를 입력합니다. location(리전)별로 필터링할 수도 있습니다.
  3. 로그 항목 검사:
    • 클러스터 생성 실패 시간에 가까운 ERROR 또는 WARNING 수준 메시지를 찾습니다.
    • VM 수준 또는 Dataproc 에이전트 문제에 관한 유용한 정보를 얻으려면 master-startup, worker-startup, agent 구성요소의 로그를 확인하세요.
    • VM 부팅 시간 문제를 파악하려면 resource.type="gce_instance"로 로그를 필터링하고 클러스터 노드와 연결된 인스턴스 이름(예: CLUSTER_NAME-m 또는 CLUSTER_NAME-w-0)의 메시지를 찾습니다. 직렬 콘솔 로그를 통해 VM 수명 주기 초기에 발생하는 네트워크 구성 문제, 디스크 문제, 스크립트 실패를 확인할 수 있습니다.

일반적인 클러스터 실패 원인 및 문제 해결 도움말

이 섹션에서는 Dataproc 클러스터 생성에 실패하는 일반적인 이유를 설명하고 클러스터 실패 문제를 해결하는 데 도움이 되는 문제 해결 팁을 제공합니다.

IAM 권한 부족

Dataproc 클러스터에서 사용하는 VM 서비스 계정에는 Compute Engine 인스턴스를 프로비저닝하고, Cloud Storage 버킷에 액세스하고, 로그를 작성하고, 기타 Google Cloud 서비스와 상호작용할 수 있는 적절한 IAM 역할이 있어야 합니다.

  • 필수 작업자 역할: VM 서비스 계정에 Dataproc 작업자 역할(roles/dataproc.worker)이 있는지 확인합니다. 이 역할에는 Dataproc에서 클러스터 리소스를 관리하는 데 필요한 최소 권한이 있습니다.
  • 데이터 액세스 권한: 작업이 Cloud Storage 또는 BigQuery에서 읽거나 쓰는 경우 서비스 계정에 Cloud Storage의 경우 Storage Object Viewer, Storage Object Creator 또는 Storage Object Admin, BigQuery의 경우 BigQuery Data Viewer 또는 BigQuery Editor와 같은 관련 역할이 필요합니다.
  • 로깅 권한: 서비스 계정에는 Cloud Logging에 로그를 쓰는 데 필요한 권한이 있는 역할(예: Logging Writer 역할)이 있어야 합니다.

문제 해결 팁:

  • 서비스 계정 식별: 클러스터에서 사용하도록 구성된 VM 서비스 계정을 확인합니다. 지정하지 않으면 기본값은 Compute Engine 기본 서비스 계정입니다.

  • IAM 역할 확인: Google Cloud 콘솔에서 IAM 및 관리자 > IAM 페이지로 이동하여 클러스터 VM 서비스 계정을 찾은 다음 클러스터 작업에 필요한 역할이 있는지 확인합니다. 누락된 역할을 부여합니다.

리소스 할당량 초과

Dataproc 클러스터는 Compute Engine 및 기타 Google Cloud 서비스의 리소스를 사용합니다. 프로젝트 또는 리전 할당량을 초과하면 클러스터 생성에 실패할 수 있습니다.

  • 확인해야 하는 일반적인 Dataproc 할당량은 다음과 같습니다.
    • CPUs(리전)
    • DISKS_TOTAL_GB(리전)
    • IN_USE_ADDRESSES(내부 IP의 경우 리전, 외부 IP의 경우 전역)
    • Dataproc API 할당량(예: ClusterOperationRequestsPerMinutePerProjectPerRegion) .

문제 해결 팁:

  • 할당량 검토: Google Cloud 콘솔에서 IAM 및 관리자 > IAM 페이지로 이동합니다. 'Compute Engine API' 및 'Dataproc API'의 경우 '서비스'를 기준으로 필터링합니다.
  • 사용량과 한도 비교: 한도에 도달했거나 한도에 가까운 할당량을 식별합니다.
  • 필요한 경우 할당량 상향 조정을 요청합니다.

네트워크 구성 문제

잘못된 VPC 네트워크, 서브넷, 방화벽 또는 DNS 구성과 같은 네트워크 구성 문제는 클러스터 생성 실패의 일반적인 원인입니다. 클러스터 인스턴스는 서로 통신하고 Google API와 통신할 수 있어야 합니다.

  • VPC 네트워크 및 서브넷:
    • 클러스터 VPC 네트워크와 서브넷이 존재하고 올바르게 구성되어 있는지 확인합니다.
    • 서브넷에 사용 가능한 IP 주소 범위가 충분한지 확인합니다.
  • 비공개 Google 액세스(PGA): 클러스터 VM에 내부 IP 주소가 있고 Cloud Storage, Cloud Logging 및 기타 작업을 위해 Google API에 연결해야 하는 경우 서브넷에서 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다. 기본적으로 2.2 이상의 이미지 버전으로 생성된 Dataproc 클러스터는 클러스터 리전 서브넷에서 비공개 Google 액세스가 사용 설정된 내부 전용 IP 주소로 VM을 프로비저닝합니다.
  • Private Service Connect(PSC): Private Service Connect를 사용하여 Google API에 액세스하는 경우 Dataproc에서 사용하는 Google API(예: dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com, logging.googleapis.com)에 필요한 Private Service Connect 엔드포인트가 올바르게 구성되어 있는지 확인합니다. API의 DNS 항목은 비공개 IP 주소로 확인되어야 합니다. Private Service Connect를 사용해도 다른 고객 관리 VPC 네트워크와 통신하기 위해 VPC 피어링을 사용해야 합니다. .
  • VPC 피어링: 클러스터가 공유 VPC 호스트 프로젝트나 다른 고객 VPC와 같은 다른 VPC 네트워크의 리소스와 통신하는 경우 VPC 피어링이 올바르게 구성되어 있고 경로가 전파되는지 확인합니다.
  • 방화벽 규칙의 특성은 다음과 같습니다.

    • 기본 규칙: allow-internal 또는 allow-ssh 같은 기본 방화벽 규칙이 지나치게 제한적이지 않은지 확인합니다.
    • 맞춤 규칙: 맞춤 방화벽 규칙이 있는 경우 필요한 통신 경로를 허용하는지 확인합니다.

      • 클러스터 내 내부 통신(-m-w 노드 간)
      • 공용 IP 또는 인터넷 게이트웨이, 비공개 Google 액세스 또는 Private Service Connect 엔드포인트를 사용하여 클러스터 VM에서 Google API로 전송되는 아웃바운드 트래픽

      • 작업이 종속된 외부 데이터 소스 또는 서비스로의 트래픽

  • DNS 확인: 클러스터 인스턴스가 Google API 및 내부 또는 외부 서비스의 DNS 이름을 올바르게 확인할 수 있는지 확인합니다.

문제 해결 팁:

  • 네트워크 구성 검토: 클러스터가 배포되는 VPC 네트워크 및 서브넷 설정을 검사합니다.
  • 방화벽 규칙 확인: VPC 네트워크 또는 공유 VPC 호스트 프로젝트의 방화벽 규칙을 검토합니다.
  • 연결 테스트: 클러스터 서브넷에서 임시 Compute Engine VM을 실행하고 다음 단계를 실행합니다.
    • storage.googleapis.com 같은 외부 Google API 도메인으로 ping 또는 curl 수행
    • nslookup을 사용하여 예상 IP 주소(비공개 Google 액세스 또는 Private Service Connect)로의 DNS 변환을 확인
    • Google Cloud 연결 테스트를 실행하여 테스트 VM에서 관련 엔드포인트로의 경로를 진단

초기화 작업 실패

Dataproc 초기화 작업은 클러스터 생성 중에 클러스터 VM에서 실행되는 스크립트입니다. 이러한 스크립트의 오류로 인해 클러스터가 시작되지 않을 수 있습니다.

문제 해결 팁:

  • 초기화 작업 오류에 대한 로그 검사: Cloud Logging에서 클러스터 인스턴스의 init-actions 또는 startup-script와 관련된 로그 항목을 찾습니다.
  • 스크립트 경로 및 권한 확인: 초기화 작업 스크립트가 Cloud Storage에 올바르게 위치하고 클러스터 VM 서비스 계정에 Cloud Storage 스크립트를 읽는 데 필요한 Storage Object Viewer 역할이 있는지 확인합니다.
  • 스크립트 로직 디버그: 클러스터 환경을 모방하는 별도의 Compute Engine VM에서 스크립트 로직을 테스트하여 오류를 식별합니다. 스크립트에 상세 로깅을 추가합니다.

리전별 리소스 가용성(품절)

리전 또는 영역의 머신 유형 또는 리소스가 일시적으로 제공되지 않는 경우가 있습니다(재고 소진). 일반적으로 이로 인해 프로젝트 할당량 문제와 관련이 없는 RESOURCE_EXHAUSTED 오류가 발생합니다.

문제 해결 팁:

  • 다른 영역 또는 리전 시도: 동일한 리전 내의 다른 영역 또는 다른 리전에서 클러스터를 만들어 보세요.
  • 자동 영역 배치 사용: Dataproc 자동 영역 배치 기능을 사용하여 용량이 있는 영역을 자동으로 선택합니다.
  • 머신 유형 조정: 커스텀 또는 특수 머신 유형을 사용하는 경우 표준 머신 유형을 사용하여 문제가 해결되는지 확인합니다.

클라우드 고객 지원에 문의

클러스터 실패 문제가 계속되면 Cloud Customer Care에 문의하세요. 클러스터 실패 문제와 취한 문제 해결 단계를 설명합니다. 또한 다음 정보를 제공하세요.

  • 클러스터 진단 데이터
  • 다음 명령어의 출력:
      gcloud dataproc clusters describe CLUSTER_NAME \
          -region=REGION
      
  • 실패한 클러스터에서 내보낸 로그

다음 단계