管理數百個Kubernetes集群需要什么?
要點:
- 部署一個具備生產就緒所需所有依賴關系的Kubernetes集群需要數天時間。
- 如果不自動化這個過程,管理Kubernetes集群的浮動是非常困難的。
- 在多個集群提供商之間管理Kubernetes集群的浮動更加困難。
- 升級Kubernetes集群需要進行密集測試,以確保更改不會破壞任何功能。這不是像通常建議的那樣按下“升級”按鈕就夠了。
管理一個Kubernetes集群很難,管理全球數百個Kubernetes集群又如何呢?
數百個Kubernetes集群,包含多個節點、服務、應用程序和負載均衡器。這就是我們在Qovery所做的:管理全球數百個Kubernetes生產集群,幫助16000多名開發者在AWS上部署應用。
運行和管理數百個Kubernetes集群需要什么?這就是本文分享的內容。
一些背景
有了Qovery,每個用戶都可以在幾秒鐘內開始在AWS上部署應用程序。目標是將AWS轉變為流暢的開發者體驗。通常,我們的用戶來自Heroku,希望跳入AWS。他們希望擁有Heroku的簡單性和AWS的靈活性。這就是使用Qovery的意義所在。
為了在這條道路上取得成功,Qovery使用EKS(AWS托管的Kubernetes)來運行和擴展無狀態應用程序。每個用戶至少有一個或多個Kubernetes集群。Qovery的承諾是讓Kubernetes集群生產就緒,這意味著Kubernetes的部署、運行和管理都由我們來完成。負責管理集群的軟件稱為Qovery Engine,它是開源的。
部署生產就緒的Kubernetes集群
為了在AWS上自動部署Kubernetes,我們創建了一個開源部署引擎,一個用Rust編寫的應用程序?;旧希鼮镵ubernetes、ingress、auto scaler、Loki、S3初始化虛擬私有云(VPC),以存儲Kubernetes日志,最后是Kubernetes。Qovery引擎使用Terraform、Helm和AWS API。在AWS上,從零到生產就緒的Kubernetes集群需要30分鐘,而不是幾周。
首次在AWS帳戶上使用Qovery時,會設置一個VPC和一個EKS集群。完全設置后,Qovery Engine將安裝并連接到Qovery控制平面,以接收應用程序部署指令。
運行Kubernetes
由于Qovery依賴AWS(EKS)提供的托管Kubernetes,因此運行和管理Kubernetes變得簡單(無需管理etcd、主節點和網絡覆蓋)。AWS通過管理負責整個集群完整性的主節點,確保集群始終處于運行狀態。
Qovery的附加值是簡化應用程序部署,確保這些應用程序正確運行。如果出現問題,這些應用程序和集群本身的所有信息都會實時報告給用戶。這是由Qovery Engine和Qovery Agent處理的。
讓Kubernetes保持最新
Kubernetes每10周發布一個新版本。以這種速度,跟上時代是一項挑戰。尤其是在發生重大變化時。在生產環境中進行升級之前,必須在臨時集群上測試升級,但需要相當長的時間。
對我們來說也是如此。在Qovery,有一個專門的團隊負責管理用戶Kubernetes集群的升級。好消息是,一旦做了一次,它對每個集群的效果(幾乎)都是一樣的。
出于安全原因,Qovery Engine連接到Qovery控制平面,并提取集群更新指令。Qovery Engine負責所有Kubernetes worker節點上的滾動更新,更新版本和相關依賴關系(Loki、ingresses等)。Qovery Engine保證集群完全可運行,并準備好接收新的應用部署。
收尾
在本文中,我們已經看到了由數百個Kubernetes集群組成的浮動是如何由Qovery Engine管理的,Qovery Engine是一個用Rust編寫的開源庫。部署、運行和更新Kubernetes集群需要花費大量時間,并且需要自動化以保證其正常運行時間。