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