多個K8S的叢集管理,以及輕量化的edge部署(Rancher / K3S / Monitoring / Logging / Storage)
對於為什麼想要升級到k8s,本文就不做討論了。本文專門針對那些想要升級到k8s架構的技術人員,推薦一套超超超級棒的k8s叢集管理工具 — Rancher,以及我個人認為完全夠1000台server以下的叢集使用的k8s distrbution — K3S 介紹。希望…

多個K8S的叢集管理,以及輕量化的edge部署:Rancher + K3S
對於為什麼想要升級到k8s,本文就不做討論了。本文專門針對那些想要升級到k8s架構的技術人員,推薦一套超超超級棒的k8s叢集管理工具 — Rancher,以及我個人認為完全夠1000台server以下的叢集使用的k8s distrbution — K3S 介紹。希望 Rancher + K3S 可以讓大家先在單機的環境實驗你想要上k8s的好點子,並且無痛直接上這樣的架構變成production grade ready的部署環境。或者你可以直接follow instruction建置你自己的Rancher + K3S Cluster.
Rancher
先說Rancher。傳統上使用k8s需要大量使用kubectl工具進行管理,並且在IaC的原則底下把所有的yaml檔案都進行管理。這樣做本身沒有問題,但是遇到三個挑戰
- 快速實驗不方便,因為部署新的cluster以及寫新的yaml檔都需要額外花許多時間設定。公司自己架設的叢集更需要有恰當的DNS、Load Balancer、Ingress、K8S Volume(Storage Class)配合。
- 一但公司的k8s cluster多起來,devops engineer就需要大量的精力管理每個cluster的權限(IAM management)、設定、機器、logging、backup、monitoring (hardware and deployments)… 等等。
就是因為k8s管理成本如此的高,大部分的中小型企業才會大量倚賴Cloud Provider像是GCP, Azure, AWS。這些Cloud Provider提供了一個方便你快速部署以及嘗試的介面,並且在上述所說到的k8s管理面向,也都提供了解決方案。這些cloud provider坦白說都做得很棒,大概只有兩個缺點
- 貴桑桑
- 一但選定了一家,很容易從此被綁定。因為整套管理系統轉移到另外一間廠商的成本很高。綁定的結果,更造成系統性當機的風險(譬如之前Azure一次當機三小時,你的k8s做得再好都沒用,因為通通在Azure上面)。
Rancher是一套open source,完全免費的multiple k8s cluster管理系統。支援管理既有的k8s cluster,也可以透過Rancher在Cloud上面開啟新的k8s cluster.
圖片中可以看到幾間主要的cloud provider都支援。一但不同的Cluster都註冊好了之後,Rancher提供一個集中管理介面

包括Rancher自己的使用者管理(可能每個cluster要設定不同的人員管理層級),每個cluster的狀況概覽,CICD的整併等等。針對單一Cluster,也提供各樣的監控整合,並且甚至為大多數kubectl的指令都提供了圖形化的介面來操作



再來介紹一個好用的功能!我們都知道Helm Chart是個美好的世界,而Rancher上面也可以做Helm Chart的管理與安裝(這邊稱為App & Market Place)。Rancher官方有提供幾個管理叢集最常用的Helm Chart,但是使用者也可以新增自己的Helm Chart(像是我有成功安裝minio和airflow)

透過點擊幾個按鈕,我們就把整個cluster的monitoring都設定好了!Rancher有事先幫我們configure好常用的chart(像是node statistics, pods, deployment, coreDNS metrics, …etc)

也幫我裝了alert manager真是太貼心惹吧~

在這麼多介紹以後,還是建議大家直接到 Rancher 的官方網站具認識更多。這邊做一點總結,Rancher是
- 容易安裝的k8s管理(創建,刪除,權限,狀態)工具,就算你只有一個Cluster也完全適合使用。
- 透過圖形化介面進行大部分的kubectl的操作,並且所有透過圖形話介面部署的resrouce都可以再把他的yaml下載下來。
- production ready 的 hybrid cloud 叢集管理工具。
K3S
再來談談K3S。首先Rancher為了做到跨平台的k8s叢集管理,他們自己就做了一套完全CNCF-certified Kubernetes distribution: RKE。Distribution這個億的意思,有點像是Linux distribution的意思。RKE並不是Kubeadmin的一個fork,而是擁有共同的核心之上,再去建構出的一套k8s engine。有點像是Google的GKE或者Azure的AKS。RKE解決了k8s安裝困難的問題,搭配著Rancher使用,在baremetal server建立一個k8s叢集又快又輕鬆。
但是這裡我更推薦的是K3S,也是Rancher自己做的一個CNCF-certified Kubernetes distribution。K3S一開始是他們自家的toy project,有點像是minikube為了要方便測試(可以在單一台機器開啟完整的k8s cluster)。但後來太讚了,然後整個project就變成production grade,大改了一波程式碼,最後K3S所需要的memory僅僅500mb (但是建議還是要1G),並且整個binary的size也才不到50mb,小到可以放在edge。
K3S之所以容量者以這麼小,也因為他是Opinionated k8s engine
Opinionated: An opinionated person is certain about their beliefs, and expresses their ideas strongly and often.
Opinionated 這個字有點負面,比較像是固執的,偏執的。但是在library的世界,opinionated有時候卻是好的,因為省掉我們評估上的困難。像是Python也有一堆不同的語法選擇,但是black就是一個opinianated linter,讓團隊不要再彼此辯論怎樣才是最好的寫法,通通跑black就對了。
那Opinionated k8s engine是什麼意思呢?意思是K3S by default直接選擇了他最喜歡的ingress (Traefik), load balancer (klipper-lb),部署後也直接開一個storage class給你。如此的opinionated的結果就是
- K3S的整個binary size超級小,小到可以部署在Raspberry Pi上面。
- 部署速度超級快,在我們公司的server只花了一分半就開起來一個single node cluster。
- 部署超級輕鬆,一個指令就把完整的k8s cluster開起來。
Rancher + K3S 祝你新年快樂!