Kubernetes學(xué)習(xí)環(huán)境難搭建?Mac筆記本上安裝一個(gè)!

要學(xué)習(xí)Kubernetes技術(shù),先決條件是得有一個(gè)實(shí)驗(yàn)環(huán)境,雖然在之前的文章中給大家介紹過如何安裝部署一個(gè)Kubernetes(具體可參考<<如何部署一個(gè)Kubernetes集群>>),但是這篇文章是基于Linux虛擬機(jī)安裝的,所需要的資源環(huán)境還是相對(duì)復(fù)雜。而我們?cè)谌粘W(xué)習(xí)Kubernetes的過程中,其實(shí)是更希望在開發(fā)電腦上直接部署一個(gè)簡單的Kubernetes環(huán)境,這樣學(xué)習(xí)起來會(huì)更加方便。今天的內(nèi)容就給大家介紹下如何在Mac開發(fā)電腦上安裝一個(gè)基于MiniKube的Kubernetes學(xué)習(xí)環(huán)境!
Minikube是社區(qū)為了方便大家開發(fā)和體驗(yàn)Kubernetes,而提供的一個(gè)運(yùn)行在本地的Kubernetes單節(jié)點(diǎn)環(huán)境。Minikube在不同的操作系統(tǒng)上需要不同的驅(qū)動(dòng)支持,在MacOS中需要"xhyve driver "作為缺省驅(qū)動(dòng)。具體安裝步驟如下:
1)、安裝kubectl
在Mac上安裝kubectl可以直接使用brew命令安裝,具體如下:
$?brew?install?kubectl
2)、安裝MiniKube
為了解決海外資源訪問受限問題,這里我們使用阿里云提供的鏡像地址。具體命令如下:
$?minikube?start?--cpus=4?--memory='6000mb'?--image-mirror-country='cn'?--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'命令參數(shù)說明如下:
--cpus=4:表示為minikube分配的CPU核數(shù);
--memory='6000mb':表示為minikube虛擬機(jī)分配的內(nèi)存數(shù);
--image-mirror-country='cn':將缺省利用"registry.cn-hangzhou.aliyuncs.com/google_containers"作為安裝Kubernetes的容器鏡像倉庫;
--image-repository="xx":表示所使用的鏡像倉庫地址,這里為阿里云地址;安裝命令執(zhí)行效果如下:
???Darwin?10.14.6?上的 minikube v1.14.2
???Automatically?selected?the?hyperkit?driver
???正在下載驅(qū)動(dòng)?docker-machine-driver-hyperkit:
????>?docker-machine-driver-hyperkit.sha256:?65?B?/?65?B?[---]?100.00%???p/s?0s
????>?docker-machine-driver-hyperkit:?11.44?MiB?/?11.44?MiB??100.00%?3.82?KiB?p
???The?'hyperkit'?driver?requires?elevated?permissions.?The?following?commands?will?be?executed:
????$?sudo?chown?root:wheel?/Users/qiaojiang/.minikube/bin/docker-machine-driver-hyperkit?
????$?sudo?chmod?u+s?/Users/qiaojiang/.minikube/bin/docker-machine-driver-hyperkit?
Password:?#輸入Mac電腦密碼
???正在使用鏡像存儲(chǔ)庫?registry.cn-hangzhou.aliyuncs.com/google_containers
???正在下載?VM?boot?image...
????>?minikube-v1.14.0.iso.sha256:?65?B?/?65?B?[-------------]?100.00%???p/s?0s
????>?minikube-v1.14.0.iso:?178.27?MiB?/?178.27?MiB??100.00%?1.62?MiB?p/s?1m51s
???Starting?control?plane?node?minikube?in?cluster?minikube
???Creating?hyperkit?VM?(CPUs=4,?Memory=6000MB,?Disk=20000MB)?...
???正在?Docker?19.03.12?中準(zhǔn)備?Kubernetes?v1.19.2…
????>?kubectl.sha256:?65?B?/?65?B?[--------------------------]?100.00%???p/s?0s
????>?kubelet.sha256:?65?B?/?65?B?[--------------------------]?100.00%???p/s?0s
????>?kubeadm.sha256:?65?B?/?65?B?[--------------------------]?100.00%???p/s?0s
????>?kubeadm:?37.30?MiB?/?37.30?MiB?[-----------]?100.00%?548.93?KiB?p/s?1m10s
????>?kubectl:?41.01?MiB?/?41.01?MiB?[-----------]?100.00%?497.14?KiB?p/s?1m25s
????>?kubelet:?104.88?MiB?/?104.88?MiB?[---------]?100.00%?477.49?KiB?p/s?3m45s
???Verifying?Kubernetes?components...
???Enabled?addons:?storage-provisioner,?default-storageclass
???Done!?kubectl?is?now?configured?to?use?"minikube"?by?default
如上安裝詳情所示,如果你的電腦中未安裝相關(guān)驅(qū)動(dòng),則會(huì)自動(dòng)進(jìn)行下載!經(jīng)過上述簡單的命令執(zhí)行步驟,到這里我們就將minikube安裝好了,是不是很簡單?
3)、驗(yàn)證MiniKube狀態(tài)相關(guān)信息
接下來我們看下minikube的運(yùn)行狀態(tài),命令及效果如下:
$?minikube?statusminikubetype:?Control?Plane
host:?Running
kubelet:?Running
apiserver:?Running
kubeconfig:?Configured
如上所示,可以看到此時(shí)Kubernetes的幾個(gè)核心組件已經(jīng)正常運(yùn)行起來了!接下來我們還可以具體看看kubectl的版本,命令如下:
$?kubectl?version?--client
Client?Version:?version.Info{Major:"1",?Minor:"20",?GitVersion:"v1.20.0",?GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38",?GitTreeState:"clean",?BuildDate:"2020-12-08T17:59:43Z",?GoVersion:"go1.15.5",?Compiler:"gc",?Platform:"darwin/amd64"}
可以看到在未指定具體的安裝版本時(shí),會(huì)默認(rèn)安裝最新版本!這里kubectl的版本為v1.20.0。
接下來我們繼續(xù)看看kubectl所指向的Kubernetes集群環(huán)境,命令如下:
$?kubectl?config?current-context
minikube
可以看到此時(shí)kubectl客戶端指向的Kubernetes集群環(huán)境就是我們本地所安裝的minikube環(huán)境!
此時(shí)我們還可以具體看看通過minikube所安裝的Kubernetes集群服務(wù)的版本信息,命令如下:
$?kubectl?version
Client?Version:?version.Info{Major:"1",?Minor:"20",?GitVersion:"v1.20.0",?GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38",?GitTreeState:"clean",?BuildDate:"2020-12-08T17:59:43Z",?GoVersion:"go1.15.5",?Compiler:"gc",?Platform:"darwin/amd64"}
Server?Version:?version.Info{Major:"1",?Minor:"19",?GitVersion:"v1.19.2",?GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d",?GitTreeState:"clean",?BuildDate:"2020-09-16T13:32:58Z",?GoVersion:"go1.15",?Compiler:"gc",?Platform:"linux/amd64"}
如上所示,這里顯示我們所安裝的Kubernetes Server版本為v1.19.2!
繼續(xù)查看Kubernetes的集群信息,命令如下:
$?kubectl?cluster-info
Kubernetes?control?plane?is?running?at?https://192.168.64.2:8443
KubeDNS?is?running?at?https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To?further?debug?and?diagnose?cluster?problems,?use?'kubectl?cluster-info?dump'.
查看kubernetes的節(jié)點(diǎn)信息,命令如下:
$?kubectl?get?node
NAME???????STATUS???ROLES????AGE????VERSION
minikube???Ready????master???2d3h???v1.19.2
可以看到minikube所安裝的是一個(gè)只有master節(jié)點(diǎn)的單節(jié)點(diǎn)集群!
接下來我們打開kubernetes dashbord,從圖形化界面上看看Kubernetes的運(yùn)行狀態(tài)!命令如下:
$?minikube?dashboard
???正在驗(yàn)證?dashboard?運(yùn)行情況?...
???Launching?proxy?...
???正在驗(yàn)證?proxy?運(yùn)行狀況?...
???Opening?http://127.0.0.1:50299/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/?in?your?default?browser...
執(zhí)行完該命令后,minikube會(huì)自動(dòng)在瀏覽器打開kubernetes dashbord,效果如下:

可以看到我們?cè)贛ac上通過minikube所安裝的Kubernetes集群的確已經(jīng)正常運(yùn)行,可以滿足我們學(xué)習(xí)Kubernetes的基本要求了!
最后看看minikube所支持的擴(kuò)展功能,命令如下:
$?minikube?addons?list
|-----------------------------|----------|--------------|
|?????????ADDON?NAME??????????|?PROFILE??|????STATUS????|
|-----------------------------|----------|--------------|
|?ambassador??????????????????|?minikube?|?disabled?????|
|?csi-hostpath-driver?????????|?minikube?|?disabled?????|
|?dashboard???????????????????|?minikube?|?enabled?????|
|?default-storageclass????????|?minikube?|?enabled?????|
|?efk?????????????????????????|?minikube?|?disabled?????|
|?freshpod????????????????????|?minikube?|?disabled?????|
|?gcp-auth????????????????????|?minikube?|?disabled?????|
|?gvisor??????????????????????|?minikube?|?disabled?????|
|?helm-tiller?????????????????|?minikube?|?disabled?????|
|?ingress?????????????????????|?minikube?|?disabled?????|
|?ingress-dns?????????????????|?minikube?|?disabled?????|
|?istio???????????????????????|?minikube?|?disabled?????|
|?istio-provisioner???????????|?minikube?|?disabled?????|
|?kubevirt????????????????????|?minikube?|?disabled?????|
|?logviewer???????????????????|?minikube?|?disabled?????|
|?metallb?????????????????????|?minikube?|?disabled?????|
|?metrics-server??????????????|?minikube?|?disabled?????|
|?nvidia-driver-installer?????|?minikube?|?disabled?????|
|?nvidia-gpu-device-plugin????|?minikube?|?disabled?????|
|?olm?????????????????????????|?minikube?|?disabled?????|
|?pod-security-policy?????????|?minikube?|?disabled?????|
|?registry????????????????????|?minikube?|?disabled?????|
|?registry-aliases????????????|?minikube?|?disabled?????|
|?registry-creds??????????????|?minikube?|?disabled?????|
|?storage-provisioner?????????|?minikube?|?enabled?????|
|?storage-provisioner-gluster?|?minikube?|?disabled?????|
|?volumesnapshots?????????????|?minikube?|?disabled?????|
|-----------------------------|----------|--------------|
上述列表就是minikube所支持的擴(kuò)展功能了,可以在學(xué)習(xí)時(shí)根據(jù)實(shí)際情況啟用,例如我們剛才啟用了dashbord,就可以看到列表中的狀態(tài)變成“enable”了。
—————END—————
參考鏈接:
#阿里云社區(qū)
https://developer.aliyun.com/article/221687
