0

关于这个主题有很多问题,但不是我所追求的具体信息。

主机操作系统是 Mac,最近由于许可变更不得不卸载 Docker Desktop。因此,我们改为使用 minikube,它与 VirtualBox 驱动程序一起工作得很好。

但理想情况下,我们希望使用 hyperkit 驱动程序,因为它比 virtualbox 需要更少的资源,并且(据说)更快。这一切都很好,直到我们连接到我们的 VPN(使用 cisco anyconnect),然后 minikube VM 内的所有出站网络都停止工作。例如

k8> minikube ssh "traceroute 8.8.8.8"
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 46 byte packets
 1  host.minikube.internal (192.168.64.1)  0.154 ms  0.181 ms  0.151 ms
 2  *  *  *

其他一切都很好,通过入口的入站网络都很好。maven-docker-plugin 正在愉快地使用 minikube docker 守护进程创建图像。只是没有出境。

所以我想我会尝试使用 VPNKit,因为我已经读过它旨在解决这个问题。但是找不到很多详细的文档,所以很挣扎。

我们尝试用最少的配置启动 VPNKit:

vpnkit --ethernet /tmp/vpkit-ethernet.socket --debug

然后尝试启动 minikube,但失败:

k8> minikube delete
  Deleting "minikube" in hyperkit ...
  Removed all traces of the "minikube" cluster.
k8> minikube start --driver=hyperkit --hyperkit-vpnkit-sock=/tmp/vpnkit-ethernet.socket
  minikube v1.25.1 on Darwin 10.15.7
✨  Using the hyperkit driver based on user configuration
  Starting control plane node minikube in cluster minikube
  Creating hyperkit VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
  Deleting "minikube" in hyperkit ...
  StartHost failed, but will try again: creating host: create: Error creating machine: Error in driver during machine creation: hyperkit crashed! command line:
  hyperkit loglevel=3 console=ttyS0 console=tty0 noembed nomodeset norestore waitusb=10 systemd.legacy_systemd_cgroup_controller=yes random.trust_cpu=on hw_rng_model=virtio base host=minikube
  Creating hyperkit VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
  Failed to start hyperkit VM. Running "minikube delete" may fix it: creating host: create: Error creating machine: Error in driver during machine creation: hyperkit crashed! command line:
  hyperkit loglevel=3 console=ttyS0 console=tty0 noembed nomodeset norestore waitusb=10 systemd.legacy_systemd_cgroup_controller=yes random.trust_cpu=on hw_rng_model=virtio base host=minikube

❌  Exiting due to PR_HYPERKIT_CRASHED: Failed to start host: creating host: create: Error creating machine: Error in driver during machine creation: hyperkit crashed! command line:
  hyperkit loglevel=3 console=ttyS0 console=tty0 noembed nomodeset norestore waitusb=10 systemd.legacy_systemd_cgroup_controller=yes random.trust_cpu=on hw_rng_model=virtio base host=minikube
  Suggestion: Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver
  Related issues:
    ▪ https://github.com/kubernetes/minikube/issues/6079
    ▪ https://github.com/kubernetes/minikube/issues/5780

在 vpnkit 日志中,我们看到:

time="2022-02-14T06:07:57Z" level=debug msg="usernet: accepted vmnet connection"
time="2022-02-14T06:07:57Z" level=warning msg="Uwt: Pipe.listen: rejected ethernet connection: EOF"
time="2022-02-14T06:08:07Z" level=debug msg="usernet: accepted vmnet connection"
time="2022-02-14T06:08:07Z" level=warning msg="Uwt: Pipe.listen: rejected ethernet connection: EOF"

所以有点暗示我开始 vpnkit 的方式不正确。玩过 IP args 以确保所有匹配,但无济于事。

我的猜测是--ethernet=patharg 不是正确的套接字类型。我也看到了,--vsock-path=path但指定这似乎不会像创建套接字文件那样--ethernet=path。我必须以其他方式创建它吗?

或者我需要处理其他配置选项。例如,我认为--gateway-forwards=path可以提供帮助,但找不到有关文件格式或内容的文档。

所以,我猜有两个主要问题:

  • 我们正在尝试的东西是否可能?这是正确的方法吗?还是比简单地运行vpnkit命令复杂得多?
  • 如果我们走在正确的轨道上,有没有人有这方面的经验,并且知道如何为 minikube+vpnkit+hyperkit 设置套接字?需要什么参数、配置或其他设置?

请注意:--hyperkit-vpnkit-sock=auto对我们来说不是一个选项,因为我们没有安装 docker,所以 docker 套接字文件不存在。

以防万一它是一个版本问题:

k8> minikube version
minikube version: v1.25.1
commit: 3e64b11ed75e56e4898ea85f96b2e4af0301f43d
k8> vpnkit --version
854498c13b1884d4a48d84f3569eb34681af2126
k8> hyperkit -v
hyperkit: 0.20200908

Homepage: https://github.com/docker/hyperkit
License: BSD
4

0 回答 0