容器 StateFul Kubernetes StateLess

K8s非傳統三層式應用架構 狀態資料儲存管控成痛點

有狀態容器資料管理保護 Astra取代拼湊腳本工具

2021-07-05
容器正成為IT基礎架構中不可或缺的環境平台。然而隨著企業對於容器的運用愈趨成熟,有狀態(Stateful)應用程式的儲存與管理挑戰也開始浮現。

 

身處數位經濟時代,IT基礎架構必須更靈活、具備可移植性以及擴充的彈性才能因應業務發展需求,而容器技術正具備了這些優勢,不僅可以加速部署,同時還能提供DevOps敏捷性,因此,愈來愈多的企業選擇將應用程式遷移到容器化的架構之中。事實上,多家調研機構也非常看好企業容器應用市場,Gartner預估到了2022年75%的企業將使用容器;而IDC也預測,到了2023年,全球將有50%的企業把應用程式部署在容器化的多雲環境,台灣導入腳步雖較慢但屆時也將有30%的企業採取這個做法,藉以獲得高度彈性的系統部署和管理,並建立數位營運韌性來迎接新挑戰。

顯而易見,容器正成為IT基礎架構中不可或缺的環境平台。然而隨著企業對於容器的運用愈趨成熟,有狀態(Stateful)應用程式的儲存與管理挑戰也開始浮現。NetApp台灣區技術長張展智認為,一方面,隨著人們對於數位體驗的要求愈來愈高,現今的容器應用程式幾乎都需要有狀態;而另一方面,因為創建大量容器非常容易,當成千上萬臨時容器的生命週期僅有數秒鐘或幾分鐘時,管理以及資源利用最佳化也成企業的一大課題。

有狀態容器應用攀升

為了協助企業克服容器資料保護的難題,NetApp推出了NetApp Astra(早先稱為Project Astra),以便為有狀態的應用程式提供資料保護、災難復原以及實現應用程式與資料的可攜性。其包含了幾項關鍵功能,如可對資料進行保護的快照、可因應災難復原(DR)的遠端備份機制,以及可藉由複製功能來簡化應用程式的可攜性。當企業所建立Kubernetes(K8s)叢集,遇到資料被意外刪除或損壞時,快照功能可以協助企業還原至前一版本的快照資料,另外,也能運用遠端備份功能設置DR環境,而且整個應用程式及資料都可以從Kubernetes叢集遷移另一個叢集。

「不少企業正面臨著有狀態應用程式的挑戰。」他解釋,許多容器應用程式一開始確實是以無狀態(Stateless)來實現。無狀態的應用程式就像是靜態的Web網頁,在網頁上執行任何動作都不會留下紀錄,好處是可以隨時快速擴展或是刪除,即便誤刪了,也只要重啟即可。然而,在數位潮流下,人們愈來愈強調數位體驗,許多服務都是依據使用者的習慣來自訂頁面,即便是Web網頁,現今已經很少運用無狀態應用程式來打造,取而代之的是有狀態應用服務。

企業正面臨K8s儲存挑戰。(資料來源:NetApp)

「有狀態應用服務可以簡單想像成Netflix,」張展智進一步說明,Netflix可以記錄上回觀看節目時離開的地方,或者依照個人的喜好推薦相關的影片,之所以能夠實現,除了背後有人工智慧與大數據的協助之外,容器內的資料也因為已被保留在持續性儲存(Persistent Storage)媒體中,因此即便該容器被刪除,重啟的容器也能很容易地運用這些資料。亦即有狀態的應用程式會保留連結狀態(Connection State)和會話狀態(Session State),並且存放在持續性儲存中。

「從趨勢方向來看,有狀態應用程式其實已經是必然。」他舉例,購物網站是一個典型的案例,如果仔細拆解購物網站,不難發現,購物網站其實是由許多應用程式或服務提供而來,記錄使用者狀態的User Session可能是置於某一個Kubernetes服務中,產品映像檔則是存放在適合物件儲存的Ceph,而產品的資訊則可能存放在MongoDB,甚至還會有許多頁面推薦使用者可能感興趣或是類似的產品,這些資料與交易紀錄必須被留存下來才能在來來去去的容器中繼續被運用。

UID不一致成難解痛點

然而,現今企業面臨的挑戰之一是,因為容器的生命週期可能非常短暫,在此情況下,資料可能被存放在容器本身或是暫存區內,管理將變得非常困難。即便資料有被妥善存放在Persistent Volume(PV),一旦容器被刪除,這些資料將變得難以管理,因為企業無法判斷這些資料是否還有價值,必須將PV掛載起來才能夠確認,導致管理上變得非常麻煩。

而另一方面,當資料須進行Clone或者異地備援時,不斷變化且一長串難以判讀的唯一識別碼(UID),也成為一個難解的痛點。「企業必須要手動來對應不斷變化的UID,或者是分多個步驟來進行操作,其實是非常無效率而且複雜的。」張展智指出,在Kubernetes環境上如果要備份,必須備份Control Plane(通常是Master節點,節點內的資料通常是存放在etcd),通常會複製兩份或三份。另外,PV也需要備份。但是現在並沒有一個簡單的圖形化介面或是自動化程式來加以實現。這也是為何NetApp要推出NetApp Astra的原因,目的就是希望能夠提供一個更直覺的管理方式,特別是在DR設計的過程中,DR Site的Worker Node每次都要進行確認,對企業而言其實是很大困擾。

整合多方案降低挑戰

針對這些挑戰,除了NetApp Astra已可以支援Google Cloud以及Azure等公有雲,並且可在多混合雲端內部和之間,輕鬆、快速地管理、保護和移動Kubernetes應用程式之外,同時也與Trident、Spot Ocean與Spot Wave進行整合,一同協助企業實現自動化的資料保護、DR的規劃與建置,以及應用程式的可移植性與遷移。

他進一步說明,Trident是一個開源、動態的外部儲存編排器,其可以介接NetApp旗下的所有儲存設備,像是NetApp ONTAP、NetApp Solid、甚至是雲端的NetApp Cloud Volumes,並且針對容器環境提供一個Persistent Volume,如此一來,就可以直接存取PV而不需要再做等待的動作。NetApp Spot則是一個隨用隨付(Pay as You Go)的服務,可以針對公有雲環境進行優化。而Spot Ocean主要是在容器環境中協助節省成本,確保效能,若是容器的執行個體不夠,會建議企業搬移到比較高效的環境,但若是企業超額部署,也會建議更適合的環璄。至於Spot Wave則可以優化Spark叢集,以減少雲端浪費與費用。

「隨著企業對於容器的運用愈趨成熟,有狀態容器應用勢必會愈來愈常見,」張展智強調,雖然Kubernetes在1.9版本中正式釋出的StatefulSet能夠解決部份問題,但對於多數IT人員而言,困難度依舊不低,企業需要一個更簡便的方法,而NetApp Astra可以讓IT不必開發拼湊的腳本和管理工具來完成這些任務,降低管理負擔與資料保護挑戰。

 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!