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