当前位置: 首页 > 面试题库 >

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

司寇瑾瑜
2023-03-14
问题内容

我正在开发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

问题答案:

该溶液由加入的范围的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)是必需的。



 类似资料:
  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个

  • 问题内容: 我已经创建了自己的docker文件(该文件运行一个显示“ helloworld”的shell脚本)。图像是“ hellodocker”,标签是“ mytag”,我现在拥有: 如何将Docker映像推送到dockerhub?我用。这给出了“无此类ID”错误。我想念什么?提前致谢。 问题答案: 您要么在构建时就将其标记为标签,例如 或创建绑定到同一图像的新标签,即

  • 推送引用存储库[gcr.io/my-project/backend]本地不存在带有标记的映像:gcr.io/my-project/backend 我的CloudBuild.yaml

  • 我正在尝试设置一个运行UbuntuLinux18.04作为docker主机的构建服务器。 主机有三个docker容器在运行——docker注册表——Gitlab服务器——Gitlab Runner(用于构建应用程序) 我希望Gitlab Runner容器使用nginx和编译的Angular代码构建docker映像,并将其推送到docker注册表。 我已经成功地设置了所有三个运行的容器,Gitlab

  • 在提交之前,我创建工作流来测试我的Python应用程序。问题是,如果测试失败,无论如何都会推送提交。如果测试不成功,我如何添加一个条件来避免推送? 下面是工作流文件. yml的结构。 `名称:Python应用程序on:push:branchs:[master]pull\u请求:branchs:[master] 工作:建造: 测试失败截图

  • 我正在尝试创建一个管道,使用JIB(通过Maven插件)创建docker图像,并将其推送到我的Gitlab注册表。 当我登录到docker注册表时,这在本地运行良好。 说我有一个。gitlab ci。yml看起来像: 现在我在管道被触发时得到一个异常 我假设我得到了这个错误,因为我还没有运行docker login-u[用户名]-p[密码/令牌] 我怎么会需要一个.gitlab-ci.yml,它使