【问题标题】:Setting an active gcloud account in docker container在 docker 容器中设置活动的 gcloud 帐户
【发布时间】:2019-07-27 22:57:29
【问题描述】:

目前我正在 GKE 上设置Kubeflow Pipeline。 目标是在 ML Engine 上启动一个训练作业,然后在 GKE 上提供它。

训练作业在 Docker 容器中启动。 (管道中的每一步都必须是一个容器。)

运行容器时出现以下错误:

ERROR: (gcloud.ml-engine.jobs.submit.training) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials, or if you have already logged in with a
different account:

  $ gcloud config set account ACCOUNT

to select an already authenticated account to use.

docker 容器通过following answer 中建议的服务帐户获取凭据。

FROM tensorflow/tensorflow:1.8.0-devel-gpu-py3

RUN apt-get update -y && apt-get install --no-install-recommends -y -q ca-certificates python-dev python-setuptools wget unzip git


# Components to run ML Engine job on cluster
RUN cd / && \
    wget -nv https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.zip && \
    unzip -qq google-cloud-sdk.zip -d tools && \
    rm google-cloud-sdk.zip && \
    tools/google-cloud-sdk/install.sh --usage-reporting=false \
        --path-update=false --bash-completion=false \
        --disable-installation-options && \
    tools/google-cloud-sdk/bin/gcloud -q components update \
        gcloud core gsutil && \
    tools/google-cloud-sdk/bin/gcloud config set component_manager/disable_update_check true && \
    touch /tools/google-cloud-sdk/lib/third_party/google.py

ENV PATH $PATH:/tools/node/bin:/tools/google-cloud-sdk/bin

RUN mkdir /workdir

COPY . /workdir

RUN export GOOGLE_APPLICATION_CREDENTIALS=/workdir/ml6-sandbox-cdc8cb4bcae2.json

ENTRYPOINT ["bash", "/workdir/ml-engine/train.sh"]

错误出现在我提交训练作业的 train.sh 中:

gcloud ml-engine jobs submit training $JOB_NAME \
    --job-dir $JOB_DIR \
    --runtime-version 1.8 \
    --python-version 3.5 \
    --module-name trainer.run_train \
    --package-path ./trainer \
    --region $REGION \
    --config=trainer/config.yaml \
    --stream-logs \
    -- \
    --data-dir $DATA_DIR \
    --version $VERSION

在我的 run_train.py 中,我获得了以下 Google 应用程序凭据:

os.environ[
        "GOOGLE_APPLICATION_CREDENTIALS"] = '/workdir/ml6-sandbox-cdc8cb4bcae2.json'

Train.sh 独立运行。

【问题讨论】:

    标签: docker google-cloud-platform dockerfile google-cloud-ml kubeflow


    【解决方案1】:

    using the client libraries时只需要设置GOOGLE_APPLICATION_CREDENTIALS环境变量。

    当您使用 gcloud CLI 时,请更改此行:

    RUN export GOOGLE_APPLICATION_CREDENTIALS=/workdir/ml6-sandbox-cdc8cb4bcae2.json

    到

    gcloud auth activate-service-account yourServiceAccount --key-file=/workdir/ml6-sandbox-cdc8cb4bcae2.json
    

    这会将您的服务帐户记录为gcloud 使用的活动帐户。

    此外,此服务帐户需要被授予正确的roles。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-04
      • 2021-03-19
      • 2018-05-22
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多