windows安裝minikube的正確姿式

🎓 你將學到什麼?node

  • Windows 下安裝 minikube 的詳細步驟
  • 在安裝過程當中可能遇到的問題及其解決方案

來,今天咱們來折騰一下在 Windows 操做系統安裝 minikubelinux

🙋 蛋尼爾:minikuke是什麼東西?docker

先來看下官方是怎麼介紹的:shell

Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a Virtual Machine (VM) on your laptop for users looking to try out Kubernetes or develop with it day-to-day.

簡單講就是一個工具,這個工具讓你能夠在本地(通常是出於學習或實驗的目的)跑一個只有單節點(node)的 k8s 集羣windows

🙋 蛋尼爾:那 k8s 又是什麼?centos

Oh my god!也許這篇文章並不適合你。api

丟個連接本身先去了解下吧:https://kubernetes.io/zh/docs...瀏覽器


在 windows 上,建議的安裝方式是:在虛擬機上跑一個 Linux(如 CentOS),而後在 Linux 上安裝 minikube。網絡

🙋 蛋尼爾:這是爲何呢?ssh

第一,這種方式能夠導出虛擬機,就能夠方便地共享你的成果了。

第二,用這種隔離的方式,就不會「污染」到操做系統了。

注意:須要知足如下前提條件,若是不知足就放棄掙扎吧:

  • [ ] Windows 8 或以上版本
  • [ ] 支持虛擬化

🙋 蛋尼爾:如何知道個人機器是否支持虛擬化呢?

打開命令行,運行 systeminfo,輸出如下這樣的就OK:

# 英文版本:
Hyper-V Requirements:     VM Monitor Mode Extensions: Yes
                          Virtualization Enabled In Firmware: Yes
                          Second Level Address Translation: Yes
                          Data Execution Prevention Available: Yes

# 中文版本:
Hyper-V 要求:     虛擬機監視器模式擴展: 是
                  固件中已啓用虛擬化: 是
                  二級地址轉換: 是
                  數據執行保護可用: 是

OK,讓咱們愉快地開始吧。

1. 在虛擬機上安裝 CentOS

VirtualBox下載地址:https://www.virtualbox.org/wi...

CentOS下載地址:https://www.centos.org/download/

如下演示安裝的是 CentOS 7.6 版本。這是爲何呢?由於我本機已經下載了這個版本了啊

1.1 建立虛擬機

  • 選擇 Type:Linux 和 Version:Red Hat (64-bit)

  • 接下來設置內存,硬盤大小

默認選項便可,不用修改。硬盤給個15G或以上吧,不要太吝嗇啦。

1.2 裝盤,設置網絡,調整CPU數量

  • 將你下載的 CentOS ISO 文件裝盤

  • 設置虛擬機的網絡爲 Brided Adapter

🙋 蛋尼爾:這是爲何呢?爲何不選默認的NAT

這個問題問得好。簡單看下 NATBridged Adapter 的區別

  • NAT:虛擬機沒有獨立IP,因此虛擬機能夠訪問主機,但主機沒法訪問虛擬機
  • Bridged Adapter:虛擬機有獨立IP,就像同處局域網中的其它計算機同樣,主機和虛擬機之間能夠互相訪問

咱們的場景就是但願能夠在主機能夠訪問虛擬機中的服務,好比 k8s dashboard,因此選擇 Bridged Adapter

  • 將CPU數量設置爲2個或以上

🙋 蛋尼爾:1個不行嗎?

別急,待會在適當的時間會解釋滴。

1.3 安裝 CentOS

點擊 Start 啓動虛擬機。

基本按照界面的指示一步一步操做便可。如下就一些須要進行稍微設置的步驟進行說明。

當你看到如下界面,稍等片刻,每一項自動檢查完畢後就會變成正常的黑色。

重點注意其中兩項。其它項則無須進行設置,保持默認便可。

  • 項一:INSTALLATION DESTINATION

點擊進去選擇安裝的硬盤便可

  • 項二:NETWORK & HOST NAME

點擊進去啓用網絡鏈接便可

搞定後以下圖就能夠下一步了

點擊 ROOT PASSWORD 設置密碼後,這個時候你能夠去衝一杯咖啡。

通過漫長的等待,終於迎來了這個界面了,oh yeah!

點擊 Reboot 重啓

2. 啓動 sshd 服務

🙋 蛋尼爾:不是能夠在虛擬機上操做嗎?要啓用這個服務幹嗎呢?

你是指這個嗎?能夠本身試一下,就知道有多麼難用了。鼠標要切來切去,不能複製粘貼,不能開多個終端等等。

執行如下一句命令搞定

# systemctl start sshd

如今你能夠用本身喜歡的終端工具,好比 putty 來登陸 CentOS 進行操做了。

🙋 蛋尼爾:等等,IP是多少來着?

這個簡單啊,用 ifconfig 命令便可查看。啊啊啊~~~

不會吧,連這個命令都木有。

那好吧,這裏就順便介紹下在 CentOS 通常怎麼使用 yum 來安裝軟件包

