Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
이 페이지에는 알려진 Cloud Composer 문제가 나열되어 있습니다. 문제 수정사항에 관한 자세한 내용은 출시 노트를 참고하세요.
일부 문제는 이전 버전에 영향을 미치며 환경을 업그레이드하여 해결할 수 있습니다.
RFC 1918 이외의 주소 범위는 포드 및 서비스에 부분적으로 지원됨
Cloud Composer는 GKE에 의존하여 포드 및 서비스에 비RFC 1918 주소를 지원합니다. Cloud Composer에서는 RFC 1918 이외의 다음 범위 목록만 지원됩니다.
- 100.64.0.0/10
- 192.0.0.0/24
- 192.0.2.0/24
- 192.88.99.0/24
- 198.18.0.0/15
- 198.51.100.0/24
- 203.0.113.0/24
- 240.0.0.0/4
업데이트 중에 추가된 환경 라벨은 완전히 반영되지 않음
업데이트된 환경 라벨은 Compute Engine VM에 적용되지 않습니다. 이 문제를 해결하려면 수동으로 라벨을 적용합니다.
조직 정책 제약조건/compute.disableSerialPortLogging이 적용된 상태에서 Cloud Composer 환경을 만들 수 없습니다.
대상 프로젝트에 constraints/compute.disableSerialPortLogging
조직 정책이 적용되면 Cloud Composer 환경 생성이 실패합니다.
진단
이 문제의 영향을 받는지 확인하려면 다음 절차를 따르세요.
Google Cloud 콘솔에서 GKE 메뉴로 이동합니다. GKE 메뉴로 이동
그런 다음 새로 만든 클러스터를 선택합니다. 다음 오류를 확인합니다.
Not all instances running in IGM after 123.45s.
Expect <number of desired instances in IGM>. Current errors:
Constraint constraints/compute.disableSerialPortLogging violated for
project <target project number>.
해결 방법:
Cloud Composer 환경이 생성될 프로젝트에서 조직 정책을 사용 중지합니다.
조직 정책은 상위 리소스(조직 또는 폴더)에서 사용 설정되었더라도 프로젝트 수준에서 언제든지 사용 중지할 수 있습니다. 자세한 내용은 부울 제약조건에 대한 정책 맞춤설정을 참조하세요.
제외 필터 사용
직렬 포트 로그에 제외 필터를 사용하면 Logging에 직렬 콘솔 로그가 있으므로 조직 정책 사용 중지와 동일한 목표를 달성합니다. 자세한 내용은 제외 필터 페이지를 참조하세요.
Deployment Manager를 사용하여 VPC 서비스 제어로 보호되는 Google Cloud 리소스 관리
Cloud Composer 1 및 Cloud Composer 2 버전 2.0.x는 Deployment Manager를 사용하여 Cloud Composer 환경의 구성요소를 만듭니다.
2020년 12월에 Deployment Manager를 사용하여 VPC 서비스 제어로 보호되는 리소스를 관리하려면 VPC 서비스 제어 구성을 추가로 수행해야 할 수 있다는 정보가 수신되었을 수 있습니다.
Cloud Composer를 사용하며 Deployment Manager의 공지에 언급된 Google Cloud 리소스를 관리하기 위해 Deployment Manager를 직접 사용하지 않는 경우에는 별도의 조치가 필요하지 않습니다.
Deployment Manager에 지원되지 않는 기능에 대한 정보 표시
Deployment Manager 탭에 다음 경고가 표시될 수 있습니다.
The deployment uses actions, which are an unsupported feature. We recommend
that you avoid using actions.
Cloud Composer가 소유하는 Deployment Manager의 배포의 경우 이 경고를 무시해도 됩니다.
클러스터가 삭제된 후 환경을 삭제할 수 없음
이 문제는 Cloud Composer 1 및 Cloud Composer 2 버전 2.0.x에 적용됩니다.
환경 자체를 삭제하기 전에 환경의 GKE 클러스터를 삭제하고 환경을 삭제하려고 시도하면 다음 오류가 발생합니다.
Got error "" during CP_DEPLOYMENT_DELETING [Rerunning Task. ]
클러스터가 이미 삭제되었을 때 환경을 삭제하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Deployment Manager 페이지로 이동합니다.
다음 라벨로 표시된 모든 배포를 찾습니다.
goog-composer-environment:<environment-name>
goog-composer-location:<environment-location>
.
다음 설명 라벨로 표시된 두 가지 배포가 표시됩니다.
- 이름이
<environment-location>-<environment-name-prefix>-<hash>-sd
인 배포 - 이름이
addons-<uuid>
인 배포
이러한 두 배포에 아직 나열되어 있고 프로젝트에 있는(예: Pub/Sub 주제 및 구독) 리소스를 수동으로 삭제합니다. 방법은 다음과 같습니다.
배포를 선택합니다.
삭제를 클릭합니다.
2개 배포와 이러한 배포로 생성된 모든 리소스(예: VM, 부하 분산기, 디스크) 삭제 옵션을 선택하고 모두 삭제를 클릭합니다.
삭제 작업이 실패하지만 남아 있던 리소스가 삭제됩니다.
다음 옵션 중 하나를 사용하여 배포를 삭제합니다.
Google Cloud 콘솔에서 두 배포를 다시 선택합니다. 삭제를 클릭한 후 2개 배포를 삭제하지만 생성된 리소스는 유지 옵션을 선택합니다.
gcloud 명령어를 실행하여
ABANDON
정책으로 배포를 삭제합니다.gcloud deployment-manager deployments delete addons-<uuid> \ --delete-policy=ABANDON gcloud deployment-manager deployments delete <location>-<env-name-prefix>-<hash>-sd \ --delete-policy=ABANDON
'echo-airflow_monitoring' DAG에 속하는 'echo' 태스크의 중복 항목 경고
Airflow 로그에 다음 항목이 표시될 수 있습니다.
in _query db.query(q) File "/opt/python3.6/lib/python3.6/site-packages/MySQLdb/
connections.py", line 280, in query _mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry
'echo-airflow_monitoring-2020-10-20 15:59:40.000000' for key 'PRIMARY'")
이 오류는 Airflow DAG 및 태스크 처리에 영향을 주지 않으므로 무시해도 됩니다.
Airflow 로그에 이러한 경고가 표시되지 않도록 Cloud Composer 서비스를 개선하는 중입니다.
IAP(Identity-Aware Proxy) API가 VPC 서비스 제어 경계에 추가된 프로젝트에서 환경 생성 실패
VPC 서비스 제어가 사용 설정된 프로젝트에서 cloud-airflow-prod@system.gserviceaccount.com
계정은 환경을 만들기 위해 보안 경계에서 명시적인 액세스 권한이 필요합니다.
환경을 만들려면 다음 솔루션 중 하나를 사용하면 됩니다.
Cloud Identity-Aware Proxy API 및 IAP(Identity-Aware Proxy) TCP API를 보안 경계에 추가하지 않습니다.
YAML 조건 파일에서 다음 구성을 사용하여
cloud-airflow-prod@system.gserviceaccount.com
서비스 계정을 보안 경계의 구성원으로 추가합니다.- members: - serviceAccount:cloud-airflow-prod@system.gserviceaccount.com
compute.vmExternalIpAccess 정책이 사용 중지되면 Cloud Composer 환경 만들기 또는 업그레이드가 실패함
이 문제는 Cloud Composer 1 및 Cloud Composer 2 환경에 적용됩니다.
공개 IP 모드에 구성된 Cloud Composer 소유의 GKE 클러스터는 해당 VM에 대해 외부 연결이 필요합니다. 따라서 compute.vmExternalIpAccess
정책은 외부 IP 주소를 사용한 VM 만들기를 금지할 수 없습니다. 이 조직 정책에 대한 자세한 내용은 조직 정책 제약조건을 참고하세요.
업로드된 DAG 파일의 첫 번째 DAG 실행에서 여러 개의 태스크가 실패함
DAG 파일을 업로드하면 첫 DAG의 처음 몇 개 태스크가 Unable to read remote log...
오류와 함께 실패하는 경우가 있습니다. 이 문제는 환경의 버킷, Airflow 작업자, 환경의 Airflow 스케줄러 간에 DAG 파일이 동기화되어 발생합니다. 스케줄러가 DAG 파일을 가져와서 작업자가 실행하도록 예약하고, 작업자에 아직 DAG 파일이 없으면 태스크 실행이 실패합니다.
이 문제를 완화하기 위해 Airflow 2가 있는 환경은 기본적으로 실패한 태스크에 대해 재시도를 두 번 수행하도록 구성됩니다. 태스크가 실패하면 5분 간격으로 두 번 재시도됩니다.
GKE 버전에서 지원 중단된 베타 API의 지원 삭제 알림
Cloud Composer는 기본 Cloud Composer 소유의 GKE 클러스터를 관리합니다. DAG 및 코드에서 이러한 API를 명시적으로 사용하지 않는 한 GKE API 지원 중단에 대한 알림을 무시해도 됩니다. 필요한 경우 Cloud Composer가 마이그레이션을 처리합니다.
Cloud Composer는 Apache Log4j 2 취약점 (CVE-2021-44228)의 영향을 받지 않음
Apache Log4j 2 취약점(CVE-2021-44228)에 대한 대응으로 Cloud Composer는 자세한 조사를 실시했으며 Cloud Composer는 이 취약점 공격에 노출되지 않는다고 보고 있습니다.
환경의 Cloud Storage 버킷에 액세스할 때 Airflow 작업자 또는 스케줄러에 문제가 발생할 수 있음
Cloud Composer는 gcsfuse를 사용하여 환경 버킷의 /data
폴더에 액세스하고 Airflow 태스크 로그를 /logs
디렉터리에 저장합니다(사용 설정된 경우). gcsfuse가 과부하되거나 환경 버킷을 사용할 수 없는 경우 Airflow 태스크 인스턴스 실패가 발생하고 Airflow 로그에 Transport endpoint is not connected
오류가 표시될 수 있습니다.
해결책:
- 환경 버킷에 로그 저장을 사용 중지합니다. Cloud Composer 2.8.0 이상 버전을 사용하여 환경을 만든 경우 이 옵션은 기본적으로 사용 중지되어 있습니다.
- Cloud Composer 2.8.0 이상 버전으로 업그레이드합니다.
[celery]worker_concurrency
를 줄이고 대신 Airflow 작업자 수를 늘립니다.- DAG 코드에서 생성되는 로그의 양을 줄입니다.
- DAG 구현을 위한 추천 및 권장사항을 따르고 태스크 재시도를 사용 설정합니다.
Airflow UI가 변경되면 플러그인이 다시 로드되지 않을 수 있음
플러그인이 다른 모듈을 가져오는 여러 파일로 구성된 경우 Airflow UI에서 플러그인이 다시 로드되어야 한다는 사실을 인식하지 못할 수 있습니다. 이 경우 환경의 Airflow 웹 서버를 다시 시작합니다.
환경 클러스터에 예약할 수 없는 상태의 워크로드가 있음
이 알려진 문제는 Cloud Composer 2에만 적용됩니다.
Cloud Composer 2에서는 환경이 생성된 후 환경 클러스터의 여러 워크로드가 예약할 수 없는 상태로 유지됩니다.
환경이 확장되면 새 작업자 포드가 생성되고 Kubernetes에서 이를 실행하려고 시도합니다. 실행할 수 있는 무료 리소스가 없으면 작업자 포드는 예약 불가능으로 표시됩니다.
이 경우 클러스터 자동 확장 처리에서 노드를 더 추가하며 이는 몇 분 정도 걸립니다. 완료될 때까지 포드는 예약 불가능 상태로 유지되며 어떠한 태스크도 실행하지 않습니다.
Airflow 구성요소가 없는 노드에서 시작할 수 없는 composer-gcsfuse
및 composer-fluentd
라는 예약 불가능한 DaemonSet 워크로드는 환경에 영향을 미치지 않습니다.
이 문제가 장시간 (1시간 이상) 지속되면 클러스터 자동 확장 처리 로그를 확인할 수 있습니다. 다음 필터를 사용하여 로그 뷰어에서 로그를 찾을 수 있습니다.
resource.type="k8s_cluster"
logName="projects/<project-name>/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
resource.labels.cluster_name="<cluster-name>"
여기에는 클러스터 자동 확장 처리의 결정에 대한 정보가 포함됩니다. 클러스터를 수직 확장하거나 축소할 수 없는 이유를 알아보려면 noDecisionStatus를 펼칩니다.
Airflow UI에 액세스할 때 오류 504 발생
Airflow UI에 액세스할 때 504 Gateway Timeout
오류가 발생할 수 있습니다. 이 오류의 원인은 다음과 같습니다.
일시적인 통신 문제입니다. 이 경우 나중에 Airflow UI에 액세스해 보세요. Airflow 웹 서버를 다시 시작할 수도 있습니다.
(Cloud Composer 3만 해당) 연결 문제입니다. Airflow UI를 영구적으로 사용할 수 없고 제한 시간 또는 504 오류가 발생하는 경우 환경에서
*.composer.googleusercontent.com
에 액세스할 수 있는지 확인하세요.(Cloud Composer 2만 해당) 연결 문제입니다. Airflow UI를 영구적으로 사용할 수 없고 제한 시간 또는 504 오류가 발생하는 경우 환경에서
*.composer.cloud.google.com
에 액세스할 수 있는지 확인하세요. 비공개 Google 액세스를 사용하고private.googleapis.com
가상 IP를 통해 트래픽을 전송하거나, VPC 서비스 제어를 사용하고restricted.googleapis.com
가상 IP를 통해 트래픽을 전송할 경우 Cloud DNS가*.composer.cloud.google.com
도메인 이름으로도 구성됐는지 확인하세요.응답 없는 Airflow 웹 서버 오류 504가 지속되더라도 특정 시점에 Airflow UI에 계속 액세스할 수 있으면 과부하가 발생하여 Airflow 웹 서버가 응답하지 않을 수 있습니다. 웹 서버의 확장 및 성능 매개변수를 늘려보세요.
Airflow UI에 액세스할 때 502 오류 발생
502 Internal server exception
오류는 Airflow UI가 들어오는 요청을 처리할 수 없음을 나타냅니다. 이 오류의 원인은 다음과 같습니다.
일시적인 통신 문제입니다. 나중에 Airflow UI에 액세스해 보세요.
웹 서버를 시작할 수 없습니다. 웹 서버를 시작하려면 먼저 구성 파일을 동기화해야 합니다. 웹 서버 로그에서
GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp
또는GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp
와 비슷하게 표시된 로그 항목을 확인합니다. 이러한 오류가 표시되면 오류 메시지에 언급된 파일이 아직 환경의 버킷에 있는지 확인합니다.보관 정책 구성 등으로 인해 실수로 삭제된 경우 복원할 수 있습니다.
환경에 새 환경 변수를 설정합니다. 모든 변수 이름과 값을 사용할 수 있습니다.
Airflow 구성 옵션을 재정의합니다. 존재하지 않는 Airflow 구성 옵션을 사용할 수 있습니다.
트리 보기에서 태스크 인스턴스로 마우스를 가져가면 포착되지 않은 TypeError 발생
Airflow 2에서 기본이 아닌 시간대가 사용되면 Airflow UI의 트리 보기가 올바르게 작동하지 않는 경우가 있습니다. 이 문제를 해결하려면 Airflow UI에서 시간대를 명시적으로 구성합니다.
Airflow 2.2.3 이전 버전의 Airflow UI는 CVE-2021-45229에 취약함
CVE-2021-45229에 명시된 것처럼 'Trigger DAG with config(구성으로 DAG 트리거)' 화면은 origin
쿼리 인수를 통한 XSS 공격에 취약했습니다.
권장사항: Airflow 2.2.5를 지원하는 최신 Cloud Composer 버전으로 업그레이드하세요.
작업자에 이전 Airflow 버전보다 더 많은 메모리가 필요함
증상:
Cloud Composer 2 환경에서 Airflow 작업자의 모든 환경 클러스터 워크로드는
CrashLoopBackOff
상태이며 태스크를 실행하지 않습니다. 이 문제의 영향을 받는 경우OOMKilling
경고가 생성되어 표시될 수도 있습니다.이 문제로 인해 환경 업그레이드가 방지될 수 있습니다.
원인:
[celery]worker_concurrency
Airflow 구성 옵션의 커스텀 값과 Airflow 작업자에 대한 커스텀 메모리 설정을 사용하는 경우 리소스 소비가 한도에 가까워지면 이 문제가 발생할 수 있습니다.- Python 3.11을 사용하는 Airflow 2.6.3의 Airflow 작업자 메모리 요구사항은 이전 버전의 작업자에 비해 10% 더 높습니다.
- Airflow 2.3 이상 버전에서의 Airflow 작업자 메모리 요구사항은 Airflow 2.2 또는 Airflow 2.1의 작업자에 비해 30% 더 높습니다.
해결책:
- Cloud Composer가 이 값을 자동으로 계산하도록
worker_concurrency
에 대한 재정의를 삭제합니다. worker_concurrency
에 커스텀 값을 사용하는 경우 더 낮은 값으로 설정합니다. 자동 계산된 값을 시작점으로 사용할 수 있습니다.- 또는 Airflow 작업자가 사용할 수 있는 메모리 양을 늘릴 수 있습니다.
- 이 문제로 인해 환경을 이후 버전으로 업그레이드할 수 없으면 업그레이드 전에 제안된 솔루션 중 하나를 적용합니다.
Cloud Run 함수를 사용하여 비공개 네트워크를 통한 DAG 트리거
VPC 커넥터를 사용해서 비공개 네트워크를 통해 Cloud Run 함수로 DAG를 트리거하는 것은 Cloud Composer에서 지원되지 않습니다.
권장사항: Cloud Run 함수를 사용하여 Pub/Sub에 메시지를 게시하세요. 이러한 이벤트는 Pub/Sub 센서를 활성화하여 Airflow DAG를 트리거하거나 지연 가능한 연산자를 기반으로 접근 방법을 구현할 수 있습니다.
스케줄러 및 작업자의 빈 폴더
Cloud Composer는 Airflow 작업자 및 스케줄러에서 빈 폴더를 적극적으로 삭제하지 않습니다. 이러한 항목은 해당 폴더가 버킷에 있었고 결국 삭제되었을 때 환경 버킷 동기화 프로세스로 인해 생성될 수 있습니다.
권장사항: 이러한 빈 폴더를 건너뛸 수 있도록 DAG를 조정합니다.
이러한 항목은 환경 클러스터의 축소 또는 유지보수 작업의 결과 등에 따라 해당 구성요소를 다시 시작할 때 결국 Airflow 스케줄러 및 작업자의 로컬 스토리지에서 삭제됩니다.
Kerberos 지원
Cloud Composer는 Airflow Kerberos 구성을 지원하지 않습니다.
Cloud Composer 2 및 Cloud Composer 3에서 컴퓨팅 클래스 지원
Cloud Composer 3 및 Cloud Composer 2는 범용 컴퓨팅 클래스만 지원합니다. 즉, 다른 컴퓨팅 클래스(예: 분산 또는 수평 확장)를 요청하는 포드를 실행할 수 없습니다.
범용 클래스를 사용하면 컴퓨팅 클래스 최대 요청에 설명된 대로 최대 110GB의 메모리와 최대 30개의 CPU를 요청하는 포드를 실행할 수 있습니다.
ARM 기반 아키텍처를 사용하거나 CPU와 메모리가 더 필요하다면 Cloud Composer 3 및 Cloud Composer 2 클러스터 내에서 지원되지 않는 다른 컴퓨팅 클래스를 사용해야 합니다.
권장사항: GKEStartPodOperator
를 사용하여 선택한 컴퓨팅 클래스를 지원하는 다른 클러스터에서 Kubernetes 포드를 실행하세요. 다른 컴퓨팅 클래스가 필요한 커스텀 포드를 실행하는 경우 Cloud Composer 이외의 클러스터에서도 실행해야 합니다.
Google Campaign Manager 360 연산자 지원
Cloud Composer 2.1.13 이전 버전의 Google Campaign Manager 연산자는 지원 중단된 Campaign Manager 360 v3.5 API를 기반으로 하며 지원 종료일은 2023년 5월 1일입니다.
Google Campaign Manager 연산자를 사용하는 경우 환경을 Cloud Composer 버전 2.1.13 이상으로 업그레이드합니다.
Google Display 및 Video 360 연산자 지원
Cloud Composer 2.1.13 이전 버전의 Google Display 및 Video 360 연산자는 지원 중단된 Display 및 Video 360 v1.1 API를 기반으로 하며 지원 종료일은 2023년 4월 27일입니다.
Google Display 및 Video 360 연산자를 사용하는 경우 환경을 Cloud Composer 버전 2.1.13 이상으로 업그레이드합니다. 또한 일부 Google Display 및 Video 360 연산자가 지원 중단되고 새 연산자로 대체되기 때문에 DAG를 변경해야 할 수 있습니다.
GoogleDisplayVideo360CreateReportOperator
를 이제 지원 중단했습니다. 대신GoogleDisplayVideo360CreateQueryOperator
를 사용하세요. 이 연산자는report_id
대신query_id
를 반환합니다.GoogleDisplayVideo360RunReportOperator
를 이제 지원 중단했습니다. 대신GoogleDisplayVideo360RunQueryOperator
를 사용하세요. 이 연산자는report_id
대신query_id
과report_id
를 반환하고 매개변수로report_id
대신query_id
를 필요로 합니다.- 보고서가 준비되었는지 확인하려면
query_id
및report_id
매개변수를 사용하는 새로운GoogleDisplayVideo360RunQuerySensor
센서를 사용합니다. 지원 중단된GoogleDisplayVideo360ReportSensor
센서에는report_id
만 필요합니다. GoogleDisplayVideo360DownloadReportV2Operator
에는 이제query_id
및report_id
매개변수가 모두 필요합니다.GoogleDisplayVideo360DeleteReportOperator
에는 DAG에 영향을 줄 수 있는 변경사항이 없습니다.
보조 범위 이름 제한사항
CVE-2023-29247(UI의 태스크 인스턴스 세부정보 페이지가 저장된 XSS에 취약함)
2.0.x에서 2.5.x로 Airflow 버전의 Airflow UI는 CVE-2023-29247에 취약합니다.
2.4.2 이전 버전의 Cloud Composer를 사용하여 취약점 공격에 노출될 수 있다고 의심되는 경우 다음 설명과 가능한 솔루션을 읽어보세요.
Cloud Composer에서 Airflow UI에 대한 액세스는 IAM으로 보호되고 Airflow UI 액세스 제어로 보호됩니다.
즉, Airflow UI 취약점을 공격하려면 공격자는 먼저 필요한 IAM 권한 및 역할과 함께 프로젝트에 대한 액세스 권한이 있어야 합니다.
솔루션:
개별 사용자에게 할당된 Cloud Composer 역할을 포함하여 프로젝트의 IAM 권한 및 역할을 확인하세요. 승인된 사용자만 Airflow UI에 액세스할 수 있도록 유의해야 합니다.
Airflow UI 액세스 제어 메커니즘을 통해 사용자에게 할당된 역할을 확인하세요(Airflow UI에 대해 보다 세부적인 액세스를 제공하는 별도의 메커니즘). 승인된 사용자만 Airflow UI에 액세스할 수 있고 모든 신규 사용자가 적절한 역할로 등록되었는지 확인합니다.
VPC 서비스 제어를 사용하여 더욱 강화하는 것이 좋습니다.
Cloud Composer 2 Composer 환경의 Airflow 모니터링 DAG는 삭제 후 다시 생성되지 않음
Airflow 모니터링 DAG는 composer-2.1.4-airflow-2.4.3이 포함된 환경에서 사용자가 삭제하거나 버킷에서 이동한 경우 자동으로 다시 생성되지 않습니다.
솔루션:
- 이 취약점은 composer-2.4.2-airflow-2.5.3 등의 이후 버전에서 수정되었습니다. 권장 방법은 환경을 최신 버전으로 업그레이드하는 것입니다.
- 환경 업그레이드에 대한 대안 또는 임시 해결 방법은 동일한 버전의 다른 환경에서 airflow_monitoring DAG를 복사하는 것입니다.
Sentry가 사용 설정된 경우 업그레이드 작업이 실패할 수 있음
환경에서 Sentry를 구성하고 [sentry]sentry_on
설정을 true
로 설정하면 Cloud Composer 환경에 대한 업그레이드 작업이 실패할 수 있습니다.
솔루션:
- 환경에서 Sentry를 사용 중지하고 업그레이드를 수행한 다음 Sentry를 다시 구성합니다.
Cloud SQL 스토리지를 줄일 수 없음
Cloud Composer는 Cloud SQL을 사용하여 Airflow 데이터베이스를 실행합니다. 시간이 지나면서 Cloud SQL 인스턴스의 디스크 스토리지가 증가할 수 있는데 이는 Airway 데이터베이스 증가 시 Cloud SQL 작업으로 저장된 데이터에 맞춰 디스크가 확장되기 때문입니다.
Cloud SQL 디스크 크기를 축소할 수는 없습니다.
최소 Cloud SQL 디스크 크기를 사용하려면 스냅샷을 사용하여 Cloud Composer 환경을 다시 만들면 됩니다.
Cloud SQL에서 레코드를 삭제한 후 데이터베이스 디스크 사용량 측정항목이 감소하지 않음
Postgres 또는 MySQL과 같은 관계형 데이터베이스는 삭제되거나 업데이트될 때 행을 물리적으로 삭제하지 않습니다. 대신 데이터 일관성을 유지하고 동시 실행 트랜잭션 차단을 방지하기 위해 이를 '데드 튜플'로 표시합니다.
MySQL과 Postgres는 모두 레코드 삭제 후 공간을 회수하는 메커니즘을 구현합니다.
데이터베이스가 사용되지 않은 디스크 공간을 강제로 회수하도록 할 수 있지만 이 작업은 리소스를 많이 소모하므로 데이터베이스를 추가로 잠가 Cloud Composer를 사용할 수 없게 됩니다. 따라서 사용되지 않은 공간을 회수하는 빌드 메커니즘을 사용하는 것이 좋습니다.
액세스 차단됨: 승인 오류
이 문제가 사용자에게 영향을 미치면 액세스 차단됨: 승인 오류 대화상자에 Error 400: admin_policy_enforced
메시지가 포함됩니다.
API 컨트롤 > 구성되지 않은 서드 파티 앱 > 사용자의 서드 파티 앱에 액세스를 허용하지 않음 옵션이 Google Workspace에 사용 설정되어 있고 Cloud Composer 앱의 Apache Airflow가 명시적으로 허용되지 않은 경우 사용자가 명시적으로 애플리케이션을 허용하지 않으면 Airflow UI에 액세스할 수 없습니다.
액세스를 허용하려면 Google Workspace에서 Airflow UI에 대한 액세스 허용의 단계를 수행합니다.
FAILED로 표시된 과거에 성공한 태스크 인스턴스
일부 상황 및 드문 경우에 이전에 성공한 Airflow 태스크 인스턴스가 FAILED
로 표시될 수 있습니다.
이 문제가 발생했다면 일반적으로 환경 업데이트나 업그레이드 작업 또는 GKE 유지보수에 의해 트리거된 것입니다.
참고: 문제 자체가 환경 문제를 나타내지는 않으며 태스크 실행 시 실질적인 실패를 유발하지는 않습니다.
이 문제는 Cloud Composer 버전 2.6.5 이상에서 해결되었습니다.
Cloud Composer 구성의 다른 부분과 통신할 때 Airflow 구성요소에 문제가 있음
매우 드문 경우지만 Compute Engine 메타데이터 서버와의 통신 속도가 느려서 Airflow 구성요소가 최적으로 작동하지 않을 수 있습니다. 예를 들어 Airflow 스케줄러가 다시 시작되면 Airflow 태스크를 다시 시도하거나 태스크 시작 시간이 더 길어질 수 있습니다.
증상
다음 오류가 Airflow 구성요소 로그에 표시됩니다(예: Airflow 스케줄러, 작업자 또는 웹 서버).
Authentication failed using Compute Engine authentication due to unavailable metadata server
Compute Engine Metadata server unavailable on attempt 1 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 2 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 3 of 3. Reason: timed out
해결책:
환경 변수 GCE_METADATA_TIMEOUT=30
을 설정합니다.
Airflow 웹 서버에서 /data 폴더를 사용할 수 없음
Cloud Composer 2 및 Cloud Composer 3에서 Airflow 웹 서버는 대부분 읽기 전용 구성요소이며 Cloud Composer는 data/
폴더를 이 구성요소에 동기화하지 않습니다.
경우에 따라 Airflow 웹 서버를 포함한 모든 Airflow 구성요소 간에 공통 파일을 공유해야 할 수 있습니다.
해결책:
웹 서버와 공유할 파일을 PYPI 모듈에 래핑하고 일반 PYPI 패키지로 설치합니다. PYPI 모듈이 환경에 설치된 후에는 파일이 Airflow 구성요소의 이미지에 추가되고 이를 사용할 수 있습니다.
파일을
plugins/
폴더에 추가합니다. 이 폴더는 Airflow 웹 서버와 동기화됩니다.
모니터링의 비연속 DAG 파싱 시간 및 DAG 모음 크기 다이어그램
모니터링 대시보드에 비연속 DAG 파싱 시간 및 DAG 모음 크기 다이어그램이 표시되면 DAG 파싱 시간이 길어(5분 초과) 문제가 있음을 나타냅니다.
해결책: 총 DAG 파싱 시간을 5분 미만으로 유지하는 것이 좋습니다. DAG 파싱 시간을 줄이려면 DAG 작성 가이드라인을 따르세요.
Cloud Logging에 Cloud Composer 구성요소 로그가 누락됨
Airflow 구성요소의 로그를 Cloud Logging에 업로드하는 환경 구성요소에 문제가 있습니다. 이 버그로 인해 Airflow 구성요소에 Cloud Composer 수준 로그가 누락되는 경우가 있습니다. Kubernetes 구성요소 수준에서는 동일한 로그를 계속 사용할 수 있습니다.
문제 발생 빈도: 매우 드물게 발생함
원인:
Cloud Logging에 로그를 업로드하는 Cloud Composer 구성요소의 잘못된 동작
해결책:
Cloud Composer팀은 이 문제를 영구적으로 해결하기 위해 노력하고 있습니다. 이 문제에 관한 자세한 내용은 Cloud Composer의 출시 노트를 참고하세요.
- 이 문제가 발생할 때의 임시 해결 방법은 로그가 누락된 구성요소를 다시 시작하는 Cloud Composer 작업을 시작하는 것입니다.
환경의 클러스터를 GKE Enterprise 버전으로 전환하는 기능은 지원되지 않습니다.
이 참고사항은 Cloud Composer 1 및 Cloud Composer 2에 적용됩니다.
Cloud Composer 환경의 GKE 클러스터는 GKE Standard Edition 내에 생성됩니다.
2024년 12월부터 Cloud Composer 서비스는 Enterprise Edition에서 클러스터가 있는 Cloud Composer 환경을 만드는 것을 지원하지 않습니다.
Cloud Composer 환경은 GKE Enterprise Edition으로 테스트되지 않았으며 결제 모델이 다릅니다.
GKE Standard 버전과 Enterprise 버전 간의 차이점과 관련된 추가 커뮤니케이션은 2025년 2분기에 제공될 예정입니다.