Я пытаюсь запустить docker изображение из частного GCR, используя KubernetesPodOperator в облаке Composer, но получаю следующую ошибку:
ERROR: Pod launching failed : Pod took too long to start
Я пробовал следующее до сих пор:
Сначала я попытался увеличить "startup_timeout_seconds" , но это не помогло.
Поиск в 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
Может ли кто-нибудь, пожалуйста, вести меня?