調(diào)教Kubernetes部署的19款工具
譯文【51CTO.com快譯】如今,Kubernetes已成為了業(yè)界一種調(diào)整與部署容器化應(yīng)用的標(biāo)準(zhǔn)方式。不過(guò)對(duì)于非資深的開(kāi)發(fā)人員而言,Kubernetes實(shí)在是太復(fù)雜、太混亂、也太難管理了。如果說(shuō)Kubernetes能夠幫助我們調(diào)教(調(diào)整)龐大而復(fù)雜的容器部署,那么誰(shuí)有來(lái)幫助我們調(diào)教Kubernetes呢?
隨著Kubernetes的發(fā)展與改進(jìn),許多人都在嘗試著運(yùn)用自己的解決方案,讓Kubernetes變得更加易用,同時(shí)也能夠解決Kubernetes在生產(chǎn)環(huán)境中出現(xiàn)的各種常見(jiàn)問(wèn)題。
下面我們將要重點(diǎn)介紹19款項(xiàng)目工具,它們分別從簡(jiǎn)化命令行的交互、應(yīng)用部署的語(yǔ)法、與AWS的集成、以及在多個(gè)集群中新增Windows等方面,來(lái)簡(jiǎn)化Kubernetes。
Bitnami Cabin:適合于iOS和Android的Kubernetes儀表盤
如今的Web應(yīng)用或服務(wù),都無(wú)不為用戶提供著各種形式的移動(dòng)接口。因此,Cabin為Kubernetes管理員提供了一個(gè)可以通過(guò)使用iOS或Android手機(jī),去訪問(wèn)Kubernetes儀表盤的版本。在Cabin上,您可以用到Kubernetes儀表盤的幾乎所有功能,其中包括Helm圖表、擴(kuò)容部署、讀取各種pod日志、以及訪問(wèn)由Kubernetes托管的、基于Web的應(yīng)用程序等。
Goldpinger:可視化的Kubernetes集群
人類是視覺(jué)動(dòng)物,因此圖形和圖表能讓我們更容易掌握全局。而鑒于Kubernetes集群的規(guī)模和復(fù)雜性,我們更需要有可視化的幫助。
由Bloomberg(彭博)的科技部門帶來(lái)的Goldpinger,是一款能夠運(yùn)行在Kubernetes的集群中,并以互動(dòng)視圖的形式顯示節(jié)點(diǎn)間關(guān)系的簡(jiǎn)單工具。在圖中,健康的節(jié)點(diǎn)被顯示為綠色、不健康的則為紅色。而節(jié)點(diǎn)在被點(diǎn)擊時(shí)會(huì)出現(xiàn)詳情信息。您可以通過(guò)使用Swagger來(lái)定制API,進(jìn)而添加各種報(bào)表、指標(biāo)、以及對(duì)其他集成元素進(jìn)行滾動(dòng)操作。
Kedge:簡(jiǎn)明的Kubernetes部署定義
有過(guò)開(kāi)發(fā)經(jīng)驗(yàn)的讀者一定知道,針對(duì)Kubernetes最常見(jiàn)的抱怨莫過(guò)于其本身的復(fù)雜性、冗長(zhǎng)的清單(manifests)、以及應(yīng)用的各種定義。而對(duì)它們的寫操作、以及維護(hù),則更是讓人苦不堪言。作為第三方工具,Kedge提供了更簡(jiǎn)單、更簡(jiǎn)潔的語(yǔ)法。您只需要提供Kubernetes定義文件的簡(jiǎn)單版本給Kedge,它就能將這些簡(jiǎn)單定義,擴(kuò)展成為相應(yīng)的Kubernetes全量定義。不像下文將要提到的Koki Short,Kedge并不會(huì)為了其定義文件而使用模塊化的語(yǔ)法,它只是將各種應(yīng)用定義歸結(jié)成了各種常見(jiàn)的快捷方式。
Koki Short:可管理的Kubernetes清單
類似于上面提到的Kedge,Koki Short項(xiàng)目旨在改進(jìn)Kubernetes中應(yīng)用定義的方式和清單。同樣類似于Kedge的定義,Short能夠?qū)⒛切┦褂每s略語(yǔ)法來(lái)描述的各種Kubernetes pod,翻譯成對(duì)應(yīng)的全量語(yǔ)法。不過(guò),與Kedge定義的不同之處在于:Short的定義是模塊化的。這就意味著某個(gè)Short定義可以被重用到他處,因此帶有共同元素的多個(gè)pod可以得到簡(jiǎn)單定義。
Kops:Kubernetes集群的命令行ops
由Kubernetes團(tuán)隊(duì)開(kāi)發(fā)的Kops能夠讓您通過(guò)命令行來(lái)管理Kubernetes集群。同時(shí),它能夠支持運(yùn)行在AWS和GCE(譯者注:Google Compute Engine)上,以及在VMware的vSphere和其他環(huán)境中的集群。除了能夠自動(dòng)化地安裝與拆分各種進(jìn)程之外,Kops還有助于實(shí)現(xiàn)其他類型的自動(dòng)化。例如:它可以生成Terraform配置,以允許某個(gè)集群通過(guò)使用Terraform,來(lái)被重新部署。
Kubebox:Kubernetes的終端控制臺(tái)
針對(duì)Kubernetes的高級(jí)終端控制臺(tái)—Kubebox,不僅能夠提供Kubernetes的shell及其API,還能提供CPU與內(nèi)存的利用率、Pod列表、運(yùn)行日志和各種配置編輯器。而且最重要的是,它可以作為一種支持Linux、Windows和MacOS的獨(dú)立應(yīng)用提供服務(wù)。
KubeDB:運(yùn)行在Kubernetes中的數(shù)據(jù)庫(kù)
由于各種原生的Kubernetes功能集,并沒(méi)有真正解決與數(shù)據(jù)庫(kù)相關(guān)的大量具體問(wèn)題,因此數(shù)據(jù)庫(kù)一般很難能夠在Kubernetes中“優(yōu)雅”地運(yùn)行。
而KubeDB卻能夠允許管理員創(chuàng)建各種用來(lái)管理數(shù)據(jù)庫(kù)的Kubernetes operator。它們可以執(zhí)行備份、克隆、監(jiān)控、快照、以及創(chuàng)建各種數(shù)據(jù)庫(kù)。不過(guò),它只能在部分?jǐn)?shù)據(jù)庫(kù)上(如PostgreSQL,而非MySQL)支持集群。。
Kube-monkey:Kubernetes的Chaos Monkey
對(duì)系統(tǒng)進(jìn)行壓力測(cè)試的一種最保險(xiǎn)的方法是對(duì)它隨機(jī)“施壓”。這就是Netflix的Chaos Monkey背后的理論(請(qǐng)?jiān)斠?jiàn)https://github.com/Netflix/chaosmonkey)。該混亂引擎工具,能夠隨機(jī)終止生產(chǎn)環(huán)境中的各種虛擬機(jī)和容器,以“鼓勵(lì)”開(kāi)發(fā)人員構(gòu)建出各種更靈活的系統(tǒng)。根據(jù)對(duì)于Kubernetes集群的壓力測(cè)試基本理念,Kube-monkey能夠通過(guò)在指定的集群中隨機(jī)終止pod,從而在特定的時(shí)間窗口內(nèi)進(jìn)行各種調(diào)優(yōu)操作。
Kube-ps1:智能的Kubernetes命令提示符
Kube-ps1并非Sony PlayStation為Kubernetes開(kāi)發(fā)的第一代模擬器。它可以通過(guò)Bash的命令行顯示當(dāng)前Kubernetes的上下文和命名空間。Kube-shell雖然包含許多功能,但它也給系統(tǒng)帶來(lái)了一定的開(kāi)銷。
Kube-prompt:交互式Kubernetes客戶端
另一款對(duì)于Kubernetes CLI實(shí)施的最小卻又十分有用的修改是Kube-prompt。它允許您設(shè)定需要與Kubernetes客戶端進(jìn)行交互式命令的會(huì)話數(shù)量。它省去了您在每一個(gè)命令不得不前添加的kubectl前綴,而且它能夠根據(jù)每個(gè)命令的上下文信息進(jìn)行參數(shù)自動(dòng)補(bǔ)足。
鏈接:
Kube-shell:Kubernetes CLI的shell
Kube-shell將標(biāo)準(zhǔn)的Kubernetes命令行集成到了一個(gè)shell之中,進(jìn)而提供各種具有自動(dòng)完成和自動(dòng)提示的公共命令。同時(shí),它也能為您提供強(qiáng)大的命令歷史記錄功能,vi風(fēng)格的編輯模式,與用戶、命名空間、集群相關(guān)的上下文信息,以及其他特定的安裝細(xì)節(jié)。
Kubespy:對(duì)Kubernetes資源的實(shí)時(shí)監(jiān)控
Pulumi的Kubespy是一種診斷工具,它允許您跟蹤Kubernetes資源的實(shí)時(shí)變化。同時(shí),它也能夠?yàn)槟峁┮环N文本視圖的儀表盤界面。例如,您可以在pod啟動(dòng)時(shí),觀察其狀態(tài)的變化。即:pod定義被寫入Etcd -> pod被調(diào)度到一個(gè)節(jié)點(diǎn)上 -> 該節(jié)點(diǎn)的Kubelet創(chuàng)建pod -> pod終于被標(biāo)記為運(yùn)行的狀態(tài)。Kubespy既可以作為一個(gè)獨(dú)立的二進(jìn)制文件被運(yùn)行,有可以作為Kubectl的插件。
AWS的Kubernetes Ingress Controller
Kubernetes通過(guò)一個(gè)名為Ingress的服務(wù)(請(qǐng)參見(jiàn)https://kubernetes.io/docs/concepts/services-networking/ingress/),向集群提供外部的負(fù)載均衡和各種網(wǎng)絡(luò)服務(wù)。雖然Amazon Web Services本身就能夠提供負(fù)載均衡功能,但是它不會(huì)將這些服務(wù)與Kubernetes的設(shè)施進(jìn)行自動(dòng)相連。AWS的Kubernetes Ingress Controller正好填補(bǔ)了該缺口。Ingress Controller能自動(dòng)管理群集中每個(gè)Ingress對(duì)象的AWS資源,為新的入口資源創(chuàng)建負(fù)載均衡器,刪除已去除資源的負(fù)載均衡器,并利用AWS CloudFormation實(shí)現(xiàn)群集的一致性。另外,它還能自動(dòng)管理集群中正在使用的,諸如SSL證書和EC2自動(dòng)擴(kuò)展組(Auto Scaling Groups)之類的其他元素。
Kube-ops-view:多個(gè)Kubernetes集群的儀表盤
Kubernetes為通用監(jiān)控提供了一種實(shí)用的儀表盤,但是Kubernetes社區(qū)卻致力于用其他方式,向Kubernetes管理員提供更加有用的數(shù)據(jù)。Kube-ops-view就是其中的一種方式。它能夠一站式地以圖形方式呈現(xiàn)多個(gè)Kubernetes集群的全貌,因此您可以一眼了解到集群中的CPU和內(nèi)存使用率,以及各種pod的狀態(tài)。雖然它不允許您去調(diào)用任何指令,但是其高效、完善的可視性很適合被投影到運(yùn)營(yíng)中心的大屏幕上。
Skaffold:為Kubernetes進(jìn)行迭代開(kāi)發(fā)
Skaffold是Google針對(duì)Kubernetes各種應(yīng)用的持續(xù)部署,而打造的一款工具。當(dāng)您在變更源代碼的同時(shí),Skaffold會(huì)自動(dòng)檢測(cè)它們,或是直接觸發(fā)構(gòu)建和部署的過(guò)程,或是根據(jù)各種錯(cuò)誤接口向您發(fā)出警告。Skaffold完全可以運(yùn)行在用戶的客戶端上。它既可以在現(xiàn)有的CI/CD管道中被使用,又可以與Bazel之類的外部構(gòu)建工具相集成。
Stern和Kubetail:Kubernetes的日志跟蹤
Stern能夠根據(jù)tail命令,為您生成有關(guān)Kubernetes pod和容器的不同顏色輸出。它方便了用戶通過(guò)單一數(shù)據(jù)流,一站式地了解來(lái)自多個(gè)資源的輸出。
類似Stern,Kubetail也能夠?qū)?lái)自多個(gè)pod的日志聚合成單個(gè)數(shù)據(jù)流,并以不同的顏色來(lái)表示各種pod與容器。Kubetail使用的是Bash腳本,因此它需要有一個(gè)shell環(huán)境。
Teresa:Kubernetes上的簡(jiǎn)單PaaS
Teresa是一款能夠在Kubernetes上,作為簡(jiǎn)單PaaS運(yùn)行的應(yīng)用程序部署系統(tǒng)。它的用戶可以在平臺(tái)上部署和管理屬于自己的應(yīng)用。這對(duì)于那些只想關(guān)注特定應(yīng)用,而無(wú)想法與Kubernetes直接打交道的人來(lái)說(shuō),提供了極大的便利。
Tilt: Kubernetes集群的流式容器更新
由Windmill Engineering開(kāi)發(fā)的Tilt,能夠通過(guò)實(shí)時(shí)監(jiān)控Dockerfiles的變更,然后將這些變更逐步部署到某個(gè)Kubernetes集群中所對(duì)應(yīng)的容器上。從本質(zhì)上講,它允許開(kāi)發(fā)人員通過(guò)只更新Dockerfile的方式,實(shí)時(shí)地更新某個(gè)在線的集群。由于Tilt僅在集群內(nèi)部執(zhí)行構(gòu)建,因此它只會(huì)推送源代碼的變更部分。
原文標(biāo)題:19 tools to tame Kubernetes deployments,作者:Serdar Yegulalp
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

























