前面已經學習了如何使用 Docker 建構你自己的 Container Image 與 運行 Container,今天我們將開始介紹 Kubernetes 已經他帶給我們什麼好處。
Kubernetes,簡稱 K8s,是一個強大的開源容器管理平台,用於自動化和管理容器化應用程式的部署、擴展、以及運營。它最初由 Google 開發,,現在由雲原生計算基金會(CNCF)維護。Kubernetes 的名稱源自希臘語,意為“舵手”或“駕駛員”,這個名稱非常貼切,因為 Kubernetes 用於導航和管理容器應用程式的生命周期。
想像一下我們再生產環境有多台伺服器時,每台伺服器上都部署了數十個容器服務時,我們希望每個服務都能正常運行且具有高可用性,比如於服務崩潰時,能自我修復,甚至服務因為請求流量大增時,能利用進行水平擴展,分散服務的處理壓力。
而 Kubernetes 提供了這些特性,以下舉出幾個常使用到的部分
例如容器要求使用 2 GB 的 Memory,Kubernetes 會嘗試找到至少有 2 GB 可用的 Memory 的伺服器來運行該容器。
運行於 Docker 的 container,若 container 內部的服務崩潰時,預設不會自動重啟,需人工處理,而 Kubernetes 能依照需求自動重啟。
當你的同一個服務部署了多個 Container instance 時,會希望有個穩定提供服務的方式(DNS/IP),不會因為 instance 增加/減少而改變,且希望請求流量能平均分配
當然還有更多強大的特性,如更有效的利用資源(CPU/MEM)、聲明式管理、配置管理(ConfigMpa/Secret)、Storage 編排...等等,這些讀者能從 Kubernetes 官方 獲得更多資訊。
圖檔來源 CNCF / How Kubernetes works
Kubernetes 通常由多個伺服器組成,稱為 Kubernetes Cluster,而這些伺服器大致分為兩個類型
控制台:Master Node 是 Kubernetes Cluster的大腦,負責整體控制和協調集群中的所有操作。它接收用戶和管理工具的指令,並確保集群中的所有工作都按照期望運行。
決策中心:Master Node 包含各種控制器,這些控制器負責管理和維護應用程式的狀態。例如,它確保應用程式的副本數量正確,並根據需求進行擴展或縮減。
資源調度:Master Node 的排程器(Scheduler)負責確定在哪個工作節點上運行容器,以確保最佳的資源利用率和性能。
以上功能是由架構圖中的 Control plane 提供的,能大致認為運行 Control plane 伺服器為 Master Node
容器執行:Worker Node 是實際運行容器的地方。它負責管理容器的生命週期,包括創建、啟動、停止和清理容器。
資源提供者:Worker Node 提供計算和儲存資源,以運行容器。它確保容器具有足夠的資源(CPU、記憶體等)以正常運行。
網絡管理:Worker Node 上的 Kube Proxy 確保容器可以相互通信並與外部網絡進行通信。它處理網絡路由、負載平衡和端口轉發等網絡任務。
總體來說,Master Node 是 Kubernetes Cluster 的控制中心,負責接收管理者的請求,並依照要求進行調配,而 Worker Node 是實際運行容器的地方,負責容器的生命週期管理和資源提供。它們共同協作以實現容器化應用程式的部署、維護和高可用性運行。
大體來說使用 Kubernetes 能解決開發者與伺服器管理者再生產級別遇到的一些問題,讓開發與維護工作更有效率。
今天我們簡單的介紹了 Kubernetes 的特性與解決哪些問題,明天會用 kind
在本地架設一個小的 Kubernetes 環境,方便後續介紹 Kubernetes 的組件。