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