Kubernetes無(wú)疑是容器化領(lǐng)域里一個(gè)優(yōu)雅的解決方案。 Kubernetes能夠讓我們大規(guī)模地運(yùn)行容器化應(yīng)用程序,而不用淹沒(méi)在負(fù)載平衡,網(wǎng)絡(luò)容器,確保應(yīng)用程序的高可用性或管理更新或回滾的細(xì)節(jié)上。許多復(fù)雜性被安全地隱藏起來(lái)。
但是使用Kubernetes并不是沒(méi)有挑戰(zhàn)。Kubernetes的啟動(dòng)和運(yùn)行需要一些工作,許多圍繞Kubernetes的管理和維護(hù)任務(wù)是很棘手的。
即便Kubernetes社區(qū)發(fā)展很活躍,我們也不能指望Kubernetes主體項(xiàng)目能立即解決每個(gè)問(wèn)題。幸運(yùn)地是,Kubernetes社區(qū)正在對(duì)那些Kubernetes團(tuán)隊(duì)由于種種原因沒(méi)有關(guān)注到的問(wèn)題找尋解決方案。
下面是3個(gè)新涌現(xiàn)出來(lái)的Kubernetes項(xiàng)目,目的是使操作人員不再那么難以部署,維護(hù),操作和監(jiān)督容器。
Heptio
兩位從原谷歌Kubernetes開(kāi)發(fā)團(tuán)隊(duì)離職的員工創(chuàng)建了Heptio,旨在使Kubernetes更易于使用。和其他旨在提供自己Kubernetes發(fā)行版本公司不同的是,他們注重在源頭上提供開(kāi)源工具來(lái)提升Kubernetes的使用效果。
本月早些時(shí)候,Heptio發(fā)布了第一批項(xiàng)目,Heptio Ark和Heptio Sonobuoy。Ark是Kubernetes 集群的災(zāi)難恢復(fù)系統(tǒng)–一種基于容器的集快照、備份和恢復(fù)于一體的應(yīng)用程序。Ark記錄了Kubernetes API對(duì)象和持久存儲(chǔ)卷(PV)的狀態(tài)。Ark的默認(rèn)示例使用和S3兼容的存儲(chǔ)服務(wù)(“Minio”),但Ark也可以使用其他主要云提供商的存儲(chǔ)服務(wù)–比如亞馬遜的AWS,谷歌的云平臺(tái)和微軟的Azure。
Ark現(xiàn)在還沒(méi)有提供一個(gè)在不同環(huán)境之間隨意切換現(xiàn)有Kubernetes集群的解決方案。對(duì)此,Heptio解釋說(shuō),Ark需要在不同的云提供商之間支持持久存儲(chǔ)卷快照的遷移,目前尚不支持這一功能。
另外一個(gè)項(xiàng)目,Sonobuoy,用來(lái)檢查給定的Kubernetes安裝,看它是否能通過(guò)用于驗(yàn)證 Kubernetes發(fā)布版本的測(cè)試。
Kubernetes的部署通常會(huì)被供應(yīng)商或用戶做大量修改,這可能會(huì)使他們與更新不兼容。Sonobuoy的工作是去發(fā)現(xiàn)這些更改是否引起了不兼容。集群的狀態(tài)也可以導(dǎo)出并用于診斷報(bào)告,Sonobuoy的測(cè)試也可以通過(guò)一個(gè)插件架構(gòu)來(lái)擴(kuò)展。
Sonobuoy仍在早期的開(kāi)發(fā)階段,不過(guò),它不能檢查Kubernetes一致性測(cè)試中標(biāo)識(shí)出的所有問(wèn)題。它的長(zhǎng)期計(jì)劃是和由Kubernetes核心團(tuán)隊(duì)創(chuàng)建的測(cè)試集保持同步。
Kubed
AppsCode,一個(gè)針對(duì)容器應(yīng)用開(kāi)發(fā)的協(xié)同編碼平臺(tái)供應(yīng)商,最近發(fā)布了一個(gè)項(xiàng)目來(lái)填補(bǔ)Kubernetes集群管理方面的許多空白。
Kubed–發(fā)音為“Cube-dee”,是“Kubernetes守護(hù)進(jìn)程”的簡(jiǎn)稱,它將一大堆有用的功能整合到一個(gè)守護(hù)進(jìn)程中。 Kubed可以執(zhí)行定期集群快照,為已刪除的對(duì)象提供臨時(shí)存儲(chǔ)(萬(wàn)一你需要再次使用它的話),執(zhí)行自動(dòng)事件轉(zhuǎn)發(fā),通過(guò)各種渠道發(fā)送通知等等。
Kubernetes也可以在Elasticsearch或InfluxDB的實(shí)例中存儲(chǔ)日志數(shù)據(jù),但清理舊數(shù)據(jù)是用戶自己的責(zé)任。一個(gè)Kubed的功能,janitors,可以在指定的時(shí)間段之后自動(dòng)清除日志數(shù)據(jù)。 Kubed還不支持執(zhí)行這種清理的‘干運(yùn)行’功能,但是添加該功能的請(qǐng)求已經(jīng)被提交。
Kubed項(xiàng)目目前處于alpha、不穩(wěn)定的狀態(tài),未來(lái)計(jì)劃有許多突破性的變化。這些計(jì)劃包括支持 Kubernetes最近推出的自定義資源定義(CRDs)和通過(guò)Kubernetes提供的用戶API 服務(wù)器來(lái)將Kubed API作為Kubernetes擴(kuò)展API集使用。
Kubicorn
Kubicorn項(xiàng)目旨在幫助用戶在各種云服務(wù)中構(gòu)建和管理Kubernetes的基礎(chǔ)設(shè)施。 像Puppet和其他用于管理基礎(chǔ)設(shè)施的現(xiàn)代化工具一樣,Kubicorn采用了聲明式理念:用戶描述他們想要在其集群中看到的狀態(tài),Kubicorn確保集群的狀態(tài)與該目標(biāo)一致。
Kubicorn旨在可以作為一個(gè)獨(dú)立工具來(lái)使用,同時(shí)也可以作為其他工具調(diào)用的庫(kù)來(lái)使用。 同理,Kubicorn利用了Kubernetes的現(xiàn)有工具,例如kubeadm工具。 因此,Kubicorn旨在補(bǔ)充現(xiàn)有的工作流程,而不是替代它們。
Kubicorn采用的方法主要是使用快照。Kubicorn通過(guò)允許用戶定義其集群的狀態(tài),檢查該狀態(tài)是否符合原子性(如果不符合,它將被回滾),并將該狀態(tài)捕獲為快照。這些快照也可以用于新的部署。
請(qǐng)注意,Kubicorn不是官方的Kubernetes項(xiàng)目,它仍然被認(rèn)為是實(shí)驗(yàn)性的,不應(yīng)該在生產(chǎn)環(huán)境中使用它。
但是當(dāng)然,試驗(yàn)Kubernetes的時(shí)機(jī)已經(jīng)成熟了。你可能也想試試Kubicorn,Kubed和Heptio。