主要內容:
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官網