10

你知道是否可以将本地文件夹挂载到运行 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 地址。

你知道这是否可能吗?

4

2 回答 2

13

Kubernetes 卷

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

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

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

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

一种解决方案是使用开发工具,该工具允许您将本地文件夹的内容同步到 kubernetes pod 内的文件夹。例如,有ksynchttps ://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 实现最佳开发工作流程所需的内容,请随时提出问题。我们很乐意为此而努力。

于 2018-09-18T22:40:35.793 回答
2

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

于 2017-12-20T09:19:49.737 回答