一尘不染

在GKE / Kubernetes中构建,推送和测试Docker映像的工作流程

docker

我正在开发Kubernetes服务,以便在Google Container Egine(GKE)中进行部署。直到最近,我还是在Google Cloud
Shell中构建了Docker映像,但是现在我已经达到配额限制,因为Cloud Shell运行所在的免费VM实例的总体负载显然因多个docker builds和pushes而过高。到目前为止,我的经验是,经过大约一个星期的持续工作,我遇到以下错误消息,并且必须等待大约两天才能使Cloud
Shell再次可用。

Service usage limits temporarily exceeded. Try connecting later.

我试图将我docker build和她转移push到可计费的机器(GCE VM实例或GKE群集节点)上,但是没有成功:

  • 在GCE VM实例上,显然未安装Docker。(也有道理。)

  • 在GKE集群节点上,已经安装了Docker,并且我可以(sudo)创建docker build映像,但是docker push(即使在之后gcloud docker)也失败了,并在几秒钟后(推送了几层之后)出现了以下错误消息denied: Access denied

那么,GKE内部的docker映像的可持续发展工作流程是什么?我是否应该将Docker安装在VM实例上(我希望不安装)或希望在其他地方安装docker builddocker push最终kubectl create我的服务又不会遇到工作量限制的限制等问题?(我使用MacBook作为本地开发计算机,如果可以帮助的话,也不想在那儿安装Docker。也就是说,我更喜欢在Cloud中构建Docker映像。)

UPDATE 如果我为VM实例配备Container-
VM映像
,如下所示,则可以docker build成功,但是docker push就像在GKE群集节点上之前(带有denied: Access denied)一样失败:

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

阅读 304

收藏
2020-06-17

共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如此配置)并进行配置(如此配置),因此总体而言,这有点麻烦。(此外,当群集的端点发生更改(例如重新创建之后)时,必须更新配置。)

但是我现在可以使用专用的VM实例(例如tmp)在Docker映像上进行开发工作。

UPDATE 添加了scope compute-rw,这对于处理GCE地址(例如在中gcloud compute addresses list)是必需的。

2020-06-17