管理Kubernetes部署環(huán)境的15個(gè)工具
譯文【51CTO.com快譯】Kubernetes已成為大規(guī)模部署容器化應(yīng)用程序的一種標(biāo)準(zhǔn)方式,許多人會(huì)說(shuō)它是唯一的標(biāo)準(zhǔn)方式。但如果說(shuō)Kubernetes幫助我們管理龐雜的容器部署環(huán)境,又有什么工具能幫助我們管理Kubernetes呢?畢竟,管理起來(lái)復(fù)雜、凌亂又棘手。
本文著重介紹以各種方式簡(jiǎn)化Kubernetes的10個(gè)項(xiàng)目,從簡(jiǎn)化命令行交互、簡(jiǎn)化應(yīng)用程序部署語(yǔ)法、與AWS集成到為多個(gè)集群提供窗口,不一而足。
Bitnami Cabin:面向iOS和Android的Kubernetes儀表板
現(xiàn)代的Web應(yīng)用程序或服務(wù)都會(huì)有某種移動(dòng)界面。Cabin為Kubernetes管理員提供了可從iOS或Android智能手機(jī)訪問(wèn)的Kubernetes儀表板。標(biāo)準(zhǔn)的Kubernetes儀表板擁有的許多功能都可以從Cabin來(lái)啟動(dòng),包括Helm圖表、擴(kuò)展部署、讀取pod日志以及訪問(wèn)Kubernetes托管的基于Web的應(yīng)用程序。
Kedge:簡(jiǎn)潔的Kubernetes部署定義
Kubernetes最飽受詬病的地方是,它的清單或應(yīng)用程序定義復(fù)雜又冗長(zhǎng)。編寫(xiě)簡(jiǎn)單,維護(hù)麻煩,難怪人們求助于第三方工具。Kedge提供了一種更簡(jiǎn)單、更簡(jiǎn)潔的語(yǔ)法。你向Kedge提供Kubernetes定義文件的簡(jiǎn)單版本,Kedge就可以將這個(gè)簡(jiǎn)單的定義擴(kuò)展為完整的Kubernetes定義。與Koki Short(見(jiàn)下文)不同,Kedge并不將模塊化語(yǔ)法用于聲明文件;它只是將應(yīng)用程序定義簡(jiǎn)化為常見(jiàn)的快捷方式。
Koki Short:易于管理的Kubernetes清單
就像上面的Kedge,Koki Short這個(gè)項(xiàng)目旨在改進(jìn)應(yīng)用程序定義或清單在Kubernetes中工作的方式。與Kedge定義一樣,Short定義使用縮寫(xiě)的語(yǔ)法來(lái)描述Kubernetes pod,可以翻譯成完整的語(yǔ)法,并翻譯回來(lái)。與Kedge定義不同,Short定義也是模塊化的,這意味著來(lái)自一個(gè)Short聲明的細(xì)節(jié)可以在其他聲明中重復(fù)使用,因此可以簡(jiǎn)潔地定義有共同元素的許多pod。
Kops:面向Kubernetes集群的命令行操作
Kops由Kubernetes團(tuán)隊(duì)開(kāi)發(fā),讓你可以從命令行管理Kubernetes集群。它支持在AWS和GCE上運(yùn)行的集群,支持VMware vSphere和其他環(huán)境的功能在開(kāi)發(fā)之中。除了使安裝和拆卸過(guò)程自動(dòng)化外,Kops還有助于其他類型的自動(dòng)化。比如,它可以生成Terraform配置,以便使用Terraform重新部署集群。
Kubebox:面向Kubernetes的終端控制臺(tái)
作為面向Kubernetes的高級(jí)終端控制臺(tái),Kubebox不僅為Kubernetes及其API提供了強(qiáng)化的shell,還提供內(nèi)存和CPU利用率的交互式圖形以及pod、運(yùn)行日志和配置編輯器的列表。最棒的是,它可作為面向Linux、Windows和MacOS的獨(dú)立應(yīng)用程序來(lái)使用。
Kube-monkey:面向Kubernetes的Chaos monkey
對(duì)系統(tǒng)進(jìn)行壓力測(cè)試的一種可靠方法是隨機(jī)搞亂。這就是Netflix的Chaos Monkey背后的理念,這是一種混沌工程工具,可隨機(jī)終止在生產(chǎn)環(huán)境中運(yùn)行的虛擬機(jī)和容器,“鼓勵(lì)”開(kāi)發(fā)人員構(gòu)建更具彈性的系統(tǒng)。Kube-monkey實(shí)現(xiàn)了同樣的基本理念對(duì)Kubernetes集群進(jìn)行壓力測(cè)試。工作原理是,隨機(jī)終止集群中你專門(mén)指定的pod,它們可進(jìn)行微調(diào),以便在特定的時(shí)間窗口內(nèi)運(yùn)行。
Kube-ps1:智能的Kubernetes命令提示符
不,Kube-ps1不是Kubernetes的第一代索尼PlayStation模擬器,它是Bash的簡(jiǎn)單補(bǔ)充,可在提示符下顯示目前的Kubernetes上下文和命名空間。除此之外,Kube-shell還包括其他許多功能,但如果你只想要智能的提示符,Kube-ps1可滿足要求,且開(kāi)銷很小。
Kube-prompt:交互式Kubernetes客戶軟件
Kube-prompt是對(duì)Kubernetes CLI所作的另一個(gè)細(xì)小但實(shí)用的修改,讓你可以用這個(gè)Kubernetes客戶軟件輸入交互式命令會(huì)話。Kube-prompt讓你不必輸入kubectl添加每個(gè)命令的前綴,并為自動(dòng)完成(autocomplete)提供了每個(gè)命令的上下文信息。
Kube-shell:面向Kubernetes CLI的Shell
Kubernetes命令行功能強(qiáng)大,但與任何命令行應(yīng)用程序一樣,選擇選項(xiàng)可能很繁瑣。 Kube-shell將標(biāo)準(zhǔn)Kubernetes命令行包裝在集成的shell中,該shell提供了常用命令的自動(dòng)完成和自動(dòng)建議,包括Kubernetes服務(wù)器提供的建議(比如針對(duì)服務(wù)名稱)。它還為你提供了更強(qiáng)大的命令歷史功能、vi樣式的編輯模式,以及用戶、命名空間、集群和其他針對(duì)特定安裝的細(xì)節(jié)等方面的上下文信息。
Kubespy:實(shí)時(shí)監(jiān)控Kubernetes資源
Pulumi的Kubespy這個(gè)診斷工具讓你可以實(shí)時(shí)跟蹤Kubernetes資源的變更,為你提供了一種文本視圖儀表板。比如說(shuō),可以在pod啟動(dòng)時(shí)觀察其狀態(tài)的變化:pod定義被寫(xiě)入Etcd、pod經(jīng)調(diào)度后在節(jié)點(diǎn)上運(yùn)行、節(jié)點(diǎn)上創(chuàng)建pod的Kubelet,以及最后被標(biāo)為“運(yùn)行中”的pod。Kubespy可作為獨(dú)立的二進(jìn)制文件或作為Kubectl的插件來(lái)運(yùn)行。
Kubernetes Ingress Controller for AWS
Kubernetes通過(guò)一項(xiàng)名為Ingress的服務(wù)為集群提供外部負(fù)載均衡和網(wǎng)絡(luò)服務(wù)。AWS提供負(fù)載均衡功能,但并不自動(dòng)將這些服務(wù)耦合到Kubernetes的工具。Kubernetes Ingress Controller for AWS填補(bǔ)了這一不足。Ingress Controller自動(dòng)為集群中的每個(gè)Ingress對(duì)象管理AWS資源,為新的ingress資源創(chuàng)建負(fù)載均衡器,為已移除的資源刪除負(fù)載均衡器,并利用AWS Cloud Formation確保集群的一致?tīng)顟B(tài)。它還自動(dòng)管理集群中使用的其他元素,比如SSL證書(shū)和EC2自動(dòng)擴(kuò)展組。
Kube-ops-view:面向多個(gè)Kubernetes集群的儀表板
Kubernetes有一個(gè)用于通用監(jiān)控的實(shí)用儀表板,但Kubernetes社區(qū)在嘗試其他的方式向Kubernetes管理員呈現(xiàn)數(shù)據(jù)。Kube-ops-view就是這樣一款工具;它以圖形化方式提供了多個(gè)Kubernetes集群的一覽式視圖,所以集群中CPU和內(nèi)存使用情況以及pod的狀態(tài)一目了然。注意,它不允許你調(diào)用任何命令;它只用于可視化,但提供的可視化非常清晰,天生適合運(yùn)維中心的監(jiān)視器墻。
Skaffold:Kubernetes的迭代開(kāi)發(fā)
Skaffold是谷歌自己的Kubernetes工具之一,用來(lái)執(zhí)行Kubernetes應(yīng)用程序的持續(xù)部署。你對(duì)源代碼進(jìn)行更改時(shí),Skaffold可自動(dòng)檢測(cè),觸發(fā)構(gòu)建和部署過(guò)程,如果出現(xiàn)任何錯(cuò)誤,還會(huì)提醒你。Skaffold完全在客戶端運(yùn)行。它可以在現(xiàn)有的持續(xù)集成/持續(xù)交付(CI/CD)管道中使用,與幾款外部構(gòu)建工具(主要是谷歌自己的Bazel)集成。
Stern和Kubetail:Kubernetes的日志追蹤
Stern讓你可以生成來(lái)自Kubernetes中的pod和容器的標(biāo)以色碼的輸出(按照tail命令)。這種快捷方法可以將來(lái)自多個(gè)資源的所有輸出組合并到一目了然的數(shù)據(jù)流。同時(shí),可以一目了然(標(biāo)以色碼)地區(qū)別數(shù)據(jù)流。
Kubetail同樣將來(lái)自多個(gè)pod的日志聚合到一個(gè)數(shù)據(jù)流中,對(duì)不同的pod和容器標(biāo)以色碼。但Kubetail是Bash腳本,所以它只需要shell。
Teresa:Kubernetes上的簡(jiǎn)單PaaS
Teresa是一個(gè)應(yīng)用程序部署系統(tǒng),在Kubernetes上作為簡(jiǎn)單的PaaS運(yùn)行。組織成團(tuán)隊(duì)的用戶可以部署和管理屬于他們的應(yīng)用程序。這樣一來(lái),負(fù)責(zé)某個(gè)應(yīng)用程序的人更容易使用它,無(wú)需直接處理Kubernetes。
原文標(biāo)題:15 tools to tame Kubernetes deployments,作者:Serdar Yegulalp
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】