【问题标题】:Is it possible to mount a local computer folder to Kubernetes for development, like docker run -v是否可以将本地计算机文件夹挂载到 Kubernetes 进行开发,例如 docker run -v
【发布时间】:2017-12-19 20:02:19
【问题描述】:

你知道是否可以将本地文件夹挂载到运行 Kubernetes 的容器上。

就像docker run -it -v .:/dev some-image bash一样,我在本地机器上执行此操作,然后从 VS Code 远程调试到容器中。

更新:这可能是一个解决方案:telepresence 链接:https://kubernetes.io/docs/tasks/debug-application-cluster/local-debugging/

您知道可以将本地计算机挂载到 Kubernetes。这个容器应该可以访问 Cassandra IP 地址。

你知道有没有可能?

【问题讨论】:

标签: kubernetes rook-storage


【解决方案1】:

Kubernetes 卷

使用 hostPath 将是一个解决方案:https://kubernetes.io/docs/concepts/storage/volumes/#hostpath

但是,只有当您的集群与挂载的文件夹在同一台机器上运行时,它才会起作用。

另一种但可能有点过于强大的方法是使用分布式或并行文件系统并将其挂载到您的容器中以及将其挂载到本地主机上。 CephFS 就是一个例子,它允许多读写挂载。你可以用 rook 启动一个 ceph 集群:https://github.com/rook/rook

具有文件同步功能的 Kubernetes 原生开发工具

一种解决方案是使用开发工具,该工具允许您将本地文件夹的内容同步到 kubernetes pod 内的文件夹。例如,ksync:https://github.com/vapor-ware/ksync

我已经测试过 ksync 和许多 kubernetes 原生开发工具(例如 Telepresence、skaffold、draft),但我发现它们很难配置并且使用起来很耗时。这就是为什么我与同事一起创建了一个名为 DevSpace 的开源项目:https://github.com/loft-sh/devspace

它允许您在本地文件夹和在 k8s pod 中运行的容器内的文件夹之间配置实时双向同步。它是唯一能够让您使用 热重载 工具(例如 nodemon for nodejs)的工具。它适用于卷以及临时/非持久文件夹,并允许您直接进入类似于 kubectl exec 的容器等等。 它适用于 minikube 和任何其他自托管或基于云的 kubernetes 集群。

如果这对您有帮助,请告诉我,如果您遗漏了使用 Kubernetes 实现最佳开发工作流程所需的内容,请随时提出问题。我们很乐意为此努力。

【讨论】:

  • 对我来说,devspace 也很难配置并且使用起来很耗时。没有理想的解决方案。
  • 开发空间太棒了!
  • devspace 很酷,但不能正确处理符号链接,这在使用 link-module-alias 时很烦人,但 ksync 做得很好
【解决方案2】:

只要我们谈论像docker -v 和hostPath 这样的卷类型就可以解决问题。但这意味着您需要将要使用的内容存储在 Pod 将运行的节点上。这意味着在 GKE 的情况下,这意味着代码需要存在于谷歌计算节点上,而不是您的工作站上。如果您为本地开发人员配置了本地 k8s 集群(minikube、kubeadm...),那么也可以将其设置为工作。

【讨论】:

  • 你见过或使用过网真吗?
猜你喜欢
  • 2019-07-20
  • 2011-09-05
  • 1970-01-01
  • 2018-03-25
  • 2021-09-21
  • 2021-10-30
  • 1970-01-01
  • 2020-12-28
  • 2021-11-21
相关资源
最近更新 更多