2

Я работаю с платформой для обучения машинам Google, cloudML.Контейнер докеров для google cloudML на вычислительном двигателе - аутентификация для монтажного ковша

Большая картинка: Я пытаюсь выяснить, как самый лучший способ доставить их докеры environment в операторы вычислений Google, получить доступ к облачному API и моему хранилищу.

Начиная локально, у меня есть учетная запись службы настроена

C:\Program Files (x86)\Google\Cloud SDK>gcloud config list 
Your active configuration is: [service] 

[compute] 
region = us-central1 
zone = us-central1-a 
[core] 
account = [email protected] 
disable_usage_reporting = False 
project = api-project-773889352370 

загрузке экземпляра вычислений с Google контейнерной семьи изображения

gcloud compute instances create gci --image-family gci-stable --image-project google-containers --scopes [email protected]="https://www.googleapis.com/auth/cloud-platform" 

EDIT: нужно явно установить область для общения с cloudML.

Затем я могу SSH в этом случае (для отладки)

gcloud compute ssh [email protected] 

На вычислительном Например, я могу вытащить докер cloudML из ГКЛ и запустить его

docker pull gcr.io/cloud-datalab/datalab:local 
docker run -it --rm -p "127.0.0.1:8080:8080" \ 
    --entrypoint=/bin/bash \ 
    gcr.io/cloud-datalab/datalab:local 

Я могу подтвердить, у меня есть доступ к моему желаемому ковшу. Нет учетных данных проблем есть

[email protected]:/# gsutil ls gs://api-project-773889352370-ml 
gs://api-project-773889352370-ml/Ben/ 
gs://api-project-773889352370-ml/Cameras/ 
gs://api-project-773889352370-ml/MeerkatReader/ 
gs://api-project-773889352370-ml/Prediction/ 
gs://api-project-773889352370-ml/TrainingData/ 
gs://api-project-773889352370-ml/cloudmldist/ 

Но когда я пытаюсь установить ведре

[email protected]:~# gcsfuse api-project-773889352370-ml /mnt/gcs-bucket 
Using mount point: /mnt/gcs-bucket 
Opening GCS connection... 
Opening bucket... 
Mounting file system... 
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: running fusermount: exit status 1 

stderr: 
fusermount: failed to open /dev/fuse: Operation not permitted 

Должно быть, я должен активировать учетную запись службы внутри контейнера Докер? У меня были подобные (нерешенные вопросы elsewhere)

gcloud auth activate-service-account 

Я мог бы передать докер проверке полномочий .json файла, но я не уверен, где/если gcloud SSH передает эти файлы в моем случае?

У меня есть доступ к облачной платформе более широко, например, я могу отправить запрос в облачный API.

gcloud beta ml predict --model ${MODEL_NAME} --json-instances images/request.json > images/${outfile} 

, который преуспевает. Поэтому некоторые учетные данные передаются. Думаю, я мог бы передать его, чтобы вычислить движок, а затем от вычислительного механизма до экземпляра докера? Похоже, я не использую инструменты по назначению. Я думал, что gcloud справится с этим, как только я аутентифицируюсь локально.

+0

Редактирование: добавление явной области решает вторую проблему (подключение к cloudML), но не монтирование ведра внутри контейнера докера – bw4sz

+2

Это, скорее всего, проблема с плавким предохранителем, GCI и Docker. Вы пытаетесь запустить gcifuse внутри контейнера докеров или на виртуальной машине хоста? Одна из проблем может заключаться в том, что вы не запускали контейнер в привилегированном режиме. Попробуйте добавить флаг --privileged в команду docker. Я также предлагаю перефразировать вопрос, чтобы сосредоточиться на проблемах с предохранителями и GCI. Это поможет привлечь внимание экспертов. –

ответ

1

Это была проблема докеров, а не проблема с разрешениями gcloud. Докер должен запускаться как -привилегированный, чтобы плавкий предохранитель монтировался.