前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >minikube刚踩过的那些坑——更新

minikube刚踩过的那些坑——更新

作者头像
nevermosby
发布2020-05-11 16:47:29
1K0
发布2020-05-11 16:47:29
举报
文章被收录于专栏:大卫李的技术分享

minikube使用virtualbox创建host only虚拟网络

用过docker machine的朋友,使用minikube后就能感觉到它其实跟docker machine很像,默认都是使用virtualbox作为虚拟化驱动,在创建虚拟机的同时,也会创建相关虚拟网络,一般情况下,都是创建host only的虚拟网络,mac下安装完virtualbox可以使用命令vboxmanager list hostonlyifs列出已经创建好的虚拟网络。

由于我之前通过vagrant创建过很多虚拟机,虽然都已经destroy了,但对应的虚拟网络会残留下来,结果在使用minikube start的时候,发生了以下的错误:

大概意思就是minikube需要创建并使用一个192.168.60.1网段的虚拟网络,但现在这个网段已经被占用了,必须删除原有创建的。乍一看觉得可以理解,就手动通过vboxmanager hostonlyif remove vboxnet0删除了所有原来存在的虚拟网络。

再次运行minikube start,不再报错了,成功创建了虚拟机。处于好奇,使用vboxmanager list hostonlyif查看了minikube创建的虚拟网络:

命令结果里显示的是创建了192.168.99.1网段的虚拟网络,那之前却因为192.168.60.1这个网段冲突导致初始化失败,感觉很奇怪。等看完源代码,再来给大家讲解。

2016-12-24更新:

关于为什么会因为192.168.60.1这个网段报错,通过查询源代码,找到了报错的那行代码:

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-12-24-%e4%b8%8b%e5%8d%881-16-35
%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-12-24-%e4%b8%8b%e5%8d%881-16-35
%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-12-24-%e4%b8%8b%e5%8d%881-16-35
%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-12-24-%e4%b8%8b%e5%8d%881-16-35

可以看到,事实上这段代码来自docker machine这个project,报错的方法是listHostOnlyAdapters,主要就是gets all host-only adapters in a map keyed by NetworkName。报错的那行的逻辑是,如果同一个network出现两次就报错,也就是说,我本地有两个virtualbox虚拟机使用了同样的network(我的case就是192.168.60.1),就会引起这个方法报错。而本身这个错其实不会影响minikube的创建,minikube默认的使用网段是192.168.99.1。所以是因为引用了其他库的代码导致了主项目发生了逻辑上不怎么合理的错误。

2016-12-24更新完毕

minikube使用的镜像都是gcr.io

在跑hello world pod的时候,一直没有运行起来,凭着经验判断,估计是镜像没拉下来。通过minikube ssh登录到虚拟机里,查看/var/log/docker.log发现:

代码语言:javascript
复制
time="2016-12-20T05:01:26.946388096Z" level=error msg="Handler for GET /v1.23/images/gcr.io/google_containers/echoserver:1.4/json returned error: No such image: gcr.io/google_containers/echoserver:1.4"

果不其然,没有成功pull完目标镜像,因为是gcr.io这个google旗下的镜像仓库,所以,你懂的。。。对于这种常见情况,我的处理套路是

  1. 找一台国外的vps,docker pull 目标镜像,save成tar包
  2. 就地起一个http file server,wget到本地
  3. 如果虚拟机和宿主机之间有共享文件夹,那就直接同步过去,如果没有,宿主机起一个http file server,从虚拟机里wget目标镜像的tar包
  4. 虚拟机里docker load目标tar包,完成。

一切正常后,看下docker ps结果:

k8s相关的容器起了不少啊! 下回给大家一一讲解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年12月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • minikube使用virtualbox创建host only虚拟网络
  • minikube使用的镜像都是gcr.io
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档