【问题标题】:VSCode devcontainer connect to kubernetes cluster on vmVSCode devcontainer 连接到 vm 上的 kubernetes 集群
【发布时间】:2020-01-22 23:50:10
【问题描述】:

终极目标

从 dotnet/core/sdk devcontainer(使用 VSCode 远程容器),调试在我的主机的另一个 vm 上托管的 kubernetes 集群中运行的 .NET Core 应用程序。

当前设置

  • 通过 Hyper-V 运行的适用于 Windows 的 Docker 桌面
    • 默认 DockerNAT 网络适配器
  • 在同一 Hyper-V 主机上运行的 Ubuntu VM(多通道)
    • 在此 ubuntu 实例上运行的 microk8s 集群
    • 默认的“默认交换机”网络适配器

错误

  • 当我尝试通过主机名从 docker 容器 ping ubuntu vm 时,IP 已正确解析,但我收到错误“目标主机无法访问”
  • 当我尝试 curl 集群 api 时,我收到错误“No route to host”

【问题讨论】:

  • 所以你有一台运行 Windows(在虚拟环境中)和虚拟 Ubuntu 的机器,它又运行 micro k8s。我当时是对的吗?您是否能够从 docker 容器 ping 例如 8.8.8.8 ?你能从 Ubuntu 访问 Cluster aoi 吗?
  • 我的主机是 Windows 10 Pro,运行 Docker for Desktop(Linux 容器)和一个虚拟 Ubuntu。 Bock docker 和 ubuntu 通过 Hyper-V 运行。 microk8s 集群在虚拟 Ubuntu 上运行。从 docker 容器中,我可以 ping 8.8.8.8 和 google.com 没问题。从 ubuntu vm,我可以访问集群 api。从 docker 容器中,我可以解析 ubuntu 主机名(microk8s.mshome.net),但我得到“Destination Host Unreachable”。
  • 这看起来像是 Docker 和 Ubuntu 之间的网络问题。您是否尝试过创建单个 NAT 并将 VM 附加到它,如 docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/… 中所述?
  • 我已经将两个虚拟机都放在了 Docker 的默认 DockerNAT 网络上,但这不起作用。我会尝试您的建议,但由于未知原因,该问题不再可重现,正如我将在“解决方案”中解释的那样。

标签: kubernetes hyper-v vscode-debugger vscode-remote


【解决方案1】:

我把这个问题搁置了一个星期,在那段时间里主机已经重启了多次,但没有对网络、Hyper-V 设置等进行进一步的修改。

今天启动 Ubuntu VM,IP 从以前的 172.?.?.? 改变了。到 192.168.92.x 。我不知道是什么导致了这种变化。

现在,Docker 桌面容器可以 ping Ubuntu VM 并 curl microk8s /api 端点。在我可以重现该问题之前,我会将这个问题标记为“已解决”并重新打开并在问题再次出现时尝试 Nick 推荐的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2016-05-23
    • 2019-12-30
    • 1970-01-01
    • 2020-06-25
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多