0

我们无法让上传到 Kubeflow 的管道中的容器访问存储在 google 容器注册表中的私有自定义 docker 映像。我们在 minikube 上运行的 kubernetes 集群之上运行 kubeflow。有人可以帮助我们了解如何将访问令牌/服务帐户添加到 Kubeflow 部署中吗?我们已经阅读了一些文档,它们在自定义 Kubernetes 部署上实现了这一点,但在 Kubeflow 部署上却没有。

我们在 Kubeflow 上运行管道时遇到的错误是: 此步骤处于待处理状态,并显示以下消息:ImagePullBackOff: Back-off pull image

这是调用图像的管道代码。 在此处输入图像描述

谢谢!!

4

1 回答 1

1

在某些情况下可能会出现此问题,例如:

  • 您的 kubeflow 设置(Kubernetes 集群)和 GCR 在不同的项目中

  • 负责运行管道的 ml-pipeline 服务帐户没有 GCR 机密。(你可以看到这个 kubectl --namespace=kubeflow get serviceaccount)

在你的情况下,我认为这是第二种情况。尽管以下路径适用于这两种情况。

  1. 使用 GCP 控制台创建具有足够权限的 service_account.json(GCR 需要存储权限,因此请提供“存储管理员”)
Select “API & Services” > “Credentials”Select “Create credentials” > “Services Account Key” > “Create New Services Account”

  1. 在 Kubernetes 集群中添加 Kubernetes Secret 以访问 GCR
kubectl create secret docker-registry $SECRETNAME \       
--docker-server=https://gcr.io \                          
--docker-username=_json_key \                             
--docker-email=user@example.com \                          
--docker-password="$(cat ./service_account.json.json)"
#username should be _json_key
  • 以上方法适用于默认服务帐户。但是在 Kufelow 命名空间中修补它
kubectl --namespace=kubeflow create secret docker-registry $SECRETNAME \  
--docker-server=https://gcr.io \                          
--docker-username=_json_key \                             
--docker-email=user@example.com \                          
--docker-password="$(cat ./service_account.json.json)"
#username should be _json_key
  1. 使用相应的服务帐户修补 GCR 机密
# For Kubeflow specific problem path pipeline-runner serviceaccount
kubectl --namespace=kubeflow patch serviceaccount pipeline-runner -p '{"imagePullSecrets": [{"name": "$SECRETNAME"}]}'
于 2019-12-27T11:27:07.797 回答