Google Cloud Composer Ошибка недействительного изображения KubernetesPodOperator - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь запустить docker изображение из частного GCR, используя KubernetesPodOperator в облаке Composer, но получаю следующую ошибку:

ERROR: Pod launching failed : Pod took too long to start

Я пробовал следующее до сих пор:

  1. Сначала я попытался увеличить "startup_timeout_seconds" , но это не помогло.

  2. Поиск в Composer созданных журналах кластера GKE выдается следующая ошибка:

    Не удалось применить тег изображения по умолчанию "docker pull us.gcr.io/my-proj-name/myimage- name : последний ": не удалось разобрать ссылку на изображение" docker потяните us.gcr.io/my-proj- name / myimage-name: latest ": неверный формат ссылки: InvalidImageName

Я попытался извлечь то же самое docker изображение на своем локальном компьютере из моей личной GCR, и оно работало нормально, не знаю, в чем проблема.

Эта ссылка https://kubernetes.io/docs/concepts/containers/images/#specifying -imagepullsecrets-on-a-pod сообщает мне, что

"Все модули в кластере будут иметь доступ для чтения к изображениям в этот реестр. Kubelet будет проходить аутентификацию в GCR с помощью учетной записи службы экземпляра Google. У учетной записи службы экземпляра будет https://www.googleapis.com/auth/devstorage.read_only, поэтому он может извлекать данные из GCR проекта, но не pu sh "

, что означает, что модуль должен иметь возможность извлекать изображение из GCR. К вашему сведению, я использую служебную учетную запись для предоставления моего composer env, и у него достаточно прав для чтения из корзины GCS.

Кроме того, я сделал следующие шаги, чтобы добавить секрет:

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')

Назовите его как секреты = [secret_file] внутри оператора KubernetesPodOperator в DAG

Я добавил image_pull_policy = «Всегда» в моей группе DAG, но не работает ...

Для справки: мой 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

Может ли кто-нибудь, пожалуйста, вести меня?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...