GCP Cloud Run: одноразовые задания и «Конфигурация <servicename>» не имеет готовой ревизии - PullRequest
0 голосов
/ 19 июня 2019

Я создал очень простое изображение, которое выполняет одноразовое задание (печатает несколько фиктивных журналов) и выходит следующим образом:

➣ $ cat Dockerfile
from alpine:latest

COPY entrypoint.sh /usr/local/bin/entrypoint

ENTRYPOINT ["entrypoint"]

CMD ["100"]

... где

➣ $ cat entrypoint.sh
#!/bin/sh

ITERATIONS=${1:-1000}
counter=1

while [ "$counter" -le "$ITERATIONS" ]; do
    echo "Executing and logging iteration no $counter"
      counter=$(($counter + 1))
done

При попытке выполнить развертывание в Cloud Run,

с помощью следующей команды:

gcloud бета-прогон развертывания logger --image = pkaramol / logging --cluster = pkaramol-cloudrun

происходит сбой со следующим сообщением, которое я не могу декодировать:

Имя службы (ведение журнала): logger Развертывание контейнера в облачной среде Запускать службу GKE [logger] в пространстве имен [по умолчанию] кластера [pkaramol-cloudrun]X Развертывание новой службы ... Конфигурация "регистратор" не имеет готовой версии.- Создание ревизии ... X Маршрутизация трафика ... Конфигурация "регистратор" не имеет готовой ревизии.Ошибка развертывания: ОШИБКА: (gcloud.beta.run.deploy) Конфигурация "регистратор" не имеет готовой ревизии.

... в некоторых других случаях это занимает вечно

Deploying container to Cloud Run on GKE service [mylogger] in namespace [default] of cluster [pkaramol-cloudrun]
⠶ Deploying new service... Configuration "mylogger" is waiting for a Revision
 to become ready.
  ⠶ Creating Revision...
  . Routing traffic...

Есть предложения?

1 Ответ

2 голосов
/ 19 июня 2019

Когда ваш контейнер запускается, он должен запустить программу, которая отвечает как HTTP-сервер через порт $ PORT (8080).

Вы можете запустить практически любое программное обеспечение в контейнере. Интерфейс - HTTP Запрос / Ответ. ЦП не работает между HTTP-запросами.

Ваш контейнер не соответствует требованиям Cloud Run и завершается, когда Cloud Run не обнаруживает ответ / неправильный ответ на порт $ PORT.

Прочтите этот документ, чтобы лучше понять требования к программному обеспечению:

Контракт времени выполнения контейнера

...