0

Я пытаюсь запустить экземпляр виртуальной машины Google Compute Engine VM с контейнером, созданным при запуске машины. Пример этого вы найдете в этом разделе документации: Creating containers at time of instance creation.Как создать контейнеры в момент создания экземпляра из изображений моего контейнера проекта

Все отлично работает с данного примера:

apiVersion: v1 
kind: Pod 
metadata: 
    name: service 
spec: 
    containers: 
    - name: jillix-service 
     image: gcr.io/google-containers/busybox 
     command: ['nc', '-p', '8000', '-l', '-l', '-e', 'echo', 'hello world!'] 
     imagePullPolicy: Always 
     ports: 
     - containerPort: 8000 
      hostPort: 80 

, но когда я пытаюсь вместо того, чтобы использовать свой собственный контейнер изображения, то он не работает:

apiVersion: v1 
kind: Pod 
metadata: 
    name: service 
spec: 
    containers: 
    - name: jillix-service 
     image: gcr.io/sigma-cairn-99810/service 
     imagePullPolicy: Always 
     ports: 
     - containerPort: 8000 
      hostPort: 80 

В рабочем примере докер сообщает о следующих изображениях контейнеров на ВМ:

$ sudo docker images 
REPOSITORY       TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
gcr.io/google_containers/pause  0.8.0    2c40b0526b63  7 months ago  241.7 kB 
gcr.io/google-containers/busybox latest    4986bf8c1536  10 months ago  2.433 MB 

но когда я использую свои контейнер изображений, это отсутствует:

[email protected]:~$ sudo docker images 

СКЛАД TAG IMAGE ID СОЗДАНО ВИРТУАЛЬНЫЙ РАЗМЕР gcr.io/google_containers/pause 0.8.0 2c40b0526b63 7 месяцев назад 241,7 кБ

Таким образом, я предполагаю, что это причина, по которой мой контейнер не запускается. Но почему VM не загружает мое изображение gcr.io/sigma-cairn-99810/service?

Нужно ли что-либо делать с аутентификацией? (Когда я вручную войти в VM и gcloud docker pull, я пробужден gcloud auth login первого, то я могу тянуть мое изображение и docker run это нормально и все работает.)

ответ

1

ли контейнер-VM вы начали есть (по крайней мере) память «только для чтения»?

Вы можете проверить это с помощью:

curl -H 'Metadata-Flavor: Google' http://metadata.google.internal./computeMetadata/v1/instance/service-accounts/default/scopes 
+0

Если я запускаю это из самого или от того места, где я создаю виртуальную машину VM? Есть ли дополнительная точка после 'internal.'? Из VM я получаю 404 ответ HTML (с дополнительной точкой или без нее). На машине, которая создала виртуальную машину, она не распознает домен в URL ('metadata.google.internal'), что заставляет меня предположить, что я должен запустите его внутри машины. –

+0

Конечная точка является странной и делает ее полностью квалифицированным доменным именем (FQDN). Можете ли вы попробовать удалить 'default/scopes' с конца? Похоже, ваша виртуальная машина может не иметь никаких учетных данных. Можете ли вы добавить '--scopes = storage-ro' в команду gcloud для создания экземпляра? – mattmoor

+0

Да, у моего экземпляра нет учетных записей службы. Я добавил учетную запись службы « -compute @ developer.gserviceaccount.com' и предоставил ей область« https: // www.googleapis.com/rus/devororage.read_only'. Теперь изображение частного контейнера вытягивается во время создания изображения, и мой контейнер запускается с машиной. Благодаря! –