windows 安装 minikube 的正确姿势
🎓 你将学到什么?
Windows 下安装
minikube
的详细步骤在安装过程中可能遇到的问题及其解决方案
来,今天我们来折腾一下在 Windows 操作系统安装 minikube
🙋 蛋尼尔:minikuke 是什么东西?
先来看下官方是怎么介绍的:
Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a Virtual Machine (VM) on your laptop for users looking to try out Kubernetes or develop with it day-to-day.
简单讲就是一个工具,这个工具让你可以在本地(一般是出于学习或实验的目的)跑一个只有单节点(node)的 k8s
集群
🙋 蛋尼尔:那 k8s
又是什么?
Oh my god!也许这篇文章并不适合你。
丢个链接自己先去了解下吧:https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/
在 windows 上,建议的安装方式是:在虚拟机上跑一个 Linux(如 CentOS),然后在 Linux 上安装 minikube。
🙋 蛋尼尔:这是为什么呢?
第一,这种方式可以导出虚拟机,就可以方便地共享你的成果了。
第二,用这种隔离的方式,就不会“污染”到操作系统了。
注意:需要满足以下前提条件,如果不满足就放弃挣扎吧:
[ ] Windows 8 或以上版本
[ ] 支持虚拟化
🙋 蛋尼尔:如何知道我的机器是否支持虚拟化呢?
打开命令行,运行 systeminfo
,输出以下这样的就 OK:
OK,让我们愉快地开始吧。
1. 在虚拟机上安装 CentOS
VirtualBox 下载地址:https://www.virtualbox.org/wiki/Downloads
CentOS 下载地址:https://www.centos.org/download/
以下演示安装的是 CentOS 7.6 版本。这是为什么呢?因为我本机已经下载了这个版本了啊
1.1 创建虚拟机
选择 Type:Linux 和 Version:Red Hat (64-bit)
接下来设置内存,硬盘大小
默认选项即可,不用修改。硬盘给个 15G 或以上吧,不要太吝啬啦。
1.2 装盘,设置网络,调整 CPU 数量
将你下载的 CentOS ISO 文件装盘
设置虚拟机的网络为
Brided Adapter
🙋 蛋尼尔:这是为什么呢?为什么不选默认的 NAT
这个问题问得好。简单看下 NAT
和 Bridged Adapter
的区别
NAT:虚拟机没有独立 IP,所以虚拟机可以访问主机,但主机无法访问虚拟机
Bridged Adapter:虚拟机有独立 IP,就像同处局域网中的其它计算机一样,主机和虚拟机之间可以互相访问
我们的场景就是希望可以在主机可以访问虚拟机中的服务,比如 k8s dashboard,所以选择 Bridged Adapter
将 CPU 数量设置为 2 个或以上
🙋 蛋尼尔:1 个不行吗?
别急,待会在适当的时间会解释滴。
1.3 安装 CentOS
点击 Start
启动虚拟机。
基本按照界面的指示一步一步操作即可。以下就一些需要进行稍微设置的步骤进行说明。
当你看到以下界面,稍等片刻,每一项自动检查完毕后就会变成正常的黑色。
重点注意其中两项。其它项则无须进行设置,保持默认即可。
项一:INSTALLATION DESTINATION
点击进去选择安装的硬盘即可
项二:NETWORK & HOST NAME
点击进去启用网络连接即可
搞定后如下图就可以下一步了
点击 ROOT PASSWORD 设置密码后,这个时候你可以去冲一杯咖啡。
经过漫长的等待,终于迎来了这个界面了,oh yeah!
点击 Reboot
重启
2. 启动 sshd 服务
🙋 蛋尼尔:不是可以在虚拟机上操作吗?要启用这个服务干嘛呢?
你是指这个吗?可以自己试一下,就知道有多么难用了。鼠标要切来切去,不能复制粘贴,不能开多个终端等等。
执行以下一句命令搞定
现在你可以用自己喜欢的终端工具,比如 putty
来登录 CentOS 进行操作了。
🙋 蛋尼尔:等等,IP 是多少来着?
这个简单啊,用 ifconfig
命令即可查看。啊啊啊~~~
不会吧,连这个命令都木有。
那好吧,这里就顺便介绍下在 CentOS 一般怎么使用 yum
来安装软件包
第一步:先检查下命令所属的包:
第二步:安装指定的包
OK,安装完成后你就可以通过 ifconfig
去查看你虚拟机的 IP 了
3. 安装 Docker
因为我们将采取直接在主机(这里指 CentOS)而非虚拟机上运行 k8s
组件的形式(即 --vm-driver=none
的参数启动 minikube
),所以需要安装 Docker
。
那之所以这样做,是因为虚拟机中再跑个虚拟机实在有难度。
这里提到 --vm-driver=none
,还记得上面将 CPU 设置为 2 个的步骤吗?原因就是以这个参数启动 minikube
至少需要双核。
来,我们通过以下命令即可安装和启动 docker
服务
再来,验证一下:
此时安装的 docker 版本号是:19.03.5
4. 安装 kubectl
kubectl
是 k8s 的命令行工具,通过它可操作 k8s 集群。安装过程如下:
来,验证一下:
此时安装的 kubectl 版本号是:v1.17.3
5. 安装和启动 minikube
接下来终于到主角的安装。执行以下命令就搞定了。
验证一下吧
此时安装的 minikube 版本号是:v1.7.2
接着启动:
🙋 蛋尼尔:启动等了好久了也没提示成功,看到:VM is unable to access k8s.gcr.io, you may need to configure a proxy or set --image-repository
昨办?
OK,根据提示信息,应该是国内网络的问题。我们再加个参数重新启动:
没什么意外的话就成功启动了,我们来验证一下:
6. 启动 k8s dashboard
接下来启用 dashboard 服务,这将让我们可以方便地通过界面管理 k8s 集群:
🙋 蛋尼尔:哎呀,不太顺利啊,又没成功启动,报错:/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ is not accessible: Temporary Error: unexpected response code: 503
OK。那我们来尝试通过查看日志来找蛛丝马迹吧。
先查看下 pods 的运行状态
发现 kubernetes-dashboard
的 pod 状态不正常,那我们接着查看该 pod 的运行日志
🙋 蛋尼尔:发现错误信息了:connect: no route to host
恩,本地路由问题。通过不懈努力地 google 和尝试,最终的解决方法就是 flush iptables,命令如下:
重新运行 minikube dashboard
尝试启动。
🙋 蛋尼尔:启动成功啦。但在 Windows 主机怎么访问 dashboard 呢?
先停掉 minikube dashboard
命令,我们改成 kubectl proxy 来启动代理服务,使得外面可通过 IP 来访问 k8s dashboard
如果你仍然在 Windows 主机的浏览器中无法访问 dashboard,有可能是 CentOS 端口的暴露问题,通过以下增加防火墙规则即可
7. 自启动
最终还是没能通过 /etc/rc.d/rc.local
增加执行脚本的方式自启动,总是会出现各种问题,所以最后写了一个启动脚本 start-k8s.sh
,内容如下:
每次启动 CentOS 后,再手动执行这个脚本即可:sh start-k8s.sh
OK,搞定,可以重启试一下了。
这里没再花时间去折腾,可以优化的空间还是挺大的,有能搞定系统启动时自启动 minikube 的同学,欢迎把解决方案告诉我哈
8. 导出虚拟机
最后,可以导出你的成果分享给你的朋友们了。选中虚拟机,点击右键菜单中的 Export to OCI...
菜单,一路默认即可完成导出。
终于,写完了。觉得有点用的,点个赞哈。拜拜!
版权声明: 本文为 InfoQ 作者【Daniel】的原创文章。
原文链接:【http://xie.infoq.cn/article/efc957908ac3ebd3da0707435】。文章转载请联系作者。
评论