Извлечение изображений из частного реестра контейнеров Google с помощью kubeflow на minikube

У нас возникли проблемы с предоставлением контейнеру в конвейере, загруженном в Kubeflow, доступа к частному пользовательскому образу докера, хранящемуся в реестре контейнеров Google. Мы запускаем kubeflow поверх кластера kubernetes, запущенного на minikube. Может ли кто-нибудь помочь нам понять, как добавить токен доступа / учетную запись службы в развертывание Kubeflow? Мы прочитали пару документов, которые достигают этого в настраиваемом развертывании Kubernetes, но не в развертывании Kubeflow.

Ошибка, которую мы получаем при запуске конвейера в Kubeflow: Этот шаг находится в состоянии ожидания с этим сообщением: ImagePullBackOff: Back-off pulling image

Это код конвейера, вызывающий изображение. введите здесь описание изображения

Спасибо!!


person Federico K    schedule 17.12.2019    source источник
comment
На странице как спросить прямо говорится, что не следует использовать скриншоты для кода, независимо от того, что у вас есть переменные, объявленные, что мы не можем видеть (dsl и gcp), поэтому никто не может догадаться, как вам помочь   -  person mdaniel    schedule 17.12.2019
comment
Взгляните на k8s docs по добавлению частного репозитория докеров или эту статью в блоге и дайте мне знать, если вы сочтете ее полезной.   -  person Matt    schedule 17.12.2019


Ответы (1)


Это проблемы могут возникнуть в некоторых случаях, например:

  • Ваша настройка kubeflow (кластер Kubernetes) и GCR находятся в другом проекте

  • Нет секрета GCR для учетной записи службы ml-pipeline, которая отвечает за запуск конвейера. (вы можете увидеть этот kubectl --namespace = kubeflow get serviceaccount)

В вашем случае я думаю, что это второй сценарий. Хотя следующий путь будет работать в обоих сценариях.

  1. Создайте service_account.json с достаточным разрешением (GCR требуется разрешение на хранилище, поэтому укажите «Администратор хранилища») с помощью консоли GCP.
Select “API & Services” > “Credentials”Select “Create credentials” > “Services Account Key” > “Create New Services Account”

  1. Добавьте Kubernetes Secret в Kubernetes Cluster для доступа к GCR
kubectl create secret docker-registry $SECRETNAME \       
--docker-server=https://gcr.io \                          
--docker-username=_json_key \                             
[email protected] \                          
--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 \                             
[email protected] \                          
--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"}]}'
person Akash Desarda    schedule 27.12.2019