1、環境準備:
VMware CentOS-7-x86_64
CPU:2*2core
記憶體:8G
主控端和虛拟機需網絡互通,虛拟機外網通路正常
Centos發行版版本檢視:cat /etc/centos-release
本實驗使用ROOT使用者操作
2、禁用swap分區
Kubernetes 1.8開始要求關閉系統的Swap,可暫時關閉或永久禁用,
使用
# free -m
确認swap是否為開啟狀态
-
# 暫時關閉# swapoff -a
-
# 注釋掉swap那一行(SWAP 自動挂載),可永久禁用swap分區# vim /etc/fstab
3、安裝docker
docker安裝參考:https://www.cnblogs.com/biaopei/p/11937292.html
- 需要注意的是,Kubernetes的安裝對docker版本有嚴格要求,Kubernetes 1.15目前支援的docker版本清單是1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09
-
Kubernetes 1.16最大支援版本也是18.09,本實驗使用的kubernates為kubernates1.16,是目前(20191010)最新穩定版本。
本實驗安裝的docker版本為docker-ce-18.06.3
# yum install -y docker-ce-18.06.3.ce-3.el7
4、安裝kubectl
- 安裝之前添加阿裡雲YUM軟體源,執行以下指令行(源測試可用:2019-10-10)
# cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 安裝kubectl
注:此處也可以執行# yum install -y kubectl
連同kubelet、kubeadm一起下載下傳,後面 minikube start 的時候可以節約時間yum install -y kubelet kubeadm kubectl
5、安裝minikube
将minikube下載下傳并安裝到/usr/local/bin(本實驗安裝版本為minikube-1.4.0):
官方版:
# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& sudo install minikube-linux-amd64 /usr/local/bin/minikube
阿裡版:
# curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.4.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
因為網絡原因,建議使用minikube阿裡修改版本安裝,詳見 https://yq.aliyun.com/articles/221687,本實驗最終使用阿裡修改版安裝成功。
6、啟動minikube
minikube有2種啟動驅動:虛拟機程式啟動和裸機啟動(或叫none驅動程式啟動)
- 虛拟機程式啟動,minikube依賴虛拟機運作。如果是實體機安裝minikube,官方推薦使用libvirt v1.3.1+、qemu-kvm v2.0+或VirtualBox 5.2+ ,當然也可以裸機啟動。
- 如果部署的minikube已經在VM中運作,虛拟機管理程式不允許嵌套虛拟化,則可以使用裸機啟動方式,跳過建立其他VM層的操作,直接運作以下指令。我們使用此方式實驗。裸機啟動隻能單節點部署k8s。
裸機啟動方式要求minikube以root身份運作,一定要帶上
--registry-mirror
參數,指明從docker中國區的鏡像下載下傳資料。
# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com
也可設定none為預設驅動程式(裸機啟動),隻需要執行
minikube start
即可正常啟動minikube,設定指令:
# minikube config set vm-driver none
然後執行:
# minikube start --registry-mirror=https://registry.docker-cn.com
minikube start 指令執行後會依次自動執行以下操作
1)驗證minikube運作環境
2)在docker上預加載Kubernates,驗證docker
3)下載下傳kubelet、kubeadm(目前實驗版本為v1.16)
4)拉取Kubernates鏡像
5)啟動Kubernates
看到以下結果,說明啟動成功!
7、失敗
如果安裝的是minikube阿裡版,執行minikube start 指令後失敗請嘗試重新start,執行指令參考如下
# minikube delete
# rm -f ~/.kube/config
# rm -rf ~/.minikube
# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com
如果安裝的是minikube官方版,網絡原因,minikube start 指令執行後到拉取Kubernates鏡像這一步的時候易出錯,因為拉取鏡像的指令使用的是
# kubeadm config images pull --config /var/tmp/minikube/kubeadm.yaml
(見錯誤提示)
單獨執行此指令會報錯:
failed to pull image "k8s.gcr.io/kube-apiserver:v1.16.0": output: Error response from daemon: Get https://k8s.gcr.io/v2/:net/http:request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解決方案
方案1、參考:https://blog.csdn.net/jinguangliu/article/details/82792617
方案2、minikube 改用阿裡修改版本,需要先解除安裝舊版
- 解除安裝minikube:
# minikube delete
# rm -f ~/.kube/config
# yum remove minikube*
- 下載下傳阿裡版:
# curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.4.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
- 裸機啟動
# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com
8、啟動成功後常用指令
# kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
# 啟動伺服器
# kubectl get po -A
# 檢視pod狀态
# kubectl expose deployment hello-minikube --type=NodePort
# 将服務公開為NodePort
# minikube config set memory 4096
# minikube預設情況下僅配置設定2GB的RAM,需擴記憶體可使用此指令
# minikube dashboard
# 通路minikube叢集中運作的Kubernetes儀表闆
# minikube service hello-minikube
# 使用minikube可在浏覽器中輕松打開此開放節點
# minikube start -p cluster2
# 啟動第二個本地叢集(注意:裸機啟動(本次實驗環境)不适用):
# minikube stop
# 停止本地叢集
# minikube delete
# 删除本地叢集
參考:
https://github.com/kubernetes/minikube
https://minikube.sigs.k8s.io/docs/start
https://www.kubernetes.org.cn/5551.html
https://www.cnblogs.com/Tempted/p/10671292.html
https://yq.aliyun.com/articles/221687
附docker加速鏡像擷取位址:
阿裡雲:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors?spm=a2c4e.11153940.0.0.7dd54cecs0RthS
中科大:https://docker.mirrors.ustc.edu.cn/
minikube和kubernates版本對應:
minikube-1.2 使用 kubernates_v1.10.0
minikube-1.4 使用 kubernates_v1.16.0