클러스터 생성 문제 해결

gcpdiag 도구 사용

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

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

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

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

gcpdiag 명령어 실행

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

Google Cloud 콘솔

  1. 다음 명령어를 작성하고 복사합니다.
  2. GOOGLE_AUTH_TOKEN=GOOGLE_AUTH_TOKEN \
      gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS \
        --auto --reason=REASON
  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} 노드의 초기화 실패: {component}

    원인: 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
    
  • 네트워크에 연결할 수 없음: dataproccontrol-REGION.googleapis.com/...*

    원인: Dataproc 클러스터 VPC 네트워크에 필요한 인터넷 경로가 없을 수 있습니다. 클러스터 VM에서 실행되는 Dataproc 에이전트는 작업 및 보고 상태를 가져오기 위해 Dataproc 제어 API에 액세스할 수 있도록 인터넷 경로가 필요합니다. 인터넷에 대한 시스템 생성 기본 경로가 삭제되었을 수 있습니다.

    솔루션:

    --next-hop-gateway=default-internet-gateway를 사용하여 인터넷 경로를 클러스터 VPC 네트워크에 추가합니다(IPv4의 경우 0.0.0.0/0, IPv6의 경우 ::/0). 액세스 제어를 위한 방화벽 규칙을 추가합니다.