docker - Google Cloud Composer KubernetesPodOperator InvalidImage 错误
问题描述
我正在尝试使用 Cloud Composer 中的 KubernetesPodOperator 从私有 GCR 运行 docker 映像,但出现以下错误:
ERROR: Pod launching failed : Pod took too long to start
到目前为止,我已经尝试了以下方法:
起初我尝试增加“startup_timeout_seconds”,但没有帮助。
查看 Composer 创建的 GKE 集群日志给了我以下错误:
无法应用默认图像标签“docker pull us.gcr.io/my-proj-name/myimage-name:latest”:无法解析图像引用“docker pull us.gcr.io/my-proj-name/myimage -name:latest":无效的参考格式:InvalidImageName
我尝试从我的私人 GCR 中提取本地计算机上的相同 docker 映像,它工作正常,不确定问题出在哪里。
这个链接https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod告诉我
“集群中的所有 pod 都可以读取此注册表中的图像。kubelet 将使用实例的 Google 服务帐户向 GCR 进行身份验证。实例上的服务帐户将具有https://www.googleapis.com/auth/ devstorage.read_only,因此它可以从项目的 GCR 中提取,但不能推送”
这意味着 pod 应该能够从 GCR 中提取图像。仅供参考,我正在使用服务帐户来配置我的作曲家环境,并且它具有从 GCS 存储桶读取的足够权限。
另外,我执行了以下步骤来添加 secret :
gcloud container clusters get-credentials <cluster_name>
kubectl create secret generic gc-storage-rw-key --from-file=key.json=<path_to_serv_accnt_key>
secret_file = secret.Secret( deploy_type='volume', deploy_target='/tmp/secrets/google', secret='gc-storage-rw-key', key='<path of serv acct key file>.json')
在 DAG 中的 KubernetesPodOperator 运算符中将其称为 secrets=[secret_file]
我也在我的 DAG 中添加了 image_pull_policy='Always' 但没有工作......
供参考:我的 CircleCI config.yml 包含以下内容
- run: echo ${GOOGLE_AUTH} > ${HOME}/gcp-key.json
- run: docker build --rm=false -t us.gcr.io/${GCP_PROJECT}/${IMAGE_NAME}:latest .
- run: gcloud auth activate-service-account --key-file ${HOME}/gcp-key.json
- run: gcloud --quiet config set project ${GCP_PROJECT}
- run: gcloud docker -- push us.gcr.io/${GCP_PROJECT}/${IMAGE_NAME}:latest
有人可以指导我吗?
解决方案
推荐阅读
- google-cloud-platform - 我想将云作曲家创建的气流网络服务器的时区从 utc 更改为 jst(亚洲/东京)
- flutter - Flutter:如何在http调用期间令牌过期时刷新令牌?
- javascript - 刷新后如何保持下拉选择
- python - Python 冒泡排序仅在大数时中断
- javascript - 使用 aws-sdk 在 s3 中托管静态网站
- c# - 是否可以使用`task.Id`检查任务是否完成?
- reactjs - 无法在反应手风琴中映射对象数组
- typescript - 训练期间出现错误:新值的形状和以前的值必须匹配
- python - 有没有办法在 Python 中并行化一个循环以进行集成学习?
- python - 如何在熊猫中删除多列?