Rancher with K8S cluster 之旅 (2) - Install Rancher and deploy a K8S cluster via Internet

Posted by Jimmy's Blog on February 7, 2021

前言

前面一篇文章有講到了有關 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,不管是 poddeploymentservice 都可以。另外,它當然也可以用來去佈署屬於你自己的 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