使用hostPath mount的谷歌云上的Kubernetes

时间:2018-01-29 19:00:52

标签: kubernetes

我一直在使用Minikube在我的本地笔记本电脑(Mac)上开发应用程序。我没有将代码和文件打包到docker镜像中,而是使用case when [Date] = max([Date]) over (Intersect([Entity],AllPrevious([Date]))) then [Date] end hostPath指向Mac上的代码/文件目录,这样我就可以避免每次重建图像。

现在我想用谷歌云做同样的迭代测试。什么是“挂载”我的本地代码/文件目录并在云上远程运行pod的最佳方法?我不想将代码打包到docker镜像中,推送到dockerhub,然后从gcloud上的dockerhub中拉出来。我的dockerhub是一个免费帐户,会公开我的代码。

3 个答案:

答案 0 :(得分:2)

你想要: 您希望将本地文件系统挂载到远程Kubernetes集群中。

<强>答案: 据我所知,你不能这样做。它可能在minikube中,因为您可以使用minikube挂载本地目录。

<强>解决方案: 我可以告诉你另一种方法。可能这不是你想要的。但它可以帮助你。

您使用git吗?如果您的答案是肯定的,并且如果您将文件保存到git存储库中没有问题,则以下过程将对您有所帮助。

spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /mypath
      name: git-volume
  volumes:
  - name: git-volume
    gitRepo:
      repository: "git@somewhere:me/my-git-repository.git"
      revision: "22f1d8406d464b0c0874075539c1f2e96c253775"

当您创建此Pod时,my-git-repository将被装入Pod容器内的目录/mypath

基本上,你可以告诉你的Pod从特定分支中提取这个git。所以每次,你改变你的代码,推动它。然后再次创建Pod。

阅读volumes/#gitrepo

答案 1 :(得分:1)

复制设置的最简单方法是使用存储桶作为挂载点。

对于您的设置,只需在需要从存储桶构建时将代码拉到本地主机。我假设您有一个构建脚本来执行配置部分。

但是根据其他评论,您可以使用gcr来托管配置文件并使用Deployment Manager进行构建。

答案 2 :(得分:1)

使用Google Cloud Registry的步骤:

构建Docker镜像

docker build -t <image-name>:<tag> <path-to-dockerfile>

GCloud容器注册表的标记

docker tag <image-name>:<tag> us.gcr.io/<gcloud-project-id>/<image-name>:<tag>

容器注册表

gcloud docker -- push us.gcr.io/<gcloud-project-id>/<image-name>:<tag>

您的规范将指向容器注册表路径:

spec:
  containers:
    - name: hello-world
      image: us.gcr.io/<gcloud-project-id>/<image-name>:<tag>
      ports:
        - name: http
          containerPort: 8080