0

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

Service usage limits temporarily exceeded. Try connecting later.

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

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

  • 在 GKE 集群节点上,安装了 Docker,我可以(sudodocker build我的图像,但docker push(即使在之后)几秒钟后(在推送几层之后gcloud docker)失败并显示以下错误消息:denied: Access denied

那么 GKE 内部 docker 镜像的可持续开发工作流程是什么?我应该在 VM 实例上安装 Docker(我希望不是)还是我希望在其他地方安装 Docker docker builddocker push最终kubectl create我的服务不会遇到工作停滞配额限制等?(我使用 MacBook 作为本地开发机器,如果我能提供帮助,我也不希望在那里安装 Docker。也就是说,我更喜欢在云中构建 docker 映像。)

更新如果我按如下方式为 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
4

1 回答 1

0

解决方案包括将范围添加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

此外,我还必须安装kubectllike so)和配置它(like so),所以总的来说这很麻烦。(此外,当集群的端点发生变化时,例如在重新创建之后,必须更新配置。)

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

更新增加了 scope compute-rw,这对于例如操作 GCE 地址是必要的(例如在 中gcloud compute addresses list)。

于 2016-08-16T10:30:01.417 回答