天天看點

VMware centOS7 下通過minikube部署Kubernetes

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

看到以下結果,說明啟動成功!

VMware centOS7 下通過minikube部署Kubernetes

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

(見錯誤提示)

VMware centOS7 下通過minikube部署Kubernetes

單獨執行此指令會報錯:

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)

VMware centOS7 下通過minikube部署Kubernetes

解決方案

方案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

繼續閱讀