用Operators管理多集群Kubernetes
譯文【51CTO.com快譯】早在Kubernetes集群及其他云原生解決方案流行起來之前,我們Kubermatic就一直在幫助客戶交付它們。我們幫助客戶使用Ansible、Terraform及其他多種非云原生工具來構建集群;我們遇到這些工具的局限性時,幫助客戶重建集群。
我們很早就明白了兩點:1)Kubernetes不是單一的大型集群解決方案,而是需要大量的較小集群。2)Kubernetes多集群管理需要為聲明性、API驅動的世界構建的云原生工具。從那時起,這些想法已基本上被全球各地的眾多組織所證實,包括云原生計算基金會、Twitter、《今日美國》、Zalando和阿里巴巴。
我們知道每家大規(guī)模運行Kubernetes的公司都需要有效地管理多集群管理,于是開發(fā)了開源Kubermatic Kubernetes平臺。本文將介紹為什么您需要多集群管理,Kubermatic Kubernetes平臺如何利用Kubernetes Operators跨多個集群、云和地區(qū)自動管理集群生命周期,以及如何立即開始使用它。
為什么需要多集群管理?
Kubernetes缺少使用戶、組織或操作人員能夠允許不受信任的租戶共享基礎架構資源或分離軟件不同部分的硬多租戶(hard multitenancy)功能。這帶來了安全和操作問題。當操作人員試圖按類型(敏感數(shù)據(jù)處理與非敏感數(shù)據(jù)處理)分離工作負載,或甚至只想分離生產(chǎn)環(huán)境與非生產(chǎn)環(huán)境時,就無法在集群級別上做到這一點,這帶來了安全噩夢。在操作方面,試圖將太多的應用程序部署到同一集群中可能會導致版本沖突、配置沖突以及軟件生命周期管理問題。最后,若沒有適當?shù)母綦x機制,連鎖反應式故障的風險會增加。
在集群內(nèi)沒有硬多租戶的情況下,必須使用單獨的集群為不同安全要求的工作負載提供有效的隔離。有多個集群將應用程序部署到其中,還可以使操作人員將相似的應用程序部署在一起,同時將具有不同生命周期的應用程序彼此隔離。部署到同一集群中的應用程序可以一起升級,以減輕操作負擔,而需要不同版本、配置和依賴項的應用程序可以在單獨的集群中運行,可以自行升級。
如果運行多個集群是滿足這些工作負載和基礎架構要求的唯一解決方案,還必須考慮該模式的操作負擔。如果手動完成,運行多個集群是一個巨大的操作挑戰(zhàn)。因此,任何考慮大規(guī)模運行Kubernetes的操作人員應仔細評估其多集群管理戰(zhàn)略。我們Kubermatic選擇用Kubernetes Operators進行多集群管理。
什么是Kubernetes Operator?
Operator是一種軟件,它了解如何運行并便于操作另一個軟件。CoreOS(自Red Hat收購以來)于2016年引入了Kubernetes Operator,當時描述了這個概念:
Operator是一種打包、部署和管理Kubernetes應用程序的方法。Kubernetes應用程序是既部署在Kubernetes上,又使用Kubernetes API和kubectl工具來管理的應用程序。Operator的自定義控制器監(jiān)視專門為應用程序定義的自定義資源。
這使開發(fā)人員可以為需要維護狀態(tài)的應用程序整理生命周期管理知識,從而使許多日常管理(包括部署、備份、升級、日志和警報)實現(xiàn)自動化。它只需通過監(jiān)視事件并利用Kubernetes內(nèi)置的和解循環(huán)(reconciliation loop)就能做到這一點。簡而言之,精心創(chuàng)建的Operator負責處理容器化軟件的整個生命周期。
我們?nèi)绾问褂肒ubernetes Operators進行多集群管理?
借助Kubermatic Kubernetes平臺,我們將Operators范式擴展到應用程序之外,以管理集群本身。是的,我們使用Kubernetes來操作Kubernetes。這種模式實際上已經(jīng)被包括阿里巴巴在內(nèi)的多家組織證實,阿里巴巴使用它來管理成千上萬個集群。
從技術上講,集群狀態(tài)用“自定義資源定義”定義,然后存儲在etcd中。一組控制器及其關聯(lián)的和解循環(huán)監(jiān)視集群狀態(tài)的更改或添加,并根據(jù)需要進行更新。所有狀態(tài)都存儲在“主集群”中。定義新的用戶集群后,將創(chuàng)建控制平面(API、etcd、調(diào)度器和控制器),作為主集群名稱空間中的容器部署。用戶集群的worker節(jié)點由計算機控制器部署,該控制器實施Cluster API,將聲明性創(chuàng)建、配置和管理引入到worker節(jié)點。
Operators讓Kubermatic不僅可以使集群的創(chuàng)建實現(xiàn)自動化,還可以使集群的整個生命周期管理實現(xiàn)自動化。更新控制平面只需對容器部署進行滾動更新,而更新集群中的實際節(jié)點也可以以滾動方式聲明性完成。
圖1
利用Kubernetes Operators還可以在所有基礎架構提供商之間提供一致的抽象。無需為每家提供商重新發(fā)明輪子,而是可以將同一套工具從一家提供商輕松移植到下一家提供商(包括混合云和多云),以及集成本地基礎架構(虛擬化和裸機)。
圖2
Operators讓我們的用戶可以做什么?
開發(fā)一種優(yōu)雅的方案以解決棘手的技術問題是個令人興奮的過程,也是一次學習機會,但最令人欣慰的是看到它每天給我們的用戶帶來的影響。作為幫助用戶踏上云原生之旅的合作伙伴,我們很樂意看到自己的軟件發(fā)揮其價值。
SysEleven是柏林的一家托管服務提供商,也是我們的第一個生產(chǎn)級用戶。該公司的工程師希望能夠向其客戶提供Kubernetes即服務,但他們無法通過人員擴展運營規(guī)模。于是他們選擇了Kubermatic Kubernetes平臺改而通過軟件進行擴展,用于生產(chǎn)環(huán)境至今已有近三年。由于Kubermatic Kubernetes平臺背后的Kubernetes Operators可以自動執(zhí)行許多操作任務(包括典型的“關閉并重新開啟”操作),因此他們僅用一名專職員工就可以運行和管理數(shù)百個集群。這使他們的Kubernetes團隊可以專注于客戶需求,并交付賴以成名的高質(zhì)量服務。
除了云原生之旅外,Operators還讓我們可以將久經(jīng)考驗的原則和流程適應于邊緣。在不久的將來,我們將提供體現(xiàn)上面所探討原則的邊緣功能。
原文標題:Manage Multicluster Kubernetes with Operators,作者:Sascha Haase
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】