为了方便在本地进行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上对外发布成功,任务完成!

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