使用minikube在Ubuntu上搭建一个单机版的k8s
为了方便在本地进行k8s的学习,我尝试在Ubuntu虚拟机中用minikube搭建了一个单机版的k8s,踩了一些坑才更加领悟到官方文档的重要性,下面就来梳理一下部署流程,以及一些踩坑经验。(注:图片均来自我的微信公众号)环境介绍:Ubuntu 17.10kubectlv1.15.0minikubev1.2.0docker18.09.7(注:在minikube启动过程中会自动安装k8s)任务...
为了方便在本地进行k8s的学习,我尝试在Ubuntu虚拟机中用minikube搭建了一个单机版的k8s,踩了一些坑才更加领悟到官方文档的重要性,下面就来梳理一下部署流程,以及一些踩坑经验。(注:图片均来自我的微信公众号)
环境介绍:
Ubuntu 17.10
kubectl v1.15.0
minikube v1.2.0
docker 18.09.7
(注:在minikube启动过程中会自动安装k8s)
任务描述:在Ubuntu虚拟机上,不使用virtualbox,通过minikube搭建一个单机版的k8s。
成功标志:实现github上给出的minikube的quick start(如下图)
根据官方文档:
我们可以看到,在安装minikube之前,首先需要安装kubectl,那我们就来装一下:
在terminal中依次输入:
1.首先下载最新版本的kubectl二进制文件:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
2.然后让kubectl的二进制文件可执行:
chmod +x ./kubectl
3.将kubectl的可执行文件放到/usr/local/bin(这个路径专门用来存储用户自己的可执行文件):
sudo mv ./kubectl /usr/local/bin/kubectl
4.查看kubectl版本,检查是否安装成功:
kubectl version -o json
kubectl的安装结果:
(注:这个结果是minikube跑起来后的,在minikube跑起来前如果查看kubectl版本,可能会出现:The connection to the server <server-name:port> was refused - did you specify the right host or port?这样的报错,这个我们不需要管,因为官方文档上给出了明确的提示:
ok,现在kubectl已经安装完成,下面开始安装minikube:
起初,我是安装官网给的url下载minikube的,但是在运行minikube的时候,卡在了这里:
报错信息告诉我们,发生了下载错误,显然,下载的地址被墙了......,我们有两个选择,第一个就是“科学上网”,第二个是直接用阿里云提供的修改版的minikube,这个修改版会从国内获取镜像。
我们直接来用这个修改版,在terminal中依次输入:
1.首先,先将之前crash的minikube删掉:
minikube delete
2.下载minikube的修改版的二进制:
curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.2.0/minikube-linux-amd64
3.让minikube的二进制可执行:
chmod +x minikube
4.将minikube的可执行文件放到/usr/local/bin/,类似于之前的kubectl
sudo mv minikube /usr/local/bin/
现在,我们的kubectl和minikube都已经安装好了,下面,直接运行mininkube,来创建一个单机版的k8s:
在terminal中输入:
minikube start --registry-mirror=https://registry.docker-cn.com --vm-driver=none
(其中的--registry-mirror=https://registry.docker-cn.com指定了镜像仓库的位置,--vm-driver=none指定了以none模式安装)
安装过程如下:
我们可以看到,这个minikube做了这么几件事:
1.使用指定的镜像仓库;
2.创建一个虚拟机(由于我选的是none模式,所以直接用的宿主机);
3.检查本机的docker环境,进行相应的环境配置(我的理解是:为本机的docker版本,选择对应版本的k8s、kubeadm、kubelet);
4.拉取基本镜像,我们不妨来看一下,minikube启动成功后,本地多了什么镜像:
可见,这几个镜像都是搭建k8s所必须的镜像,而minikube则是封装了获取这些镜像,并启动对应容器的操作。
5.启动k8s,检查并配置本地环境;
6.校对apiserver、proxy、etcd、scheduler、controller、dns;
现在,我们来测试一下minikube在github上给出的quick start:
1.启动dashboard:
minikube dashboard
可以成功在浏览器打开minikube给出的地址
2.启动一个server(这里我用的镜像是Tomcat):
kubectl run hello-minikube --image=tomcat:8.0 --port=8080
创建成功
3.发布这个服务:
kubectl expose deployment hello-minikube --type=NodePort
服务发布成功
查看dashboard:
可以发现,已经启动了一个pod,并且,服务对外暴露的端口为32199,我们试着在虚拟机外的宿主机对这个ip和端口进行访问:
可以看到汤姆猫成功的出现,ok,这个Tomcat服务成功的在minikube部署的k8s上对外发布成功,任务完成!
更多推荐
所有评论(0)