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
# 暫時關閉# vim /etc/fstab
# 註釋掉swap那一行(SWAP 自動掛載),可永久禁用swap分區
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
注:此處也可以執行yum install -y kubelet kubeadm kubectl
連同kubelet、kubeadm一起下載,後面 minikube start 的時候可以節約時間
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