基礎(chǔ)環(huán)境:
Virtual box
OS: Ubuntu:16.04
enp0s3:(Hostonly)192.168.56.102(提供pc端訪問服務(wù)器-hostonly)
enp0s8:(NAT)10.0.3.15(訪問外網(wǎng)遥倦,因為nat映射端原因斑举,本地pc無法訪問)
minikube使用的all-in-one方式屡萤,所以就放在了一臺vm上晨逝,配置最好大一點,不然會卡!
---------------------------------------------------------------------------------
離線安裝包和鏡像
鏈接:https://pan.baidu.com/s/10oqK80w5SJD2npOYpLZEkg 密碼:u95p
1、安裝docker-ce環(huán)境(引用官網(wǎng))
https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1
sudo apt-get update
Install packages to allow apt to use arepository over HTTPS:
sudo apt-get install \
???apt-transport-https \
???ca-certificates \
??? curl\
???software-properties-common
Add Docker's official GPG key:
curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Verify that you now have the key with thefingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, by searching forthe last 8 characters of the fingerprint.
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
??"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
??$(lsb_release -cs) \
??stable"
Install Docker CE,Update the apt package index.
sudo apt-get update
Install the latest version of Docker CE, or goto the next step to install a specific version:
sudo apt-get install docker-ce
sudo systemctl enable docker
sudo systemctl start docker
2、需要下載minikube扇住、kubectl(參考官網(wǎng)github)
https://github.com/kubernetes/minikube
下載命令:(由于防火墻端緣故,無法下載盗胀,在國外服務(wù)器拉取下來艘蹋,本地離線安裝)
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64&& chmod +x minikube
curl -Lo kubectlhttps://storage.googleapis.com/kubernetes-release/release/$(curl -shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl&& chmod +x kubectl
離線安裝操作:
cd /root
chmod +x minikube
mv minikube /usr/local/bin/
ln -sf /usr/local/bin/minikube/usr/bin/minikube
cd /root
chmod +x kubectl
mv kubectl /usr/local/bin
ln -sf /usr/local/bin/kubectl /usr/bin/kubectl
3、初始化環(huán)境變量:
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
mkdir -p $HOME/.kube
touch $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
4读整、啟動minikube
? ? curl -Lo kubeadm http://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubeadm
? ? curl -Lo kubelet http://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubelet
? ? sudo -E ./minikube start --vm-driver=none
--vm-driver=none (本身就是虛擬機簿训,所以不需要將minikube再次安裝到虛機里面,虛機中再安裝虛機我的機器扛不住)
在這個過程中minikube需要下載kubelet米间、kubeadm,以及拉取所需要到鏡像强品,由于防火墻到原因,這就卡住了屈糊,再也不能進行下去了的榛,所以啊,我挨個再國外服務(wù)器上拉取到鏡像和程序包逻锐。
運行一下上面curl兩句下載命令夫晌,不然會報錯雕薪,因為下載kubeadm、kubelet時采用的是https晓淀,但是無法連接所袁,使用http下載以后就可以跳過
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.10.0
Downloading kubelet v1.10.0
這塊了,不然會報一下這個錯:
E0702 15:58:46.347477? 20746 start.go:252] Error updating cluster:? downloading binaries: downloading kubeadm: Error downloading kubeadm v1.10.0: failed to download: failed to download to temp file: download failed: 5 error(s) occurred:
* Temporary download error: Get https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubeadm: net/http: TLS handshake timeout
* Temporary download error: Get https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubeadm: dial tcp 172.217.160.80:443: i/o timeout
* Temporary download error: Get https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubeadm: net/http: TLS handshake timeout
* Temporary download error: Get https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubeadm: dial tcp 172.217.160.80:443: i/o timeout
* Temporary download error: Get https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubeadm: dial tcp 172.217.160.80:443: i/o timeout
以下是所需要的鏡像列表:
? ? k8s.gcr.io/kube-apiserver-amd64:v1.10.0
? ? k8s.gcr.io/kube-scheduler-amd64:v1.10.0
? ? k8s.gcr.io/kube-controller-manager-amd64:v1.10.0
? ? k8s.gcr.io/kube-proxy-amd64:v1.10.0
? ? k8s.gcr.io/etcd-amd64:3.1.12
? ? k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.8
? ? k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.8
? ? k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.8
? ? k8s.gcr.io/pause-amd64:3.1
? ? quay.io/coreos/flannel:v0.9.1-amd64
? ? k8s.gcr.io/kube-addon-manager:v8.6
? ? k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.1
? ? gcr.io/k8s-minikube/storage-provisioner:v1.8.1
如果不出意外應(yīng)該就可以安裝成功了凶掰!
安裝完成后
root@ubuntu:~# sudo -E ./minikube start --vm-driver=none? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.10.0
Downloading kubelet v1.10.0
Finished Downloading kubelet v1.10.0
Finished Downloading kubeadm v1.10.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
===================
WARNING: IT IS RECOMMENDED NOT TO RUN THE NONE DRIVER ON PERSONAL WORKSTATIONS
The 'none' driver will run an insecure kubernetes apiserver as root that may leave the host vulnerable to CSRF attacks
Loading cached images from config file.
5燥爷、查看狀態(tài)
查看node節(jié)點狀態(tài)
root@ubuntu:~/1.10.1# kubectl get nodes
NAME??????STATUS??? ROLES???? AGE??????VERSION
minikube??Ready???? master??? 20h??????v1.10.0
查看pod狀態(tài)
root@ubuntu:~/1.10.1# kubectl get pods--all-namespaces
NAMESPACE????NAME??????????????????????? ????????????READY???? STATUS???RESTARTS?? AGE
kube-system??etcd-minikube??????????????????????????1/1?????? Running?? 2?????????1h
kube-system??kube-addon-manager-minikube????????????1/1?????? Running?? 1?????????20h
kube-system??kube-apiserver-minikube????????????????1/1?????? Running?? 1?????????1h
kube-system??kube-controller-manager-minikube???????1/1?????? Running?? 2?????????1h
kube-system??kube-dns-86f4d74b45-pndzp??????????????3/3?????? Running?? 16????????20h
kube-system??kube-proxy-pgjpd???????????????????????1/1?????? Running?? 0?????????1h
kube-system??kube-scheduler-minikube????????????????1/1?????? Running?? 5?????????20h
kube-system??kubernetes-dashboard-5498ccf677-scd97??1/1?????? Running?? 4?????????18h
kube-system??storage-provisioner???????????????????? 1/1?????? Running??1????????? 18h
看下READY和STATUS狀態(tài),如果正常就一切ok懦窘,萬事大吉了前翎。
如果有問題,那就看看什么原因,例如查看dashboard畅涂,可以根據(jù)具體問題作出具體的解決方法(下面描述是沒問題)
root@ubuntu:~# kubectl describe--namespace=kube-system pod kubernetes-dashboard-5498ccf677-scd97
Name:??????????kubernetes-dashboard-5498ccf677-scd97
Namespace:?????kube-system
Node:??????????minikube/10.0.3.15
Start Time:????Thu, 21 Jun 2018 17:11:28 +0800
Labels:????????addonmanager.kubernetes.io/mode=Reconcile
???????????????app=kubernetes-dashboard
???????????????pod-template-hash=1054779233
???????????????version=v1.8.1
Annotations:???
Status:????????Running
IP:????????????172.17.0.3
Controlled By:?ReplicaSet/kubernetes-dashboard-5498ccf677
Containers:
?kubernetes-dashboard:
???Container ID:??docker://e5b6c1ae90d34be67da0c51cf4c0924ff7868a7ec76603f9810318b1ed9335b3
???Image:?????????k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.1
? ??Image ID:??????docker://sha256:e94d2f21bc0c297cb74c1dfdd23e2eace013f532c60726601af67984d97f718a
???Port:?????????? 9090/TCP
??? HostPort:????? 0/TCP
???State:????????? Running
?????Started:????? Fri, 22 Jun 201814:18:41 +0800
??? LastState:???? Terminated
?????Reason:?????? Error
?????Exit Code:??? 1
?????Started:????? Fri, 22 Jun 201814:17:45 +0800
?????Finished:???? Fri, 22 Jun 201814:18:18 +0800
???Ready:????????? True
???Restart Count:? 6
???Liveness:?????? http-gethttp://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3
???Environment:???
???Mounts:
?????/var/run/secrets/kubernetes.io/serviceaccount from default-token-6xhk9(ro)
Conditions:
?Type?????????? Status
??Initialized???True
?Ready????????? True
?PodScheduled?? True
Volumes:
?default-token-6xhk9:
???Type:??????? Secret (a volumepopulated by a Secret)
???SecretName:? default-token-6xhk9
???Optional:??? false
QoS Class:??????BestEffort
Node-Selectors:?
Tolerations:????node.kubernetes.io/not-ready:NoExecute for 300s
????????????????node.kubernetes.io/unreachable:NoExecute for 300s
Events:
?Type???? Reason???????????????? Age??????????????? From?????????????? Message
?----???? ------???????? ????????----?????????????? ----?????????????? -------
?Normal??SuccessfulMountVolume? 29m??????????????? kubelet, minikube? MountVolume.SetUp succeeded for volume"default-token-6xhk9"
?Normal?? SandboxChanged???????? 29m??????????????? kubelet, minikube? Pod sandbox changed, it will be killed andre-created.
?Warning? Unhealthy????????????? 28m??????????????? kubelet, minikube? Liveness probe failed: Gethttp://172.17.0.3:9090/: dial tcp 172.17.0.3:9090: getsockopt: connectionrefused
?Warning? BackOff??????????????? 28m (x2 over 28m)? kubelet, minikube? Back-off restarting failed container
?Normal?? Pulled???????????????? 28m (x2 over 29m)? kubelet, minikube? Container image"k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.1" already present onmachine
? Normal?? Created??????????????? 28m (x2 over 29m)? kubelet, minikube? Created container
?Normal?? Started??????????????? 28m (x2 over 29m)? kubelet, minikube? Started container
6港华、啟動dashboard
root@ubuntu:~# minikube? dashboard
訪問dashboard的是查看具體url:
root@ubuntu:~# minikube? dashboard --url
http://10.0.3.15:30000
由于virtual是雙網(wǎng)卡的問題,所以minikube返回的url是不能訪問的午衰,10.0.3.15這個IP是內(nèi)部IP立宜,pc端是無法訪問的,所以需要在iptalbes上做一下路由轉(zhuǎn)發(fā)臊岸!
臨時:
echo "1">/proc/sys/net/ipv4/ip_forward
固定:修改/etc/sysctl.conf赘理,取消這一行的注釋:
net.ipv4.ip_forward= 1
root@ubuntu:~#sysctl -p
設(shè)置iptables規(guī)則:
iptables -t nat -A POSTROUTING -j MASQUERADE
再訪問:http://192.168.56.102:30000就可以訪問了