第一步:先檢查下命令所屬的包:

# yum provides ifconfig

第二步:安裝指定的包

# yum install net-tools

OK,安裝完成後你就能夠經過 ifconfig 去查看你虛擬機的IP了

3. 安裝 Docker

由於咱們將採起直接在主機(這裏指 CentOS)而非虛擬機上運行 k8s 組件的形式(即 --vm-driver=none 的參數啓動 minikube),因此須要安裝 Docker

那之因此這樣作,是由於虛擬機中再跑個虛擬機實在有難度。

這裏提到 --vm-driver=none,還記得上面將CPU設置爲2個的步驟嗎?緣由就是以這個參數啓動 minikube 至少須要雙核。

來,咱們經過如下命令便可安裝和啓動 docker 服務

# curl -fsSL https://get.docker.com -o get-docker.sh
# sh get-docker.sh
# systemctl start docker
# systemctl enable docker

再來,驗證一下:

# docker version
此時安裝的 docker 版本號是:19.03.5

4. 安裝 kubectl

kubectl 是 k8s 的命令行工具,經過它可操做 k8s 集羣。安裝過程以下:

# curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
# chmod +x ./kubectl
# mv ./kubectl /usr/local/bin/kubectl

來,驗證一下:

# kubectl version --client
此時安裝的 kubectl 版本號是:v1.17.3

5. 安裝和啓動 minikube

接下來終於到主角的安裝。執行如下命令就搞定了。

# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube
# mkdir -p /usr/local/bin/
# install minikube /usr/local/bin/

驗證一下吧

# minikube version
此時安裝的 minikube 版本號是:v1.7.2

接着啓動:

# minikube start --vm-driver=none

🙋 蛋尼爾:啓動等了很久了也沒提示成功,看到:VM is unable to access k8s.gcr.io, you may need to configure a proxy or set --image-repository 昨辦?

OK,根據提示信息,應該是國內網絡的問題。咱們再加個參數從新啓動:

# minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

沒什麼意外的話就成功啓動了,咱們來驗證一下:

# minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

6. 啓動 k8s dashboard

接下來啓用 dashboard 服務,這將讓咱們能夠方便地經過界面管理 k8s 集羣:

# minikube dashboard

🙋 蛋尼爾:哎呀,不太順利啊,又沒成功啓動,報錯:/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ is not accessible: Temporary Error: unexpected response code: 503

OK。那咱們來嘗試經過查看日誌來找蛛絲馬跡吧。

先查看下 pods 的運行狀態

# kubectl get pods -A

發現 kubernetes-dashboard 的 pod 狀態不正常,那咱們接着查看該 pod 的運行日誌

# kubectl logs kubernetes-dashboard-79d9cd965-kj5ln -n kubernetes-dashboard

🙋 蛋尼爾:發現錯誤信息了:connect: no route to host

恩,本地路由問題。經過不懈努力地google和嘗試,最終的解決方法就是 flush iptables,命令以下:

# systemctl stop kubelet
# systemctl stop docker
# iptables --flush
# iptables -tnat --flush
# systemctl start kubelet
# systemctl start docker

從新運行 minikube dashboard 嘗試啓動。

🙋 蛋尼爾:啓動成功啦。但在 Windows 主機怎麼訪問 dashboard 呢?

先停掉 minikube dashboard 命令,咱們改爲 kubectl proxy 來啓動代理服務,使得外面可經過 IP 來訪問 k8s dashboard

// 其中 --address 是你虛擬機的IP,可經過 ifconfig 得到
# kubectl proxy --port=8001 --accept-hosts='^.*' --address='192.168.31.136'

訪問地址:http://192.168.31.136:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default

若是你仍然在 Windows 主機的瀏覽器中沒法訪問 dashboard,有多是 CentOS 端口的暴露問題,經過如下增長防火牆規則便可

# firewall-cmd --zone=public --add-port=8001/tcp --permanent
success
# firewall-cmd --reload
success

7. 自啓動

最終仍是沒能經過 /etc/rc.d/rc.local 增長執行腳本的方式自啓動,老是會出現各類問題,因此最後寫了一個啓動腳本 start-k8s.sh,內容以下:

iptables --flush
iptables -tnat --flush

systemctl start docker
minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

sleep 10
kubectl proxy --port=8001 --accept-hosts='^.*' --address='192.168.31.136'

每次啓動 CentOS 後,再手動執行這個腳本便可:sh start-k8s.sh

OK,搞定,能夠重啓試一下了。

這裏沒再花時間去折騰,能夠優化的空間仍是挺大的,有能搞定系統啓動時自啓動 minikube 的同窗,歡迎把解決方案告訴我哈

8. 導出虛擬機

最後,能夠導出你的成果分享給你的朋友們了。選中虛擬機,點擊右鍵菜單中的 Export to OCI... 菜單,一路默認便可完成導出。


終於,寫完了。以爲有點用的,點個贊哈。拜拜!

相關文章
相關標籤/搜索