🎓 你将学到什么?node
- Windows 下安装
minikube
的详细步骤- 在安装过程当中可能遇到的问题及其解决方案
来,今天咱们来折腾一下在 Windows 操做系统安装 minikube
linux
🙋 蛋尼尔:minikuke是什么东西?docker
先来看下官方是怎么介绍的:shell
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
集群windows
🙋 蛋尼尔:那 k8s
又是什么?centos
Oh my god!也许这篇文章并不适合你。api
丢个连接本身先去了解下吧:https://kubernetes.io/zh/docs...浏览器
在 windows 上,建议的安装方式是:在虚拟机上跑一个 Linux(如 CentOS),而后在 Linux 上安装 minikube。网络
🙋 蛋尼尔:这是为何呢?ssh
第一,这种方式能够导出虚拟机,就能够方便地共享你的成果了。
第二,用这种隔离的方式,就不会“污染”到操做系统了。
注意:须要知足如下前提条件,若是不知足就放弃挣扎吧:
🙋 蛋尼尔:如何知道个人机器是否支持虚拟化呢?
打开命令行,运行 systeminfo
,输出如下这样的就OK:
# 英文版本: Hyper-V Requirements: VM Monitor Mode Extensions: Yes Virtualization Enabled In Firmware: Yes Second Level Address Translation: Yes Data Execution Prevention Available: Yes # 中文版本: Hyper-V 要求: 虚拟机监视器模式扩展: 是 固件中已启用虚拟化: 是 二级地址转换: 是 数据执行保护可用: 是
OK,让咱们愉快地开始吧。
VirtualBox下载地址:https://www.virtualbox.org/wi...
CentOS下载地址:https://www.centos.org/download/
如下演示安装的是 CentOS 7.6 版本。这是为何呢?由于我本机已经下载了这个版本了啊
默认选项便可,不用修改。硬盘给个15G或以上吧,不要太吝啬啦。
Brided Adapter
🙋 蛋尼尔:这是为何呢?为何不选默认的NAT
这个问题问得好。简单看下 NAT
和 Bridged Adapter
的区别
咱们的场景就是但愿能够在主机能够访问虚拟机中的服务,好比 k8s dashboard,因此选择 Bridged Adapter
🙋 蛋尼尔:1个不行吗?
别急,待会在适当的时间会解释滴。
点击 Start
启动虚拟机。
基本按照界面的指示一步一步操做便可。如下就一些须要进行稍微设置的步骤进行说明。
当你看到如下界面,稍等片刻,每一项自动检查完毕后就会变成正常的黑色。
重点注意其中两项。其它项则无须进行设置,保持默认便可。
点击进去选择安装的硬盘便可
点击进去启用网络链接便可
搞定后以下图就能够下一步了
点击 ROOT PASSWORD 设置密码后,这个时候你能够去冲一杯咖啡。
通过漫长的等待,终于迎来了这个界面了,oh yeah!
点击 Reboot
重启
🙋 蛋尼尔:不是能够在虚拟机上操做吗?要启用这个服务干吗呢?
你是指这个吗?能够本身试一下,就知道有多么难用了。鼠标要切来切去,不能复制粘贴,不能开多个终端等等。
执行如下一句命令搞定
# systemctl start sshd
如今你能够用本身喜欢的终端工具,好比 putty
来登陆 CentOS 进行操做了。
🙋 蛋尼尔:等等,IP是多少来着?
这个简单啊,用 ifconfig
命令便可查看。啊啊啊~~~
不会吧,连这个命令都木有。
那好吧,这里就顺便介绍下在 CentOS 通常怎么使用 yum
来安装软件包
第一步:先检查下命令所属的包:
# yum provides ifconfig
第二步:安装指定的包
# yum install net-tools
OK,安装完成后你就能够经过 ifconfig
去查看你虚拟机的IP了
由于咱们将采起直接在主机(这里指 CentOS)而非虚拟机上运行 k8s
组件的形式(即 --vm-driver=none
的参数启动 minikube
),因此须要安装 Docker
。
那之因此这样作,是由于虚拟机中再跑个虚拟机实在有难度。
这里提到 --vm-driver=none
,还记得上面将CPU设置为2个的步骤吗?缘由就是以这个参数启动 minikube
至少须要双核。
来,咱们经过如下命令便可安装和启动 docker
服务
# curl -fsSL https://get.docker.com -o get-docker.sh # sh get-docker.sh # systemctl start docker # systemctl enable docker
再来,验证一下:
# docker version
此时安装的 docker 版本号是:19.03.5
kubectl
是 k8s 的命令行工具,经过它可操做 k8s 集群。安装过程以下:
# curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl # chmod +x ./kubectl # mv ./kubectl /usr/local/bin/kubectl
来,验证一下:
# kubectl version --client
此时安装的 kubectl 版本号是:v1.17.3
接下来终于到主角的安装。执行如下命令就搞定了。
# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ && chmod +x minikube # mkdir -p /usr/local/bin/ # install minikube /usr/local/bin/
验证一下吧
# minikube version
此时安装的 minikube 版本号是:v1.7.2
接着启动:
# minikube start --vm-driver=none
🙋 蛋尼尔:启动等了很久了也没提示成功,看到:VM is unable to access k8s.gcr.io, you may need to configure a proxy or set --image-repository
昨办?
OK,根据提示信息,应该是国内网络的问题。咱们再加个参数从新启动:
# minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
没什么意外的话就成功启动了,咱们来验证一下:
# minikube status host: Running kubelet: Running apiserver: Running kubeconfig: Configured
接下来启用 dashboard 服务,这将让咱们能够方便地经过界面管理 k8s 集群:
# minikube dashboard
🙋 蛋尼尔:哎呀,不太顺利啊,又没成功启动,报错:/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ is not accessible: Temporary Error: unexpected response code: 503
OK。那咱们来尝试经过查看日志来找蛛丝马迹吧。
先查看下 pods 的运行状态
# kubectl get pods -A
发现 kubernetes-dashboard
的 pod 状态不正常,那咱们接着查看该 pod 的运行日志
# kubectl logs kubernetes-dashboard-79d9cd965-kj5ln -n kubernetes-dashboard
🙋 蛋尼尔:发现错误信息了:connect: no route to host
恩,本地路由问题。经过不懈努力地google和尝试,最终的解决方法就是 flush iptables,命令以下:
# systemctl stop kubelet # systemctl stop docker # iptables --flush # iptables -tnat --flush # systemctl start kubelet # systemctl start docker
从新运行 minikube dashboard
尝试启动。
🙋 蛋尼尔:启动成功啦。但在 Windows 主机怎么访问 dashboard 呢?
先停掉 minikube dashboard
命令,咱们改为 kubectl proxy 来启动代理服务,使得外面可经过 IP 来访问 k8s dashboard
// 其中 --address 是你虚拟机的IP,可经过 ifconfig 得到 # kubectl proxy --port=8001 --accept-hosts='^.*' --address='192.168.31.136'
访问地址:http://192.168.31.136:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default
若是你仍然在 Windows 主机的浏览器中没法访问 dashboard,有多是 CentOS 端口的暴露问题,经过如下增长防火墙规则便可
# firewall-cmd --zone=public --add-port=8001/tcp --permanent success # firewall-cmd --reload success
最终仍是没能经过 /etc/rc.d/rc.local
增长执行脚本的方式自启动,老是会出现各类问题,因此最后写了一个启动脚本 start-k8s.sh
,内容以下:
iptables --flush iptables -tnat --flush systemctl start docker minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers sleep 10 kubectl proxy --port=8001 --accept-hosts='^.*' --address='192.168.31.136'
每次启动 CentOS 后,再手动执行这个脚本便可:sh start-k8s.sh
OK,搞定,能够重启试一下了。
这里没再花时间去折腾,能够优化的空间仍是挺大的,有能搞定系统启动时自启动 minikube 的同窗,欢迎把解决方案告诉我哈
最后,能够导出你的成果分享给你的朋友们了。选中虚拟机,点击右键菜单中的 Export to OCI...
菜单,一路默认便可完成导出。
终于,写完了。以为有点用的,点个赞哈。拜拜!