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