Рабочий процесс создания, отправки и тестирования образов Docker внутри GKE/Kubernetes.

Я разрабатываю сервис Kubernetes для развертывания в Google Container Egine (GKE). До недавнего времени я создавал образы Docker в Google Cloud Shell, но теперь я достиг пределов квоты, потому что общая нагрузка на бесплатный экземпляр виртуальной машины, на котором работает Cloud Shell, очевидно, слишком высока из-за нескольких docker builds и pushes. По моему опыту, примерно через неделю непрерывной работы я столкнулся со следующим сообщение об ошибке, и придется подождать около двух дней, прежде чем Cloud Shell снова станет доступным.

Service usage limits temporarily exceeded. Try connecting later.

Я попытался переместить свои docker builds и pushes на оплачиваемые машины (экземпляры виртуальной машины GCE или узлы кластера GKE), но безуспешно:

  • На экземпляре виртуальной машины GCE Docker, по-видимому, не установлен. (Тоже имеет смысл.)

  • На узле кластера GKE установлен Docker, и я могу (sudo) docker build создать свой образ, но docker push (даже после gcloud docker) происходит сбой со следующим сообщение об ошибке через несколько секунд (после нажатия нескольких слоев): denied: Access denied

Так что же представляет собой рабочий процесс устойчивого развития образов докеров внутри GKE? Должен ли я установить Docker на экземпляр виртуальной машины (надеюсь, что нет) или где еще я могу надеяться docker build, docker push и, в конечном счете, kubectl create мой сервис, не сталкиваясь с ограничениями квот, останавливающими работу, и т. д.? (Я использую MacBook в качестве локальной машины для разработки и предпочел бы не устанавливать там Docker, если могу помочь. То есть я предпочитаю создавать образы Docker в облаке.)

ОБНОВЛЕНИЕ Если я оборудую экземпляр ВМ контейнером -VM image:

gcloud compute images list \
  --project google-containers \
  --no-standard-images
gcloud compute instances create tmp \
  --machine-type g1-small 
  --image container-vm-v20160321 \
  --image-project google-containers
  --zone europe-west1-d



Ответы (1)


решение заключалось в добавлении области действия storage-rw к экземпляру (в противном случае по умолчанию применяется storage-r):

gcloud compute images list \
  --project google-containers \
  --no-standard-images
gcloud compute instances create tmp \
  --machine-type g1-small \
  --image container-vm-v20160321 \
  --image-project google-containers \
  --zone europe-west1-d \
  --scopes compute-rw,storage-rw

Кроме того, мне также пришлось установить kubectl (вот так) и настроить его ( вот так), так что в целом это довольно хлопотно. (Также конфигурацию необходимо будет обновить при изменении конечной точки кластера, например, после воссоздания.)

Но теперь я могу использовать выделенный экземпляр виртуальной машины (например, tmp) для разработки образов Docker.

ОБНОВЛЕНИЕ Добавлена ​​область compute-rw, которая необходима, например. для управления адресами GCE (например, в gcloud compute addresses list).

person Drux    schedule 16.08.2016