云原生全景图之六 | 托管 Kubernetes 和 PaaS 解决什么问题
作者 | Catherine Paganini、Jason Morgan
來源 | K8sMeetup
頭圖 | 下載于視覺中國
在本系列之前的文章中,我們討論了 CNCF 云原生全景圖的各層:供應層、運行時層、編排管理層以及應用定義和開發層。本文我們將聚焦在平臺層。
正如我們在本系列文章中看到的那樣,每個類別都解決了特定的問題。僅僅存儲并不能提供管理應用程序所需的全部功能,你還需要編排管理、容器運行時、服務發現、網絡、API 網關等工具。平臺將來自不同層的工具捆綁在一起,以解決更大的問題。
平臺里其實沒有新的工具。你當然可以構建自己的平臺,事實上,許多組織都這樣做。但是,可靠、安全地配置和微調不同的模塊,同時確保始終更新所有技術并修補漏洞,這不是一件容易的事。你需要一支專門的團隊來構建和維護它。如果沒有所需的專業知識,那么使用平臺可能會更好。對于某些組織,尤其是工程團隊規模較小的組織,平臺是采用云原生技術的唯一方法。
你可能已經注意到了,所有的平臺都是圍繞 Kubernetes 來演化的,因為 Kubernetes 是云原生技術棧的核心。
Kubernetes 發行版
是什么
發行版是指供應商以 Kubernetes 為核心(采用未經修改的開源代碼,盡管有些人對其進行了修改),并將其打包以進行重新發行。通常這個過程需要查找和驗證 Kubernetes 軟件,并提供集群安裝和升級的機制。許多 Kubernetes 發行版都包含其他閉源或開源的應用程序。
解決的問題
開源 Kubernetes 并未指定特定的安裝工具,而是將許多設置配置選項提供給用戶。此外,有限的社區資源(包括社區論壇、StackOverflow、Slack 或 Discord 等)已經不能解決所有的問題。
隨著 Kubernetes 的普及,Kubernetes 的使用變得越來越容易,但是查找和使用開源安裝程序可能會面臨挑戰。用戶需要了解使用哪個版本,在何處獲取,以及特定組件是否能兼容。此外,還需要決定集群上部署什么軟件,要使用哪些設置來確保平臺的安全性、穩定性和高性能。所有這些都需要豐富的 Kubernetes 專業知識,而這些知識可能并不容易獲得。
如何解決
Kubernetes 發行版提供了一種安裝 Kubernetes 的可靠方式,并提供了合理的默認值以創建更好、更安全的操作環境。Kubernetes 發行版為供應商和項目提供了所需的掌控度和可預測性,以幫助他們支持客戶部署、維護和升級 Kubernetes 集群。
這種可預測性使發行版提供商在客戶遇到生產問題時可為其提供支持。發行版常常提供經過測試和受支持的升級路徑,使用戶的 Kubernetes 集群保持最新的版本。此外,發行版通常提供可在 Kubernetes 上部署的軟件,從而使其更易于使用。
對應的工具
如果你已經安裝了 Kubernetes,那你可能已經使用了 kubeadm 之類的工具來啟動和運行集群。即便如此,你可能還需要 CNI(容器網絡接口)來安裝和配置它。然后,你可能已經添加了一些存儲類,一個處理日志消息的工具,可能還需要個 ingress controller,以及更多其他的工具。Kubernetes 發行版將自動執行部分或全部設置。它還將根據自己對最佳實踐或智能默認值的理解提供配置設置。此外,大多數發行版都將捆綁一些經過測試的擴展或附件,以確保用戶可以盡快使用新集群。
我們以 Kublr 為例。它以 Kubernetes 為核心,主要捆綁了來自供應層、運行時層、編排管理層的工具。所有模塊都預先配置了一些選項并且開箱即用。不同的平臺聚焦不同的功能。就 Kublr 而言,重點是在運維方面,而其他平臺則可能聚焦在開發工具上。
此類別中有很多工具選項。如下圖所示,企業可以選擇和供應商達成技術合作,比如國外的 Canonical、VMware、Mirantis、SUSE,國內的網易、火山引擎和京東,它們都可以提供出色的開源和商業工具,建議在評估發行版時仔細考慮自己的需求。
托管 Kubernetes
是什么
托管 Kubernetes 是由 Amazon Web Services(AWS)、DigitalOcean、Azure 或 Google 等基礎設施提供商(云廠商)提供的服務,允許客戶按需啟動 Kubernetes 集群。云廠商負責管理 Kubernetes 集群的一部分,通常稱為控制平面。托管 Kubernetes 服務與發行版相似,但由云廠商在其基礎架構上進行管理。
解決的問題
托管 Kubernetes 使團隊只需在云廠商開設一個賬戶即可開始使用 Kubernetes。它解決了 Kubernetes 入門五個過程中的“五 W”問題:
Who:云廠商;
What:他們托管的 Kubernetes 產品;
When:現在;
Where:云廠商的基礎架構上;
Why:由你決定。
如何解決
由于 Kuberentes 托管服務提供商負責管理所有細節,因此托管的 Kubernetes 服務是開始云原生之路的最簡單方法。用戶所需要做的就是開發自己的應用程序并將其部署在托管的 Kubernetes 服務上,這非常方便。托管產品允許用戶啟動 Kubernetes 集群并立即開始*,同時對集群可用性承擔一些責任。值得注意的是,這些服務的額外便利性會造成靈活性的降低:托管的 Kubernetes 服務和云廠商綁定,且用戶無法訪問 Kubernetes 控制平面,因此某些配置選項會受到限制。
*AWS 的 EKS 略有例外,因為它還要求用戶采取一些其他步驟來準備集群。
對應的工具
托管 Kubernetes 是由供應商(通常是基礎架構托管提供商)提供的按需使用的 Kubernetes 集群,供應商負責配置群集和管理 Kubernetes ?控制平面。再次說明,值得注意的例外是 EKS,其上的單個節點配置由客戶端決定。
托管 Kubernetes 服務使組織可以將基礎架構組件管理外包出去,這樣可以快速配置新集群并降低運營風險。主要的權衡取舍在于可能需要為控制平面管理付費,并且用戶的管理權限有限。與自己搭建 Kubernetes 群集相比,托管服務在配置 Kubernetes 群集方面有更嚴格的限制。
在這個領域中有許多供應商和項目,在撰寫本文時,尚無 CNCF 項目。
Kubernetes 安裝程序
是什么
Kubernetes 安裝程序可幫助你在機器上安裝 Kubernetes,它們可自動化 Kubernetes 的安裝和配置過程,甚至可以幫助升級。Kubernetes 安裝程序通常與 Kubernetes 發行版或托管 Kubernetes 產品結合使用或由它們使用。
解決的問題
與 Kubernetes 發行版相似,Kubernetes 安裝程序可簡化 Kubernetes 的上手過程。開源的 Kubernetes 依賴于 kubeadm 之類的安裝程序。截至本文撰寫之時,kubeadm 可用于啟動和運行 Kubernetes 集群,是 CKA(Kubernetes 管理員認證) 測試的一部分。
如何解決
Kubernetes 安裝程序簡化了 Kubernetes 的安裝過程。像發行版一樣,它們為源代碼和版本提供經過審核的源。它們還經常自帶 Kubernetes 環境配置。像 kind (Docker 中的 Kubernetes)這樣的 Kubernetes 安裝程序允許通過單個命令獲得 Kubernetes 集群。
對應的工具
無論是在 Docker 上本地安裝 Kubernetes,啟動和配置新的虛擬機,還是準備新的物理服務器,都需要一個工具來處理各種 Kubernetes 組件的準備工作。
Kubernetes 安裝程序可簡化該過程。有些處理節點啟動,還有一些僅配置已供應的節點。它們都提供不同程度的自動化,并且適合不同的用例。開始使用 Kubernetes 安裝程序時,應先了解自己的需求,然后選擇可以滿足這些需求的安裝程序。在撰寫本文時,kubeadm 是 Kubernetes 生態系統中至關重要的工具,已包含在 CKA 測試中。Minikube、kind、kops 和 kubespray 都是 CNCF 中的 Kubernetes 安裝程序項目。
PaaS/容器服務
是什么
PaaS(平臺即服務)是一種環境,允許用戶運行應用程序而不必了解底層計算資源。此類別中的 PaaS 和容器服務是一種機制,可為開發人員托管 PaaS 或托管他們可以使用的服務。
解決的問題
在本系列文章中,我們討論了有關“云原生”的工具和技術。PaaS 連接了此領域中的許多技術,可為開發人員提供直接價值。它回答了以下問題:
我如何在各種環境中運行應用程序?
一旦應用程序運行起來,我的團隊和用戶將如何與它們交互?
如何解決
PaaS 為組合運行應用程序所需的開源和閉源工具提供了選擇。許多 PaaS 產品包含處理 PaaS 安裝和升級的工具,以及將應用程序代碼轉換為正在運行的應用程序的機制。此外,PaaS 可以處理應用程序實例的運行時需求,包括按需擴展單個組件以及可視化單個應用程序的性能和日志消息。
對應的工具
組織正在采用云原生技術來實現特定的業務或目標。與構建自定義應用程序平臺相比,PaaS 可快速讓組織實現價值。Heroku 或 Cloud Foundry Application Runtime 之類的工具可幫助組織快速啟動并運行新的應用程序,它們可提供運行云原生應用程序所需的工具。任何 PaaS 都有自身的限制。大多數只支持一種語言或一部分應用程序類型,其自帶的一些工具選項可能并不適合你的需求。無狀態應用程序通常在 PaaS 中表現出色,而數據庫等有狀態應用程序通常不太適合 PaaS。目前在這個領域沒有 CNCF 項目,但是大多數產品都是開源的。
總結
如文中所介紹,有多種工具可幫助簡化 Kubernetes 的采用。Kubernetes 發行版、托管 Kubernetes 服務、Kubernetes 安裝程序以及 PaaS 都承擔了一些安裝和配置的工作,可進行預打包。每個解決方案都有其自己的特點。
在采用上述任何一種方法之前,需要進行一些研究,以確定適合自己需求的最佳解決方案。你可能需要考慮:
我會遇到一些需要掌控控制平面的場景嗎?如果有,托管解決方案可能不是一個很好的選擇。
我有沒有一個小型團隊來管理“標準”工作負載,并需要分流盡可能多的操作任務?如果有,托管解決方案可能非常合適你。
便攜性對我來說重要嗎?
生產就緒情況如何?
還有更多問題需要考慮。沒有一個“最佳工具”,但是對于你的特定需求,肯定可以選擇一個有效工具。希望本文能幫助你將搜索范圍縮小到正確的區域。
關于云原生,我們還有:
云原生全景圖之五:應用程序定義和開發層
云原生全景圖之四:編排和管理層
三探云原生全景圖,這次聊聊運行時層
俯瞰云原生,這便是供應層
都在說云原生,它的技術圖譜你真的了解嗎?
2020-2021中國開發者調查報告重磅來襲,直接掃碼或微信搜索「CSDN」公眾號,后臺回復關鍵詞「開發者」,快速獲取完整的報告內容!
更多精彩推薦 ?實戰 | Service Mesh 微服務架構實現服務間 gRPC 通信?Kubernetes 穩定性保障手冊 -- 可觀測性專題?走過 30 年:銀行數據庫的下一步是國產化點分享點收藏點點贊點在看總結
以上是生活随笔為你收集整理的云原生全景图之六 | 托管 Kubernetes 和 PaaS 解决什么问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《科学:无尽的前沿》分享会在京举办,助力
- 下一篇: OpenStack管理界面开源啦!