接下來要開始深入介紹 Kubernetes Components,所以這一章說一個有趣的東西,就是為什麼 Kubernetes 會被稱為 Cloud OS。
這系列文章前面提到,作業系統是管理資源的角色,而 Kubernetes 用 Pod 做為管理資源的統一單位,這樣的設計很像作業系統的 Process,所以我們可以把 Kubernetes 當作是一個作業系統。
Kubernetes 跟作業系統之間的相似很容易用 Process 以及 Pod 這樣的統一排程單位來類比,但是 Cloud 就比較複雜了,因為我們要先瞭解什麼是 Cloud。
NIST 800-145 有明確的定義 Cloud 的五個主要特性
On-demand self-service:
消費者可以自行根據需求自動調配運算資源,如伺服器時間和網絡儲存,無需與每個服務提供商進行人工互動。
Broad network access:
資源可以透過網絡取得,並通過標準機制訪問,這些機制支持多種異質的瘦用戶端或厚用戶端平台(例如,手機、平板電腦、筆記型電腦和工作站)
Resource pooling:
服務提供商的運算資源以多租戶模式進行池化管理,根據消費者需求動態分配和重新分配不同的實體和虛擬資源。這種資源管理具有位置獨立性,通常消費者無法控制或了解具體資源的位置,但可能可以在較高的抽象層次指定位置(例如,國家、省份或資料中心)。資源的例子包括儲存、處理、記憶體和網絡頻寬。Rapid elasticity:
資源可以根據需求快速擴展或縮減,有時是自動進行。對消費者而言,所提供的資源似乎是無限的,隨時可以按任何數量進行調配。
Measured service:
雲端系統自動控制和優化資源使用,並依據服務類型(如儲存、處理、頻寬和活躍用戶帳戶)的適當抽象層次進行計量。資源使用情況可被監控、控制和報告,為服務提供者和消費者提供透明度。
由於 Kubernetes 具備這些特性,所以我們可以將之稱為 Cloud OS。
On-demand self-service:
用戶可以按照自己的需求,根據 Pod Spec 撰寫設定文件或是打 API,然後請求 Kubernetes 分配相關的資源,不需要直接跟資源提供者互動。這樣的特性就像是隨需即取的自助服務。
Broad network access:
Kubernetes Component 之間的溝通都是 HTTP Protocol,不管你是伺服器還是筆記型電腦,只要網路觸及得到的地方,你都可以管理 Kubernetes,這樣實現了廣泛的網路存取,不需要到機房。
Resource pooling:
Kubernetes 把 Node 做為資源池,只要用戶提出需求,就可以動態分配相關的支援,而用戶並不需要知道自己的請求在哪一台機器上佈署。
Rapid elasticity:
Kubernetes Pod 數量以及大小可以根據負載快速地伸縮,也有自動伸縮的功能。這些功能提供按需的彈性。
Measured service:
Kubernetes 提供資源使用的相關數據,像是 Prometheus 可以對測量資源的使用,從而報告,這讓用戶可以計量,從而透明化成本或優化資源使用。就實務上,在多租戶環境下我們可以使用 kubecost 根據資源使用的相關數據對租戶做成本分析。
Kubernetes 具備這些 Cloud 特性,有許多組織會有一個團隊做把 Kubernetes 做為內部的 PaaS 產品,統一管理容器,所以這個章節介紹了這些 Cloud 特性。