Minikube 安装采坑记

作者: Mr_Hospital | 来源:发表于2019-01-06 13:08 被阅读5次

(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,删除虚拟机

相关文章

网友评论

    本文标题:Minikube 安装采坑记

    本文链接:https://www.haomeiwen.com/subject/qhxsrqtx.html