我们正在使用版本composer-1.8.0-airflow-1.10.3
的 Google Cloud Composer 在GCP上调度管道。
最近,当我们需要向环境中添加一些新的Python软件包时(无论是使用Terraform还是Cloud Console),我们总是收到奇怪的错误消息,但是Cloud Composer仍然启动并且未安装新软件包。
Cloud Composer UI上显示的错误消息:
找不到资源(resource = europe-west1-xxxxxxxxxxxxxxxxxxxx-composer-backend-sub-3fb66162-3xxxd-4f43-ba47-xxxxxx)。,Http错误状态代码:400 Http错误消息:错误请求其他错误:{“ originalResponse“:” {\“ paths \”:[\“ / apis \”,\“ / apis / \”,\“ / apis / apiextensions.k8s.io \”,\“ / apis / apiextensions.k8s.io / v1beta1 \“,\” / healthz \“,\” / healthz / etcd \“,\” / healthz / log \“,\” / healthz / ping \“,\” / healthz / poststarthook / crd-informer-已同步\“,\” / healthz / poststarthook / generic-apiserver-start-informers \“,\” / healthz / poststarthook / start-apiextensions-controllers \“,\” / healthz / poststarthook / start-apiextensions-informers \“ ,\“ / metrics \”,\“ / openapi / v2 \”,\“ / version \”]}“,”原因“:”类型提供程序'europe-west1-的描述符URL'https://35.187.59.32/swaggerapi/apis/batch/v1'无法获取xxxxxxxxxxxxxxxxxxxx-addons-job-typer'。“},Http错误状态代码:400 Http错误消息:错误请求其他错误:{” ResourceType“:” gcp-types / storage-v1:storage.objects.list “,” ResourceErrorCode“:” 403“,” ResourceErrorMessage“:{” code“:403,”错误s“:[{” domain“:” global“,” message“:” xxxxxxxx@cloudservices.gserviceaccount.com没有对composer-unlistable的storage.objects.list访问权限。“,”原因“:”禁止“}] ,“ message”:“ xxxxxxxx@cloudservices.gserviceaccount.com没有对composer-unlistable的storage.objects.list访问权限。”,“ statusMessage”:“禁止”,“ requestPath”:“ https://www.googleapis.com/storage/v1/b/composer-unlistable/o”,“ httpMethod“:” GET“,”建议“:”考虑授予xxxxxxxx@cloudservices.gserviceaccount.com的权限“}}
查看 Stackdriver日志记录时,我们会发现与该环境更新相关的错误消息:
状态:{ 码:9
消息:“ FAILED_PRECONDITION”
}
关于导致此行为的原因以及如何解决的任何想法?
编辑:
请注意,xxxxxxxx@cloudservices.gserviceaccount.com
是Google用于内部通信的服务帐户,无法在IAM页面上管理(请参阅Service Account Documentation)。
此外,我们注意到有时添加新程序包可以正常工作。但是,下次我们尝试添加另一个软件包时,它会失败,并显示与上述相同的错误消息。
答案 0 :(得分:1)
我能够通过手动将Composer环境(composer-1.8.2-airflow-1.10.3)的GKE群集升级到1.14.8-gke.12来重现此错误:
如documentation中所述,不使用私有IP的Composer环境不应将GKE升级到1.14+。这些版本具有deprecated Swagger in favor of OpenAPI。未来的Cloud Composer版本将创建使用OpenAPI的集群,并将能够将现有环境升级到GKE 1.14及更高版本。
当前,OpenAPI仅用于私有IP环境,因此,那里没有问题。
不幸的是,无法降级GKE群集,因此唯一的解决方案是删除并重新创建环境。
答案 1 :(得分:0)
类似服务xxxxxxxx@cloudservices.gserviceaccount.com
的帐户没有正确的权限。在“ IAM”部分中,将“存储对象查看器”角色添加到该服务帐户。