如何確保有狀態 Kubernetes 的穩定性
Kubernetes 是公有云中應用程序部署的事實標準。然而,隨著企業將更多的工作負載遷移到 K8s,經常遇到應用程序穩定性的的問題。
在業務連續的場景中,在不同區域及云廠商的不同集群上恢復具有相同配置的應用程序可能相對容易,但應用程序需要數據才能運行,恢復一個應用程序的狀態是非常復雜的。
試圖為 K8s 的有狀態應用程序構建高可用性環境以履行其服務水平協議(SLA)并維護應用程序和數據可用性的企業面臨著以下挑戰。
復雜性
使用 Kubernetes 的主要問題之一是難以為有狀態應用程序設置存儲,同時保持彈性和應用程序移動性。公有云中的標準解決方案還有待改進,任何超出標準解決方案的東西都需要大量的專業知識來設置和維護。因此,通往有狀態、有彈性的運營之路還很漫長。它需要存儲、網絡和遷移方面的知識。許多團隊缺乏做這件事的資金、人力或專業知識。
困難在于,構建存儲基礎設施所需的技能與大多數 DevOps 專業人員受過培訓的技能有很大不同。大多數云原生團隊缺乏存儲專家的專業知識,他們接受過配置和維護專門的存儲網絡和設備的培訓,以確保所有的存儲都是可用的、有彈性的和有備份——前提是可以訪問公有云中的高級存儲解決方案的話。
供應商選擇受限
由于存儲和基礎設施來自特定的供應商(EBS、Azure Disk 等),供應商選擇受限和數據重力問題是不可避免的。數據重力(即某個位置的數據量)越大,未來就越難轉移到其他地方。應用程序不斷被拉到數據所在的位置,而過去的數據存儲選擇決定了其未來的位置。
當數據轉移到公有云時,服務提供商不可避免地會影響應用程序的性能。
彈性挑戰
說到彈性,僅僅依靠單一的云提供商有很大的局限性。然而,由于為有狀態的應用程序建立跨區域或多云基礎設施過于復雜,大多數組織除了依賴單一的云提供商或區域之外,別無選擇。
即使在不同的可用性區域之間遷移數據,仍然存在區域故障的風險。因此,為了給運行在云中的有狀態應用程序提供業務連續性,需要能夠立即在第二站點或區域進行恢復,才能不丟失任何數據。
風險
風險是不可避免的。但是,當你的穩定性計劃只是在 AWS 或谷歌云(統計學上故障最少)上運行你的業務時,就有麻煩了。
臃腫的基礎設施
此外,由于數據沒有其應用就一文不值,為了讓有狀態的 K8s 應用在不同的基礎設施和公有云廠商之間恢復,整個應用環境包括應用狀態必須被復制,并且完全不受應用所運行的底層基礎設施的影響。
隨著時間的推移,這些基礎設施變得越來越臃腫。對于一個拼命嘗試維持穩定的團隊來說,需要額外的變通方法的操作,就變得難以忍受了。
解決公有云彈性之謎
隨著復雜性的增加,對更復雜的彈性、性能和操作技術的需求也在增加,這就需要有一種方法讓復雜的事情變簡單。
為了解決這些問題,出現了一個新的類別。Stateful application mobility platforms. 這些平臺允許用戶配置有狀態的應用程序,而不用擔心它們是如何配置或部署的,允許有狀態的應用繼續不間斷地運行,并能夠在另一個位置恢復,而不會出現數據丟失。用戶可以放心,他們的集群可以在云廠商、區域和數據中心之間移動。
這將帶來更大的靈活性、更高的性能和更好的彈性,最終,通過允許有狀態的應用在不同地點之間自由移動來簡化它們的運行位置,使企業能夠利用“云”的能力,同時避免其局限性。
通過使用這些平臺,無論應用程序部署在哪里,數據都是可用的。
這個多云一鍵部署的可伸縮的存儲解決方案,實現了有狀態的 Kubernetes 的穩定性。