(Proudly powered by QKQ)
學(xué)習(xí)使用Kubernetes摔认,需要一個(gè)環(huán)境秀菱,可以在google cloud上買一個(gè)基显,但是還是覺得本地有一個(gè)環(huán)境比較好挑随。本地的環(huán)境,鑒于資源關(guān)系傀蓉,所以選擇了minikube欧漱。minikube即迷你kubernetes。
我的機(jī)器是Macbook葬燎,使用的MacOS误甚。安裝了Mac下的docker engine/daemon。docker engine跟docker daemon有什么區(qū)別呢萨蚕?其實(shí)指向的東西是一樣的靶草,叫法不同。
Q: 環(huán)境是什么樣的岳遥?
A: 本地環(huán)境
- Macbook
- MacOS Mojave 10.14.1
- docker version 18.09.0
- 由于需要從外網(wǎng)下載奕翔,所以需要使用ssX-NG(你懂的)
- VirtualBox,使用的虛擬機(jī)提供者是VirtualBox
Q: 都遇到了哪些坑浩蓉?
A:
- 直接minikube start無法完成安裝派继。
- 卡在restarting cluster components...
- 虛擬機(jī)無法連接主機(jī)的proxy
- 配置docker engine的env不生效
- 安裝速度慢
- 不知道怎么樣才算安裝成功
Q: 最終安裝的指令是什么宾袜?
A:
export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087; # 注意兩個(gè)都是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去下載相關(guān)文件
- --docker-env http_proxy...庆猫,設(shè)置虛擬機(jī)中docker daemon的環(huán)境變量,這里的環(huán)境變量http_proxy表示虛擬機(jī)中docker daemon使用的代理
- --docker-env no_proxy绅络,設(shè)置虛擬機(jī)中docker daemon不使用代理的地址段
- --log_dir=tmp月培,設(shè)置minikube的日志存儲(chǔ)位置,這里是當(dāng)前目錄下的tmp文件夾恩急。該目錄下會(huì)出現(xiàn)INFO和ERROR的日志杉畜,INFO是一定會(huì)有,ERROR是出錯(cuò)的時(shí)候才有衷恭。比如
- --cpus 4此叠,設(shè)置虛擬機(jī)的cpu核數(shù)
- --memory 8192,設(shè)置虛擬機(jī)的內(nèi)存大小随珠,單位為M
還有一個(gè)設(shè)置log級(jí)別的:
- --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: 沒有官方文檔解釋做了些什么,我猜測(cè)的:
- 下載minikube iso窗看,存儲(chǔ)位置為~/.minikube/cache/iso/minikube-v0.32.0.iso
- 下載kubeadm茸歧,存儲(chǔ)位置為~/.minikube/cache/v1.12.4/kubeadm
- 下載kubelet,存儲(chǔ)位置為~/.minikube/cache/v1.12.4/kubelet
- 創(chuàng)建并啟動(dòng)虛擬機(jī)
- 將需要的文件拷入虛擬機(jī)
- 使用kubeadm安裝kubernetes
- kubeadm會(huì)下載鏡像烤芦,并啟動(dòng)鏡像
注意:~/.minikube是minikube的緩存和配置文件的存儲(chǔ)位置
Q: 為什么直接minikube start無法完成安裝举娩?
A: 如上所述,minikube會(huì)去下載很多東西构罗,這些在google的服務(wù)器上,不使用代理無法下載智玻。
Q: 卡在restarting cluster components...
A: 通過設(shè)置log的目錄遂唧,可以通過具體的log查看卡住的原因。我遇到的一般是下載不了鏡像的原因吊奢。
一般來說盖彭,設(shè)置了docker daemon的proxy就能夠下載鏡像了。如果下載不了页滚,可能是proxy的問題。如果是在Mac上,可以看看下面虛擬機(jī)無法聯(lián)機(jī)主機(jī)proxy的問題稍味。
如果proxy設(shè)置沒有問題婉弹,但是minikube start還是無法下載鏡像的話(通過log查看),可以通過minikube ssh登入虛擬機(jī)幻林,然后手動(dòng)執(zhí)行
kubeadm config images pull
進(jìn)行鏡像的拉取贞盯。
Q: 虛擬機(jī)無法連接主機(jī)的proxy
A: 需要在ss-NG的設(shè)置里面音念,將http proxy listen address設(shè)置為0.0.0.0。表示允許任何主機(jī)的訪問躏敢。
Q: 配置docker engine的env不生效闷愤?
A: 這個(gè)問題跟中途配置--cpu和--memory不生效的問題一樣,原因應(yīng)該是該命令是在創(chuàng)建虛擬機(jī)之后就寫入到虛擬機(jī)里了件余,所以中途如果需要更改的話讥脐,需要?jiǎng)h除虛擬機(jī),重來一次啼器。執(zhí)行minikube delete攘烛,然后重新minikube start就可以了。
Q: 安裝速度慢
A: 跟網(wǎng)絡(luò)有關(guān)系镀首,畢竟要下載iso和kubeadm和kubelet需要一定時(shí)間坟漱,這幾個(gè)東西也不小:
- minikube-v0.32.0.iso更哄,179M
- kubeadm芋齿,52M
-
kubelet,169M
其中還有鏡像的大谐婶妗:
Q: 不知道怎么才算安裝成功觅捆?
A: 幾個(gè)地方可以查看:
minikube安裝完成之后提示"Please enjoy minikube"
kubectl version的結(jié)果:
使用minikube ssh登錄進(jìn)去之后的鏡像和容器:
$ 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的結(jié)果:
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會(huì)去查看是否有更新栅炒,所以很慢。目前沒有什么解決辦法术羔,可以嘗試手動(dòng)ssh進(jìn)入虛擬機(jī)赢赊。
怎么手動(dòng)登入呢?
使用用戶:docker级历,密碼:tcuser登錄释移。比如:
ssh docker@192.168.99.100,然后輸入密碼
Q: minikube的常用指令有哪些寥殖?
A:
- minikube version玩讳,查看minikube的版本
- minikube start,啟動(dòng)minikube
- minikube ssh嚼贡,ssh到虛擬機(jī)中
- minikube logs熏纯,顯示minikube的log
- minikube dashboard,啟動(dòng)minikube dashboard
- minikube ip粤策,顯示虛擬機(jī)地址
- minikube stop樟澜,停止虛擬機(jī)
- minikube delete,刪除虛擬機(jī)