傲視Kubernetes(二):Docker映象搭建與本地Kubernetes環境搭建

淡墨痕發表於2020-12-11

主要內容:

1、Docker與Kubernetes的關係

2、SpringBoot微服務的Docker映象建立

3、Kubernetes本地環境搭建

一、Docker與Kubernetes的關係

在說明Docker與Kubernetes的關係之前,要先同步一下Docker定義--Docker是什麼?Docker是一個打包、分發和執行應用程式的平臺。它是一種容器化技術,可以使它建立的容器執行在不同的機器、不同的作業系統上(此處可以類比Java的跨平臺特性)。不過docker是依賴於linux核心的,所以如果在windows系統上執行,實際是執行於windows上的虛擬linux環境中。

一個Docker執行時容器就是一個程式。Docker與虛擬機器的區別,很大一點在於容器沒有自己的作業系統核心,它依賴於宿主機的作業系統,更輕量級;而虛擬機器有自己的作業系統核心,相對更自由,但更重量級。

二、SpringBoot微服務的Docker映象搭建

由於SpringBoot自帶tomcat,所以找一個JDK映象就夠了。此處博主用的基礎映象是 williamyeh/java8:latest。

1、簡易專案構建:

 

 bootstrap.yml檔案內容(指定服務埠):

1 server:
2   port: 8001

Dockerfile檔案內容(在pom中指定了打包檔名jugg):

1 FROM williamyeh/java8:latest
2 EXPOSE 8001
3 
4 ADD jugg.jar /jugg.jar
5 ENTRYPOINT ["java","-jar","/jugg.jar","--server.port=8001"]

2、構建映象

先將jar包和Dockerfile檔案上傳到伺服器的同一個目錄上去:

 

然後執行指令建立映象(映象名jugg):

1 docker build -t jugg .

 

 成功後執行下 docker images,可以看到我們剛建立的映象:

 再執行run讓映象執行起來 

1 docker run --name juggcontainer -p 8001:8001 -d jugg

name後面是指定容器名,-p後面指定埠。注意Dockerfile檔案中EXPOSE暴露的埠並沒有實際效果,執行run命令時指定的埠才是最終使用的埠。

 

 瀏覽器訪問下服務,完美!(注意檢查伺服器的埠是否能被訪問到)

 

三、Kubernetes本地環境搭建

1、minikube的安裝與啟動

 Kubernetes本地環境搭建一般都是用minikube,這玩意的版本和環境關係很大,稍不注意安裝的時候就會有各種意外。minikube安裝時有兩種下載地址,一個是國內阿里雲的,一個是國外谷歌的地址。阿里的好處就是網路穩定,基本都會下載成功。而用谷歌的地址,很不穩定。但是呢,博主用阿里雲的下載啟動時,遇到了各種各樣的問題(博主的雲主機是單核CPU,有的報錯就跟此相關,如果是雙核CPU,估計安裝與啟動會順利得多),一怒之下又改用谷歌的minikube地址,雖然網路波動較大,但多試了幾次,最後順利啟動成功。

首先執行命令下載minikube(若無下載進度,則ctrl+C終止後重新執行命令,反覆幾次,總會有成功的時候):

1 curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.23.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin

然後執行啟動指令,如下。博主的雲主機上未安裝虛擬驅動,所以直接指定為none,但還得指定下cpu核數以及忽略掉核數不匹配的錯誤,否則會終止啟動流程:

1 minikube start  --vm-driver=none --extra-config=kubeadm.ignore-preflight-errors=NumCPU --cpus 1

博主前兩次執行都報錯獲取不到版本:

 

 直到執行第三次才成功啟動:

 

注意每次因為版本問題導致start失敗之後,最好清空一下minikube的記錄,重新下載,清空minikube記錄的指令:

minikube delete && rm -rf ~/.minikube && rm -rf ~/.kube

 

2、kubectl的安裝

kubectl是kubenetes的客戶端,有了它我們才能通過命令列與kubernetes叢集進行互動。這個的安裝就簡單多了,執行指令:

curl -LO https://storage.googleapis.com/kubenetes-releases/release/v1.19.4/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

如果多執行幾次也下載不下來,你又沒啥辦法的話,可以點選這個連結下載:https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl

下載下來之後手動往usr/local/bin目錄傳上去,再執行上面指令中的  chmod +x kubectl 命令即可。

安裝好之後,打個kubectl指令檢驗一下效果:

 

 完美!

 

參考文獻:

1、《Kubernetes in Action》  ...Marko Luksa

2、Kubenetes官網,minikube官網

相關文章