- Kubernetes云原生數據管理
- (美)Jeff Carpenter(杰夫·卡彭特)等
- 568字
- 2024-05-11 18:19:01
Docker,容器和狀態(tài)
分布式云原生應用的狀態(tài)管理問題并不是Kubernetes獨有的。搜索一下就能發(fā)現,其他容器編排系統(tǒng),如Mesos和Docker Swarm等也都一直在關注有狀態(tài)工作負載。究其原因,一方面與容器編排的性質有關,另一方面則是由容器本身的性質決定的。
下面來談一談容器。容器的一大關鍵價值定位就是臨時性。因為容器的設計初衷就是可以隨用隨建并且可以替換,所以容器要能快速啟動并使用盡可能少的資源來節(jié)省開銷。基于此,大多數容器鏡像都是在基礎鏡像中創(chuàng)建的。這些基礎鏡像包含精簡的、基于Linux的開源操作系統(tǒng),如Ubuntu,這些系統(tǒng)可以快速啟動,并且僅包含容器化應用或微服務的基本庫。顧名思義,容器的設計是自包含的,將所有依賴項都整合到不可變鏡像中,而將容器自身的配置和數據都存儲在容器外。這些特性賦予了容器可移植性,即容器可以在任何兼容的容器運行時運行。
如圖2-1所示,與傳統(tǒng)的虛擬機相比,容器所需的開銷更少。每個虛擬機上都運行一個客戶機操作系統(tǒng),并通過Hypervisor(見網址列表條目[17])調用底層的主機操作系統(tǒng)。

圖2-1 容器化方案與虛擬化方案的對比
盡管容器技術使得應用更具可移植性,但事實證明,移植應用數據的難度也隨之加大。由于容器本身是臨時的,因此任何需要超出容器生命周期的數據都必須定義在容器外。容器技術的關鍵特性是提供相關機制以便連接到持久化存儲,而容器編排技術的關鍵特性則是調用容器以便高效地訪問持久化存儲。