《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 05 Kubernetes - 簡介

本篇大綱

這篇文章是要講 Kubernetes 的簡介,雖然我覺得這主題已經講到爛掉,但還是給新手來說我還是會重講。

內文

day05-1.png

Kubernetes 簡稱為 K8s,是用於自動部署、擴充和管理「容器化應用程式」的開源系統。以自動化方式提供容器調度管理,能提升作業可靠性,並減少分配至日常運作的時間和資源。

接觸 K8s 之前,很多人最常玩的應該就是 Docker,Docker 也是個容器管理,但他的缺點如下:

  1. Failover:Docker 不是由多台主機組合而成,一旦遇到單點損壞,就會導致所有服務皆下線。這些服務都還很少就算了,應用在 Production 上就會有很多服務需要去顧慮,大型服務就會有很多 Container 組合而成。
  2. Scale up & down:資源限制只能一次開多台 Container,他沒辦法像 K8s 可以做資源調度,以支出成本來說,會希望在流量高峰的時候再打開多個 Container。
  3. Rolling Update:有想做 A/B Test 的情形,Docker 設定會比較麻煩,但 K8s 可以直接透過 Services 做設定轉接。

以上所說的這些,Kubernetes 都不必擔心,組合而成的 Cluster 只要節點、資源夠多,單節點損壞,別台節點的資源就會調度,把上面損壞的容器分散到各節點上分配。部署方式也可以隨心所欲去分配,Docker 無法做到的 Rolling Update,K8s 都可以做到。

筆者第一次接觸到 K8s 的相關服務時,我的感覺是他把很多東西切更細,像是 Container 跟 Service 之間的關係,沒有像 Docker 就是單服務單個 Container,而是每個 Service 下都會有許多 Container,但又不會覺得太瑣碎,可以依照自己的需求做修改。

總之,優點如下:

  • 部署方便:因為設計較模組化,可以自由使用、搭配。
  • 資源分配彈性:你可以自己設定 CPU & Memory 的資源,也可以交給 K8s 幫忙管理。
  • High Availiability:設定好 Cluster,調整好參數把服務放上去,K8s 就會依照你的需求去分配資源到各節點,隨時做好 Failover 的準備。
  • 開源、社群活耀高:K8s 的核心架構是開源(公有雲可能會有自己修改的版本),社群活耀度也是很高,上次發 PR 修改文件當天就 Merge 了。

K8s 有沒有缺點,其實還是有,必須要理解他的架構組成,還有虛擬化的情況,很吃對於底層運作的理解,也不是說每個轉換 Docker 後就能平安運作,對於 K8s 完全了解也是需要花上不少時間。

如果想要解決上面所說問題,K8s 可以說是做得還不錯,可以減少人力成本跟維護成本,權衡之下還是可以考慮引入 K8s。

下一篇我們就來介紹怎麼組合 Kubernetes Cluster 吧!

本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!

Source