前言
前面一篇文章有講到了有關 Rancher 的簡單介紹。接下來,這篇會提到我是如何在有網路的情況下,安裝 Rancher 以及去佈署一個 K8S cluster。另外,為何會標題也會特別寫說 via Internet
呢 ? 誠如我之前第一篇所描述,很多企業需求已經是在一個 On-Premise 的環境底下想要去做佈署,像是 IOT、邊緣運算等等的。因此,我未來也會去研究如何打包好一個 Rancher 的安裝包,並且利用這個包就可以成功裝出 Rancher 以及 K8S ! 那我們就看下去吧 !
安裝 Rancher
其實網路已經有很多大神教學過如何安裝 Rancher,這邊我也實際安裝一次,分享一下大概的流程。那我的目標是一台 AIO (All-In-One),也就是他是 K8S 的 master node 也同時是 worker node,我這邊同時也會把 Rancher 安裝在這一台上,資源給他用好用滿 XD。
Prepare:
Test machine: Ubuntu 16.04.1 (VM or physical node)
Already install: docker-ce
Execute:
1
sudo docker run -d --restart=unless-stopped --privileged -p 8080:80 -p 8443:443 rancher/rancher:latest
PS. 這邊 Port 的對應 (8080->80,8443->443) 是官方建議的做法。因為我們是要做 AIO,Server 以及 Agent 會在同一個 node。
完成之後,你就可以在網頁開啟 URL: https://localhost:8443,至此 Rancher-Server 端就裝好了 !
輸入你的密碼以及選擇你的 Cluster Type,我們這邊選擇右邊這個。因為我們只有一個 Cluster 在 Rancher 端。當然你選左邊的管理多個 Cluster 一樣是可以的。
至此,你就可以看到 Rancher 他本身自己的 K8S 架構,裡面有 Rancher 所必需的 components。有看到 K3S 了嗎 ? 這就是我們前一篇文章所提到的輕量化 K8S 架構。還沒結束,點選右上角的 Cluster Manager
,進入管理頁面。
設置 Server URL。到這邊,屬於 Rancher server 的部分才是真正完成了!
佈署 K8S cluster
完成設置 Server URL 後,就可以看到 cluster 管理頁面。接下來,就要來創建屬於我們自己的 K8S cluster,點選右上角的 add cluster
。
這邊有很多方式可以讓你創建 cluster,可以用常見的 Cloud provider,Amazon、Google等等。我們選擇中間的 Existing nodes,因為是屬於 bare-metal 的安裝方式。
輸入想取的 cluster name。
選擇你想要的 K8S version,目前 Rancher 最新可支援是到 v1.19.6。選擇你想使用的 CNI。我們沒有 provider,所以底下選擇 None。
接下來,他就會產生一段 command,它會針對你選擇 node 的 role,改變此 command 最後的一些 flag。這邊因為是要 AIO,所以三個都要選 ( 圖片只有選一個worker,記得另外兩個也要勾喔! )。勾選完之後,便可以把 command 丟到我們的機器去執行。
執行完 command 之後,如果沒有問題出現,那回到 Rancher UI 便可以見到 cluster 正在建置中囉! 建置完成便會顯示綠色。至此我們 AIO 就完成囉!
若是想再新增一個 worker node,可點選 Edit Cluster。
利用跟剛剛一樣的方式,這次只選擇 worker,把 command 一樣丟到另外一台已經裝好 docker 機器去執行,就可以囉!
最終,佈署了一個 AIO + 一個 worker node。
後記
其實安裝過程十分簡單,若是遇到一些問題,把錯誤訊息拿去餵狗(丟google),基本上也會迎刃而解。這邊想分享一些心得:
- 安裝好不一定就正常
有時候安裝好以上所有步驟其實不一定是好的,可能有些是 DNS 問題,防火牆的問題,都會導致 K8S 裡面的 components 可能會起不來。因此建議安裝完還是得登進去 UI,看一下創建出來的 cluster,Namespaces 選擇 ALL
,去檢視一下所有的元件是不是運作正常。
- 可以善用 Event list
Cluster manager 頁面底下有 Event list,可以很快讓你知道目前 cluster 有出現問題與否。
- 檢視 cluster,
docker ps -a
不需要常用
其實講不需要常用也不太對,有時候還是可以抓出不正常 Exited 的 container,並去抓它的 logs,所以應該是說可以用但是幫助有限。相信大家都對 docker 非常熟悉,常常要檢視目前系統狀態都會先 docker ps -a
,檢查是否有不正常的或是 Exited 的 container 存在。在 K8S 的環境底下,其實它很多佈署的方式,是利用帶一個 container 起來並執行一個 command,執行完便會把 container 自動 Exit 掉。所以其實當你下 docker ps -a
,會看到很多 Exited 狀態的 container,有時候很難去細看並判斷 cluster 現在是否健康。其實很多 Exited(0) 的狀態是 OK 的,表示執行成功且已結束掉。
- 可以善用
kubectl
剛剛講說盡量不用 docker ps -a
,你還有另外一個工具 kubectl
,後面文章我也會提到如何安裝及使用。利用 kubectl
可以針對 K8S 的元件進行檢視 status,查看logs,不管是 pod
、deployment
、service
都可以。另外,它當然也可以用來去佈署屬於你自己的 components。
總結
安裝 Rancher + K8S cluster 並不困難,很多網路大神都已經展演過了,但其實針對離線安裝的說明並不多。所以之後,我將會去研究如何將上述過程做到離線安裝,必須要去設置 Rancher 的 private registry,並且包含一些必要的 images。除此之外,相信大家也會想說,上述有些安裝步驟必須進到 UI 給予一些參數去做設定,那麼如果今天是要自動化去安裝 K8S cluster 的時候要怎麼做? 想要整進公司內部 CI/CD 該如何做呢?。因此,我後續文章也會研究如何使用 Rancher 的 API,並達到利用 shell script 自動化佈署整個 K8S 架構。
Contact me
有任何疑問或是建議歡迎聯絡 Jimmy!
Gmail: jimmyw86878@gmail.com
-
Previous
Rancher with K8S cluster 之旅 (1) - Introduction -
Next
Rancher with K8S cluster 之旅 (3) - Offline installation of Rancher and K8S cluster