Kubernetes 這個名稱源自希臘語,意為「舵手」或「領航員」,這也解釋了為何標識(LOGO)是一個船舵。K8s 是 Kubernetes 的簡寫,這個縮寫是透過「K」和「s」之間的八個字母而得名。Kubernetes 由 Google 於 2014 年開發,並隨後捐贈給雲原生計算基金會 (CNCF)。
Kubernetes 是一個開源的容器編排平台,旨在自動化應用程式的部署、擴展和管理,特別是針對容器化的應用程式。它提供了一個靈活的框架來運行分散式系統,負責應用程式的擴展、故障轉移和部署模式等操作。
自動化運維
Kubernetes 提供了強大的自動化運維功能,使應用程式運行更加高效。它能自動處理容器的啟動、停止、重啟和更新,減少手動干預。例如,當某個容器發生故障時,Kubernetes 會自動重新調度並啟動新的容器以確保應用程式的穩定運行。
彈性擴展
Kubernetes 擁有自動擴展功能,可根據應用程式的負載動態調整容器數量,保證系統性能的穩定。無論是水平擴展(增加更多容器)還是垂直擴展(增加容器的資源配額),Kubernetes 都能輕鬆應對。例如,當流量高峰來臨時,Kubernetes 會自動擴展應用程式的實例數量;當流量減少時,它會自動縮減實例數量以節約資源。
高可用性
Kubernetes 通過多副本管理和故障自動恢復來確保應用程式的高可用性。它能在多個節點上運行應用程式的副本,即使某個節點發生故障,應用程式仍能正常運行。此外,Kubernetes 支援滾動更新和回滾功能,確保應用程式在更新過程中的平滑過渡和快速恢復。
資源管理
Kubernetes 能夠高效地管理 Cluster 資源,根據設置的資源限制和配額,確保每個應用程式獲得所需的計算資源。通過資源請求和限制,Kubernetes 可以控制每個容器的 CPU 和RAM使用量,防止某些應用程式過度消耗資源而影響其他應用程式的性能。
在 Kubernetes 中,有許多核心組件。在這裡,我們將介紹三個最重要的元件:
Pod
Pod 是 Kubernetes 的基本運行單位,包含一個或多個容器。Pod 內的容器共享同一個網路命名空間,能夠通過 localhost
相互通訊。每個 Pod 都有自己的 IP 地址,並且 Pod 之間是相互隔離的。
Node
Node 是運行 Pod 的實體主機或虛擬主機。每個 Node 上運行 Kubelet(負責管理 Pod 的生命周期)、Kube-proxy(實現 Service 的網路功能)和容器運行時(如 Docker)。
Cluster
Cluster 是一組 Node 的集合,由控制平面 (Control Plane) 進行管理。控制平面包括 API Server(處理 REST 操作)、etcd(保存 Cluster 資料)、Controller Manager(管理控制循環)和 Scheduler(負責將 Pod 分配到 Node)。
僅僅閱讀這些描述可能會讓你感到有些抽象,讓我們將上面的文字描述視覺化。下圖展示了由兩個 Node 組成的一個 Cluster,各 Node 上運行著不同的 Pod。
+------------------------------------------------+
| Cluster |
| +---------------+ +------------------+ |
| | Node 1 | | Node 2 | |
| | +-----+ | | +-----+ +-----+ | |
| | | Pod | | | | Pod | | Pod | | |
| | +-----+ | | +-----+ +-----+ | |
| | +--------+ | | +--------+ | |
| | | OS | | | | OS | | |
| | +--------+ | | +--------+ | |
| | +--------+ | | +--------+ | |
| | |Hardware| | | |Hardware| | |
| | | 6 CPU | | | | 12 CPU | | |
| | | 16 GiB | | | | 64 GiB | | |
| | +--------+ | | +--------+ | |
| +---------------+ +------------------+ |
+------------------------------------------------+
Kubernetes 通過自動化運維、彈性擴展、高可用性和高效資源管理,極大地簡化了現代應用程式的部署和管理。這使得開發和運維團隊能夠更加專注於應用程式的開發與優化,而非基礎設施的維護。隨著 Kubernetes 的普及,越來越多的企業開始採用這項技術來提升其雲原生應用程式的效率與可靠性。
明天會接著講解「Kubernetes 架構與組件」,在理解了基本概念後,進一步深入了解 Kubernetes 的運作方式及各組件的角色,為後續的進階主題打下堅實的基礎。