🎓 你將學到什麼?node
- Windows 下安裝
minikube
的詳細步驟- 在安裝過程當中可能遇到的問題及其解決方案
來,今天咱們來折騰一下在 Windows 操做系統安裝 minikube
linux
🙋 蛋尼爾: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
第一,這種方式能夠導出虛擬機,就能夠方便地共享你的成果了。
第二,用這種隔離的方式,就不會「污染」到操做系統了。
注意:須要知足如下前提條件,若是不知足就放棄掙扎吧:
🙋 蛋尼爾:如何知道個人機器是否支持虛擬化呢?
打開命令行,運行 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,讓咱們愉快地開始吧。
VirtualBox下載地址:https://www.virtualbox.org/wi...
CentOS下載地址:https://www.centos.org/download/
如下演示安裝的是 CentOS 7.6 版本。這是爲何呢?由於我本機已經下載了這個版本了啊
默認選項便可,不用修改。硬盤給個15G或以上吧,不要太吝嗇啦。
Brided Adapter
🙋 蛋尼爾:這是爲何呢?爲何不選默認的NAT
這個問題問得好。簡單看下 NAT
和 Bridged Adapter
的區別
咱們的場景就是但願能夠在主機能夠訪問虛擬機中的服務,好比 k8s dashboard,因此選擇 Bridged Adapter
🙋 蛋尼爾:1個不行嗎?
別急,待會在適當的時間會解釋滴。
點擊 Start
啓動虛擬機。
基本按照界面的指示一步一步操做便可。如下就一些須要進行稍微設置的步驟進行說明。
當你看到如下界面,稍等片刻,每一項自動檢查完畢後就會變成正常的黑色。
重點注意其中兩項。其它項則無須進行設置,保持默認便可。
點擊進去選擇安裝的硬盤便可
點擊進去啓用網絡鏈接便可
搞定後以下圖就能夠下一步了
點擊 ROOT PASSWORD 設置密碼後,這個時候你能夠去衝一杯咖啡。
通過漫長的等待,終於迎來了這個界面了,oh yeah!
點擊 Reboot
重啓
🙋 蛋尼爾:不是能夠在虛擬機上操做嗎?要啓用這個服務幹嗎呢?
你是指這個嗎?能夠本身試一下,就知道有多麼難用了。鼠標要切來切去,不能複製粘貼,不能開多個終端等等。
執行如下一句命令搞定
# systemctl start sshd
如今你能夠用本身喜歡的終端工具,好比 putty
來登陸 CentOS 進行操做了。
🙋 蛋尼爾:等等,IP是多少來着?
這個簡單啊,用 ifconfig
命令便可查看。啊啊啊~~~
不會吧,連這個命令都木有。
那好吧,這裏就順便介紹下在 CentOS 通常怎麼使用 yum
來安裝軟件包
第一步:先檢查下命令所屬的包:
# yum provides ifconfig
第二步:安裝指定的包
# yum install net-tools
OK,安裝完成後你就能夠經過 ifconfig
去查看你虛擬機的IP了
由於咱們將採起直接在主機(這裏指 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
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
接下來終於到主角的安裝。執行如下命令就搞定了。
# 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
接下來啓用 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
最終仍是沒能經過 /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 的同窗,歡迎把解決方案告訴我哈
最後,能夠導出你的成果分享給你的朋友們了。選中虛擬機,點擊右鍵菜單中的 Export to OCI...
菜單,一路默認便可完成導出。
終於,寫完了。以爲有點用的,點個贊哈。拜拜!