您的位置:首页 > 大数据 > 人工智能

按照官方文档,安装minikube,kubectl,实现Kubernetes集群部署(采坑记)

2018-03-15 00:00 1471 查看
摘要: 最近一直在研究Kubernetes,docker相关集群,微服务架构,通过Kubernetes实现容器的编排和管理。首先需要安装Kubernetes,官方文档中可知,通过minikube工具直接部署一个简单的单台Kubernetes集群。

(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
$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) 目前得出的是:v1.9.4

chmod +x kubectl && mv kubectl /usr/local/bin/kubectl

安装完成,可通过kubectl version查看是否成功。

(2)安装minikube

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.25.0/minikube-linux-amd64
这是从github上直接copy的安装方式,同样的,可以通过minikube version查看是否安装成功。

(3)配置信息(这个我具体没有研究是否是必要的)

export MINIKUBE_WANTUPDATENOTIFICATION=false

&& export MINIKUBE_WANTREPORTERRORPROMPT=false

&& export MINIKUBE_HOME=$HOME

&& export CHANGE_MINIKUBE_NONE_USER=true

&& mkdir $HOME/.kube || true

&& touch $HOME/.kube/config

&& export KUBECONFIG=$HOME/.kube/config

(4) 由于需要下载gcr.io/google-containers/... 下的镜像,这里需要代理,通过socks5+proxychains实现。事先买了一台国外的服务器。

apt-get install proxychains
vim /etc/proxychains.conf 找到最后一行,修改地址和端口
socks5 127.0.0.1 1080
当然我的环境中是因为有一台专门的服务器作为本地连接的代理,端口号为1080,所有的请求都是先到本地的一台服务器,再通过国外的服务器上网。
注意:docker daemon默认不会读取系统代理,所以需要手动设置。

这里分为Ubuntu1404版本中:vim /etc/default/docker 添加export ALL_PROXY=“socks5://127.0.0.1:1080”
然后通过/etc/init.d/docker restart
Ubuntu1604版本中:mkdir /etc/systemd/system/docker.service.d/
&n
3ff0
bsp; [Service] Environment="ALL_PROXY=socks5://127.0.0.1:1080"
然后刷新配置 systemctl daemon-reload
重启docker服务 systemctl restart docker
systemctl show --perporty=Environment docker 查看配置是否生效
proxychains使用很简单,目前: proxychains curl www.google.com测试是否成功

支持: proxychains docker pull gcr.io/google-containers/...

proxychains apt-get update/ apt-get install -y kubelet kubeadm kubectl

proxychains kubeadm init

proxychains minikube start --vm-driver=virtualbox

目前我这么用是可以获取成功的。

(5) 需要virtualbox支持,此处有点像,虚拟机里面还需要装虚拟机,(有点蒙?!)说是需要cpu支持VT-X等硬件虚拟化,可是我本身运行的ubuntu/centos就是VMware虚拟机或virtualbox虚拟机的系统。而且开始一直是在命令行系统上运行。

当然minikube start --vm-driver=virtualbox此时是可以运行了,但是我后面一直卡在一个错误里面

This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory.

官网上说是需要安装virtualbox,于是找到如下步骤安装:

(a) 先在/etc/apt/source.list文件中添加软件源

deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib

(b) 添加virtualbox5.2的软件源秘钥,当然这是我下了的版本,其他版本一样。

wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

(c) apt-get update && apt-get install virtualbox-5.2

安装成功之后,再次尝试proxychains minikube start --vm-driver=virtualbox

依然报错。网上说是需要在系统启动时,进入F2到bios设置的Inter virtual..菜单中修改成enabled,但是发现我的VMware里居然没有,于是我又花费时间去安装virtualbox软件,添加ubuntu系统,依然没有找到类似的bios设置,难道我电脑的cpu不支持?

正当我要放弃的时候,我打开了VMware中的一台Ubuntu1404桌面版系统时,想到试一试,果然在虚拟机的设置里面居然有: 虚拟化引擎 首选模式 仍为自动 但是启用下面这个选项:虚拟机化Intel VT-x/EPT 或 AMD-V/RVI(V)。

最后,通过proxychains minikube start --vm-driver=virtualbox 启动了Kubernetes集群。

(6)通过minikube命令,根据官网进行测试,学习。

当然(5)步启动的时间有点长的。因为大概知道需要下载很多gcr.io下的镜像。

这里在Ubuntu14的命令行中,运行virtualbox,可以直接调出界面,可以看到如下图



原来minikube start命令会自动生成一个vb的虚拟机,而且整个kubernetes相关的组件,docker镜像都在这个名叫minikube的Linux系统中生成,所以这么慢。

于是,开始通过命令行操作cluster。

kubectl get nodes 获取node节点,这里只有一个单节点

kubectl get pod -o wide --all-namespaces 查看所有运行的容器

kubectl describe podName -n kube-system 查看kube-system空间内的名为podName的执行过程详情,可用于定位问题

minikube status 查看local kubernetes cluster status

minikube ip 查看ip 例如:这里得到ip为192.168.99.100

minikube dashboard --url 查看dashboard url 例如:这里得到http://192.168.99.100: 31512

minikube ssh 登录到virtualbox的系统中,可以查看到docker images下载的gcr.io的镜像,以及docker ps

minikube get-k8s-versions 获取kubernetes版本列表

minikube start --kubernetes-version v1.7.3 以某一个kubernetes版本启动集群

eval $(minikube docker-env) 通过这个命令就可以在minikube所在的虚拟机,直接运行docker来查看镜像和运行的容器,这样就可以不需要minikube ssh再查看docker信息

minikube service serviceName --url 可以查看到service的访问url

注意:启动时,需要添加proxychains minikube start --vm-driver=virtualbox 这样才能下载gcr.io里面的镜像。

如下图,测试命令,以及dashboard页面:



根据minikube dashboard --url 得到dashboard地址为:http://192.168.99.100:30000

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息