如何在Windows与WSL2之间共享Minikube实例及Docker、K8s上下文
问题解答
一、Minikube实例共享问题
- 为何Windows安装的Minikube在WSL中启动失败:
你在Windows侧初始化的Minikube,相关的SSH密钥、集群配置、证书文件都默认存储在Windows用户目录的.minikube文件夹下。WSL环境中的Minikube默认读取的是Linux用户目录下的~/.minikube配置,两边配置不匹配,密钥校验不通过,就会触发SSH握手失败的报错。 - 实现Windows和WSL共享Minikube的方法:
首先确保Docker Desktop已经开启WSL2集成,先在Windows侧正常启动Minikube,之后将Windows用户目录下的%USERPROFILE%\.minikube、%USERPROFILE%\.kube两个文件夹的内容,分别复制到WSL环境的~/.minikube、~/.kube路径下,再执行chmod 600 ~/.kube/config ~/.minikube/machines/minikube/id_rsa修改文件权限,避免Linux环境下的权限校验报错。配置完成后WSL侧无需再执行minikube start,直接就能用minikube、kubectl命令操作Windows侧启动的集群实例。
二、Docker上下文共享问题
- default上下文的作用:
default是Docker的默认上下文,指向当前环境默认的Docker daemon通信端点。Windows侧的default默认对接Windows本地的Docker命名管道,管理Windows容器或Docker Desktop的 runtime;WSL侧的default默认对接/var/run/docker.sock套接字,开启Docker Desktop WSL集成后,该套接字会自动对接Docker Desktop的 runtime,无需单独在WSL中安装Docker服务。 - desktop-linux上下文的作用:
该上下文是Docker Desktop自动生成的,专门用于对接WSL2环境下的Linux容器 runtime,在Windows侧使用该上下文可以直接管理运行在WSL2环境中的Linux容器,不需要切换到WSL终端操作。 - 充分利用WSL性能推荐的上下文:
WSL环境下直接使用默认的default上下文即可,该上下文走本地Unix套接字通信,没有跨系统调用开销,且容器镜像默认存储在WSL的ext4虚拟磁盘中,IO性能远高于存储在Windows NTFS文件系统的场景。
三、Kubernetes上下文共享问题
- docker-desktop上下文的作用:
该上下文是Docker Desktop内置Kubernetes集群的对接配置,你在Docker Desktop设置中开启「启用Kubernetes」选项后,就会自动生成该上下文,用于直接管理Docker Desktop自带的K8s集群。 - 是否可以安全删除docker-desktop上下文:
如果你日常只使用Minikube作为本地K8s环境,完全不使用Docker Desktop内置的K8s集群,可以安全删除该上下文,不会对Minikube的正常使用造成任何影响。如果后续需要使用Docker Desktop内置K8s,重启Docker Desktop就会自动重新生成该上下文。
内容的提问来源于stack exchange,提问作者Exegesis
相关产品推荐
相关产品推荐

