我正在开发Kubernetes服务,以便在Google Container Egine(GKE)中进行部署。直到最近,我还是在Google Cloud Shell中构建了Docker映像,但是现在我已经达到配额限制,因为Cloud Shell运行所在的免费VM实例的总体负载显然因多个docker builds和pushes而过高。到目前为止,我的经验是,经过大约一个星期的持续工作,我遇到以下错误消息,并且必须等待大约两天才能使Cloud Shell再次可用。
docker build
push
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
sudo
docker push
gcloud docker
denied: Access denied
那么,GKE内部的docker映像的可持续发展工作流程是什么?我是否应该将Docker安装在VM实例上(我希望不安装)或希望在其他地方安装docker build,docker push最终kubectl create我的服务又不会遇到工作量限制的限制等问题?(我使用MacBook作为本地开发计算机,如果可以帮助的话,也不想在那儿安装Docker。也就是说,我更喜欢在Cloud中构建Docker映像。)
kubectl create
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
该溶液由加入的范围的storage-rw,以实例(否则storage-r默认为适用):
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(如此配置)并进行配置(如此配置),因此总体而言,这有点麻烦。(此外,当群集的端点发生更改(例如重新创建之后)时,必须更新配置。)
kubectl
但是我现在可以使用专用的VM实例(例如tmp)在Docker映像上进行开发工作。
tmp
UPDATE 添加了scope compute-rw,这对于处理GCE地址(例如在中gcloud compute addresses list)是必需的。
compute-rw
gcloud compute addresses list