Cloud Composer 1 | Cloud Composer 2
이 페이지에서는 Cloud Composer 환경을 만들 때 발생할 수 있는 문제에 대한 문제 해결 정보를 제공합니다.
환경 업데이트 및 업그레이드와 관련된 문제 해결 정보는 환경 업데이트 및 업그레이드 문제 해결을 참조하세요.
Cloud Composer 환경이 생성될 때 대부분의 문제는 다음과 같은 이유로 발생합니다.
서비스 계정 권한 문제
잘못된 방화벽, DNS 또는 라우팅 정보
네트워크 관련 문제. 예를 들어 VPC 구성이 잘못되었거나, IP 주소가 충돌하거나, 네트워크 IP 범위가 너무 좁습니다.
할당량 관련 문제
호환되지 않는 조직 정책
환경 생성 권한 부족
계정에 권한이 부족하여 Cloud Composer가 환경을 만들 수 없으면 다음 오류 메시지가 출력됩니다.
ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: The caller
does not have permission
또는
ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: User not
authorized to act as service account <service-account-name>.
The user must be granted iam.serviceAccounts.actAs permission, included in
Owner, Editor, Service Account User role. See https://cloud.google.com/iam/docs
/understanding-service-accounts for additional details.
해결책: 액세스 제어에 설명된 대로 사용자 계정과 사용자 환경의 서비스 계정 모두에 역할을 할당합니다.
Cloud Composer 2의 경우 Cloud Composer 서비스 에이전트 서비스 계정(
service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com
)에 Cloud Composer v2 API 서비스 에이전트 확장 역할이 할당되었는지 확인합니다.Google API 서비스 에이전트(
PROJECT_NUMBER@cloudservices.gserviceaccount.com
)에 편집자 역할이 할당되었는지 확인합니다.공유 VPC 구성의 경우 공유 VPC 안내 구성을 참조하세요.
환경의 서비스 계정에 권한이 충분하지 않음
Cloud Composer 환경을 만들 때 환경의 GKE 클러스터 노드를 실행하는 서비스 계정을 지정합니다. 이 서비스 계정에 요청된 작업에 대해 충분한 권한이 없으면 Cloud Composer가 다음 오류를 출력합니다.
Errors in: [Web server]; Error messages:
Creation of airflow web server version failed. This may be an intermittent
issue of the App Engine service. You may retry the operation later.
{"ResourceType":"appengine.v1.version","ResourceErrorCode":"504","ResourceError
Message":"Your deployment has failed to become healthy in the allotted time
and therefore was rolled back. If you believe this was an error, try adjusting
the 'app_start_timeout_sec' setting in the 'readiness_check' section."}
해결책: 액세스 제어에 설명된 대로 사용자 계정과 사용자 환경의 서비스 계정 모두에 역할을 할당합니다.
서비스 계정에 IAM 역할 누락에 대한 경고
환경 생성에 실패하면 Cloud Composer는 오류가 발생한 후 경고 메시지(The issue may be caused by missing IAM roles in the following Service Accounts
...
)를 생성합니다.
이 경고 메시지는 가능한 오류 원인을 강조표시합니다. Cloud Composer는 프로젝트의 서비스 계정에 필요한 역할을 확인하고 이러한 역할이 없으면 이 경고 메시지를 생성합니다.
해결 방법: 경고 메시지에 언급된 서비스 계정에 필요한 역할이 있는지 확인합니다. Cloud Composer의 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.
경우에 따라 이 경고를 무시할 수 있습니다. Cloud Composer는 역할에 할당된 개별 권한을 확인하지 않습니다. 예를 들어 커스텀 IAM 역할을 사용하는 경우 경고 메시지에 언급된 서비스 계정에 이미 모든 필수 권한이 있을 수 있습니다. 이 경우에는 이 경고를 무시해도 됩니다.
환경에 선택된 VPC 네트워크가 존재하지 않음
환경을 만들 때 Cloud Composer 환경에 대해 VPC 네트워크 및 서브넷을 지정할 수 있습니다. VPC 네트워크를 지정하지 않으면 Cloud Composer 서비스가 해당 환경의 리전 및 영역으로 default
VPC 및 default
서브넷을 선택합니다.
지정된 VPC 네트워크 및 서브넷이 존재하지 않으면 Cloud Composer가 다음 오류를 출력합니다.
Errors in: [GKE cluster]; Error messages:
{"ResourceType":"gcp-types/container-v1:projects.locations.clusters","R
esourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"P
roject \"<your composer project>\" has no network named \"non-existing-
vpc\".","status":"INVALID_ARGUMENT","statusMessage":"Bad
Request","requestPath":"https://container.googleapis.com/
v1/projects/<your composer
project>/locations/<zone>/clusters","httpMethod":"POST"}}
솔루션:
- Cloud Composer 2에서는 VPC 네트워크 대신 Private Service Connect를 사용하는 환경을 만들 수 있습니다.
- 환경을 만들기 전 새 환경의 VPC 네트워크 및 서브넷이 존재하는지 확인합니다.
잘못된 네트워크 구성
Cloud Composer 환경을 만들려면 적절한 네트워크 또는 DNS 구성이 필요합니다. 다음 안내에 따라 Google API 및 서비스에 대한 연결을 구성합니다.
공유 VPC 모드로 Cloud Composer 환경을 구성할 경우 공유 VPC 안내도 따르세요.
Cloud Composer 환경은 클러스터 노드에 서브넷을 사용하고 포드 및 서비스에 IP 범위를 사용합니다. 이러한 IP 범위 및 다른 IP 범위와의 통신을 보장하려면 다음 안내에 따라 방화벽 규칙을 구성합니다.
또한 Cloud Logging에서 선택한 GCE Networking
및 Subnetwork
구성 카테고리 내의 로그 항목을 확인하여 환경을 만드는 동안 오류가 보고되었는지 확인할 수 있습니다.
Cloud Logging
대규모 네트워크에서 환경을 만들 때 할당량 문제 발생
대규모 네트워크에서 Cloud Composer 환경을 만들 때 다음 할당량 제한이 발생할 수 있습니다.
- 단일 VPC 네트워크의 최대 VPC 피어링 수에 도달했습니다.
- 기본 및 보조 서브넷 IP 범위의 최대 수에 도달했습니다.
- 내부 TCP/UDP 부하 분산에 대한 피어링 그룹에서 최대 전달 규칙 수에 도달했습니다.
솔루션:
- Cloud Composer 2에서는 VPC 네트워크 대신 Private Service Connect를 사용하는 환경을 만들 수 있습니다.
- Cloud Composer 1에서 대규모 네트워크의 Cloud Composer에 권장되는 접근 방식을 적용합니다.
호환되지 않는 조직 정책
Cloud Composer 환경을 성공적으로 만들 수 있도록 다음 정책을 올바르게 구성해야 합니다.
조직 정책 | Cloud Composer 2 | Cloud Composer 1 |
---|---|---|
compute.disableSerialPortLogging |
사용 중지해야 함 | 1.13.0 이전 버전에서 사용 중지됨, 그 외의 경우 모든 값 |
compute.requireOsLogin |
모든 값이 허용됨 | 사용 중지해야 함 |
compute.vmCanIpForward |
모든 값이 허용됨 | VPC 기반 모드(별칭 IP 사용)가 구성되지 않은 경우 허용되어야 함(Cloud Composer 소유 GKE 클러스터에 필요) |
compute.vmExternalIpAccess |
공개 IP 환경에서 허용되어야 함 | 공개 IP 환경에서 허용되어야 함 |
compute.restrictVpcPeering |
적용할 수 없음 | 적용할 수 없음 |
compute.disablePrivateServiceConnectCreationForConsumers |
모든 값이 허용됨 | Private Service Connect를 사용하는 경우 SERVICE_PRODUCERS를 허용 안 할 수 없음 |
compute.restrictPrivateServiceConnectProducer |
활성화된 경우 google.com 조직을 허용 목록 추가 |
모든 값이 허용됨 |
자세한 내용은 알려진 문제 페이지 및 조직 정책 제약조건을 참조하세요.
조직 또는 프로젝트 내에서 사용되는 서비스 제한
조직 또는 프로젝트 관리자는 gcp.restrictServiceUsage
조직 정책 제약조건을 사용하여 프로젝트에서 사용할 수 있는 Google 서비스를 제한할 수 있습니다.
이 조직 정책을 사용하는 경우 Cloud Composer에 필요한 모든 서비스를 허용하는 것이 중요합니다.
400 오류 메시지: Airflow 웹 서버를 배포할 수 없습니다.
이 오류는 겹치는 IP 범위로 인해 비공개 IP 환경의 GKE 클러스터를 만들지 못해서 발생할 수 있습니다.
솔루션: 로그에서 해당 환경의 클러스터에 있는 오류를 찾고 GKE 오류 메시지를 기준으로 문제를 해결합니다.
Cloud Build가 환경 이미지를 빌드하지 못함
적용 대상: Cloud Composer 2 및 Cloud Composer 1.
Cloud Build 서비스 계정(PROJECT_NUMBER@cloudbuild.gserviceaccount.com
)에 프로젝트의 Cloud Build 서비스 계정(roles/cloudbuild.builds.builder
) 역할이 없는 경우 권한 관련 오류로 인해 환경을 만들거나 업데이트하지 못할 수 있습니다.
예를 들어 Cloud Build 로그에 denied: Permission "artifactregistry.repositories.uploadArtifacts" denied
메시지가 표시되고 그 뒤에 ERROR: failed to push because we ran out of retries
가 표시될 수 있습니다.
이 문제를 해결하려면 Cloud Build 서비스 계정에 Cloud Build 서비스 계정 역할이 있는지 확인합니다.