Minikube 安装踩坑记
(Proudly powered by QKQ)
学习使用Kubernetes,需要一个环境,可以在google cloud上买一个,但是还是觉得本地有一个环境比较好。本地的环境,鉴于资源关系,所以选择了minikube。minikube即迷你kubernetes。
我的机器是Macbook,使用的MacOS。安装了Mac下的docker engine/daemon。docker engine跟docker daemon有什么区别呢?其实指向的东西是一样的,叫法不同。
Q: 环境是什么样的?
A: 本地环境
Macbook
MacOS Mojave 10.14.1
docker version 18.09.0
由于需要从外网下载,所以需要使用ssX-NG(你懂的)
VirtualBox,使用的虚拟机提供者是VirtualBox
Q: 都遇到了哪些坑?
A:
直接minikube start无法完成安装。
卡在restarting cluster components...
虚拟机无法连接主机的proxy
配置docker engine的env不生效
安装速度慢
不知道怎么样才算安装成功
Q: 最终安装的指令是什么?
A:
export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087; # 注意两个都是http,不是https minikube start --docker-env http_proxy=http://192.168.99.1:1087 --docker-env https_proxy=http://192.168.99.1:1087 --docker-env no_proxy=localhost,127.0.0.1,192.168.99.0/24 --log_dir=tmp --cpus 4 --memory 8192
解释一下命令:
export http_proxy命令是添加命令行代理,主要是为了让minikube可以在命令行通过proxy去下载相关文件
--docker-env http_proxy...,设置虚拟机中docker daemon的环境变量,这里的环境变量http_proxy表示虚拟机中docker daemon使用的代理
--docker-env no_proxy,设置虚拟机中docker daemon不使用代理的地址段
--log_dir=tmp,设置minikube的日志存储位置,这里是当前目录下的tmp文件夹。该目录下会出现INFO和ERROR的日志,INFO是一定会有,ERROR是出错的时候才有。比如
--cpus 4,设置虚拟机的cpu核数
--memory 8192,设置虚拟机的内存大小,单位为M
还有一个设置log级别的:
--v=0 INFO level logs
--v=1 WARNING level logs
--v=2 ERROR level logs
--v=3 libmachine logging
--v=7 libmachine --debug level logging
比如:minikube --v=2
就是ERROR level logs
Q: minikube干了什么?
A: 没有官方文档解释做了些什么,我猜测的:
下载minikube iso,存储位置为~/.minikube/cache/iso/minikube-v0.32.0.iso
下载kubeadm,存储位置为~/.minikube/cache/v1.12.4/kubeadm
下载kubelet,存储位置为~/.minikube/cache/v1.12.4/kubelet
创建并启动虚拟机
将需要的文件拷入虚拟机
使用kubeadm安装kubernetes
kubeadm会下载镜像,并启动镜像
注意:~/.minikube是minikube的缓存和配置文件的存储位置
Q: 为什么直接minikube start无法完成安装?
A: 如上所述,minikube会去下载很多东西,这些在google的服务器上,不使用代理无法下载。
Q: 卡在restarting cluster components...
A: 通过设置log的目录,可以通过具体的log查看卡住的原因。我遇到的一般是下载不了镜像的原因。
一般来说,设置了docker daemon的proxy就能够下载镜像了。如果下载不了,可能是proxy的问题。如果是在Mac上,可以看看下面虚拟机无法联机主机proxy的问题。
如果proxy设置没有问题,但是minikube start还是无法下载镜像的话(通过log查看),可以通过minikube ssh登入虚拟机,然后手动执行kubeadm config images pull
进行镜像的拉取。
Q: 虚拟机无法连接主机的proxy
A: 需要在ss-NG的设置里面,将http proxy listen address设置为0.0.0.0。表示允许任何主机的访问。
Q: 配置docker engine的env不生效?
A: 这个问题跟中途配置--cpu和--memory不生效的问题一样,原因应该是该命令是在创建虚拟机之后就写入到虚拟机里了,所以中途如果需要更改的话,需要删除虚拟机,重来一次。执行minikube delete,然后重新minikube start就可以了。
Q: 安装速度慢
A: 跟网络有关系,毕竟要下载iso和kubeadm和kubelet需要一定时间,这几个东西也不小:
minikube-v0.32.0.iso,179M
kubeadm,52M
kubelet,169M
其中还有镜像的大小:minikube_images.png
Q: 不知道怎么才算安装成功?
A: 几个地方可以查看:
minikube安装完成之后提示"Please enjoy minikube"
minikue_success.png
kubectl version的结果:
kubectl_version.png
使用minikube ssh登录进去之后的镜像和容器:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE golang 1.12-rc 62c3cb756f2b 7 days ago 768MB k8s.gcr.io/kubernetes-dashboard-amd64 v1.10.1 f9aed6605b81 2 weeks ago 122MB k8s.gcr.io/kube-proxy v1.12.4 6d393e89739f 3 weeks ago 96.5MB k8s.gcr.io/kube-apiserver v1.12.4 c04b373449d3 3 weeks ago 194MB k8s.gcr.io/kube-controller-manager v1.12.4 51b2a8e5ff78 3 weeks ago 164MB k8s.gcr.io/kube-scheduler v1.12.4 c1b5e63c0b56 3 weeks ago 58.4MB k8s.gcr.io/etcd 3.2.24 3cab8e1b9802 3 months ago 220MB k8s.gcr.io/coredns 1.2.2 367cdc8433a4 4 months ago 39.2MB k8s.gcr.io/echoserver 1.10 365ec60129c5 9 months ago 95.4MB k8s.gcr.io/kube-addon-manager v8.6 9c16409588eb 10 months ago 78.4MB k8s.gcr.io/pause 3.1 da86e6ba6ca1 12 months ago 742kB gcr.io/k8s-minikube/storage-provisioner v1.8.1 4689081edb10 14 months ago 80.8MB
docker ps的结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45b499003095 f9aed6605b81 "/dashboard --insecu…" About an hour ago Up About an hour k8s_kubernetes-dashboard_kubernetes-dashboard-5bff5f8fb8-jf7cn_kube-system_3becda82-109f-11e9-a635-080027950248_6 4b543d5826a4 4689081edb10 "/storage-provisioner" About an hour ago Up About an hour k8s_storage-provisioner_storage-provisioner_kube-system_3c18aa92-109f-11e9-a635-080027950248_5 d1b90336f259 6d393e89739f "/usr/local/bin/kube…" About an hour ago Up About an hour k8s_kube-proxy_kube-proxy-wkjvw_kube-system_a1d18719-1163-11e9-82ed-080027950248_0 38b20b7159b3 k8s.gcr.io/pause:3.1 "/pause" About an hour ago Up About an hour k8s_POD_kube-proxy-wkjvw_kube-system_a1d18719-1163-11e9-82ed-080027950248_0 5f9fb9690da5 367cdc8433a4 "/coredns -conf /etc…" 2 hours ago Up About an hour k8s_coredns_coredns-576cbf47c7-p6jtb_kube-system_356e9d95-109f-11e9-a635-080027950248_3 cefd5489117d 367cdc8433a4 "/coredns -conf /etc…" 2 hours ago Up About an hour k8s_coredns_coredns-576cbf47c7-72lfg_kube-system_35709bb7-109f-11e9-a635-080027950248_3 89ae1be3eb8d 365ec60129c5 "/usr/local/bin/run.…" 2 hours ago Up 2 hours k8s_hello-minikube_hello-minikube-6b75d57bbd-82kz2_default_4277ca41-10ae-11e9-a635-080027950248_3 a79f3369be02 k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_coredns-576cbf47c7-72lfg_kube-system_35709bb7-109f-11e9-a635-080027950248_3 a84812c7f90f k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_kubernetes-dashboard-5bff5f8fb8-jf7cn_kube-system_3becda82-109f-11e9-a635-080027950248_3 928b5194a662 k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_coredns-576cbf47c7-p6jtb_kube-system_356e9d95-109f-11e9-a635-080027950248_3 1568fa422077 k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_storage-provisioner_kube-system_3c18aa92-109f-11e9-a635-080027950248_3 e59fdc28d4a7 k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_hello-minikube-6b75d57bbd-82kz2_default_4277ca41-10ae-11e9-a635-080027950248_3 beafe5c71c98 51b2a8e5ff78 "kube-controller-man…" 2 hours ago Up 2 hours k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_62402c9ecb1701a979883b1f71d73a28_0 64f5023d6f25 c1b5e63c0b56 "kube-scheduler --ad…" 2 hours ago Up 2 hours k8s_kube-scheduler_kube-scheduler-minikube_kube-system_e1b3e16379a55d4c355fa42bc75eb023_3 050aba98dfbd 3cab8e1b9802 "etcd --advertise-cl…" 2 hours ago Up 2 hours k8s_etcd_etcd-minikube_kube-system_400930335566057521570dcbaf3dbb0b_3 f668c2424f79 9c16409588eb "/opt/kube-addons.sh" 2 hours ago Up 2 hours k8s_kube-addon-manager_kube-addon-manager-minikube_kube-system_d682efea6fd7d1c11b13f78e8c81af08_3 ce5a972e40bf c04b373449d3 "kube-apiserver --au…" 2 hours ago Up 2 hours k8s_kube-apiserver_kube-apiserver-minikube_kube-system_cd449a681c0514127b733c5f103919f2_1 7cb7b9d729aa k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_kube-scheduler-minikube_kube-system_e1b3e16379a55d4c355fa42bc75eb023_3 73f0ef3e2040 k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_kube-controller-manager-minikube_kube-system_62402c9ecb1701a979883b1f71d73a28_0 93a060e8c13c k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_etcd-minikube_kube-system_400930335566057521570dcbaf3dbb0b_3 2c6c4cad486b k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_kube-apiserver-minikube_kube-system_cd449a681c0514127b733c5f103919f2_1 4265c3c78569 k8s.gcr.io/pause:3.1 "/pause" 2 hours ago Up 2 hours k8s_POD_kube-addon-manager-minikube_kube-system_d682efea6fd7d1c11b13f78e8c81af08_3
Q: minikube ssh很慢?
A: 使用minikube --logtostderr -v 9 ssh
指令,可以看到minikube会去查看是否有更新,所以很慢。目前没有什么解决办法,可以尝试手动ssh进入虚拟机。
怎么手动登入呢?
使用用户:docker,密码:tcuser登录。比如:
ssh docker@192.168.99.100,然后输入密码
Q: minikube的常用指令有哪些?
A:
minikube version,查看minikube的版本
minikube start,启动minikube
minikube ssh,ssh到虚拟机中
minikube logs,显示minikube的log
minikube dashboard,启动minikube dashboard
minikube ip,显示虚拟机地址
minikube stop,停止虚拟机
minikube delete,删除虚拟机
作者:Mr_Hospital
链接:https://www.jianshu.com/p/48804c8bb250
共同学习,写下你的评论
评论加载中...
作者其他优质文章