繼這幾天完成docker-compose的練習後,決定馬上來使用一下目前最流行的多容器控制的解決方案:kubernetes。承續之前的練習方式,此次也先制定練習的目標,大致上如下:
- 安裝和熟悉基本運作環境和指令 。
- 創建範例:用kubernetes建置一個最基本的Hello world服務,期望是能像docker那樣運作。
- 創建pod.yaml:用設定組態檔案(Pod manifest)yaml檔案(pod.yaml)。
這次的整體操作參考IT邦的相關筆記,基於這次實作只有半天的時間,所以選擇相對簡單的方式來實作。
安裝和創建
基本上花了一些時間熟悉如何在本機進行kubernetes的測試方式和安裝方法。選擇用Minikube的方式來創建環境,這步驟需要安裝的工具如下:
- Kubernetes
- VirtualBox
- Minikube
要注意的是,如果原本就有安裝docker了,要記得在docker的控制畫面中開啟kubernetes的功能。
創建範例
這步驟就相對複雜很多,因為需要先搞清楚container、pod和services之間的關係。這邊就推薦一下之前看過很有趣的小繪本:The-Illustrated-Childrens-Guide-to-Kubernetes.。
理解基本元件後,實作部分比較複雜的只有需要的docker’s image必須要從docekr hub上抓下來。因此,需要另外準備一個專門為了練習用的docker’s image(該範例的完整資料在github)。
由於中間有許多指令要紀錄,因此花了一些時間紀錄下每個指令的用途和方法。
最後,善用一些檢查狀態的指令來確認pod的狀態,中間我有因為搞錯image名稱,導致無法正常運作。正常情況下,kubectl get pods 的狀態欄(Status)不應該顯示ErrImagePull 與 ImagePullBackOff 這兩種狀態,這都是代表無法取得image,因此,特別需要注意一些設定上的細節。
創建Pod.yaml
用這種方式創建pod,可以省卻一些輸入指令的功夫。而且也可以很明確的宣告該pod的一些資料,方便管理。
結論:
由於時間有限,只好先用較為簡單的方式實作過一遍,後續有更充足的時間再補足本文的不足之處。
參考資料: