如果你正在 Kubernetes 上工作,你的 SRE 和 Ops 團隊需要正確的工具來確保Kubernetes叢集的高可用和在其中執行的工作負載。這裡我們列出了10個開源Kubernetes工具來使得你的SRE和Ops團隊更高效的達到他們的服務水平目標(SLA)。
Kube-ops-view
Kube-ops-view為多個Kubernetes叢集提供了一個通用的操作檢視,對於SRE和Ops團隊來說這是一個方便的工具,Kube-ops-view提供只讀的系統儀表。Kube-ops-view 提供了一些非常酷的特性:
- 在多個Kubernetes 叢集間切換。
- 渲染節點並指明它們的總體狀態(“Ready”)。
- 展示節點的容量和資源利用率(CPU,記憶體)。
- 指明pods的狀態(綠色:ready/running,紅色:error等)。
- 為節點和pods提供工具提示資訊。
- pod建立和終止。
- 使用螢幕令牌在TV螢幕上提供儀表盤。
Cabin
Cabin是一個Kubernetes 的原生的手機App儀表盤。Cabin UI是使用React Native,因此可以執行在 IOS和Android硬體上。它是一個移動助手,提供了細粒度操作來維護Kubernetes 資源。Cabin app做了觸控優化。例如,你可以通過一個左滑動來刪除一個pod。你也可以通過一個手指滾動來擴充套件部署。
Cabin 的一些有趣的特性:
- 無縫的支援 Google Kubernetes Engine (GKE),你可以直接在你的移動手機上建立 GKE叢集。
- 早期支援幫助圖表,你可以瀏覽圖表庫,並且通過點選移動執行圖表。
- 訪問 pod 日誌,通過標籤(label)搜尋資源,通過改變你部署的映象觸發滾動升級等。
Kubectx
如果你工作在多k8s 叢集,kubectx是另外一個必須要有的工具。Kubectx與kubens捆綁在一起,當你使用kubectl的時候,允許你在Kubernetes叢集和名稱空間之間切換。
kubectx 和 kubens支援在bash/zsh 環境通過 tab 來幫助你補全長的長下文名稱。你不在需要記得完整的上下文名稱。
Kube-shell
Kube-shell是一個和Kubernetes CLI整合的 Shell,它有一些非常漂亮的特性,比如:
- 自動補全命令,自我提示,聯機文件。
- 通過使用 up/down 鍵盤命令訪問歷史命令的執行。
- 從kubeconfig獲取當前上下文,在 叢集/名稱空間之間非常容易的切換。
相關工具
Kube-prompt是另外一個有自動補全特性的互動式Kubernetes客戶端。它接受沒有kubect字首的命令。
另外,Kube-ps1是一個類似的指令碼讓你新增配置在kubectl的當前Kubernetes 上下文和名稱空間到你的Bash/Zsh提示字元。
最後,Kail是一個 Kubernetes tail。作為一個Kubernetes日誌檢視器,kail允許你使用選擇器從匹配的pods流式的檢視日誌。
Kail – kubernetes 日誌檢視器
你可以基於標準的標籤選擇器匹配 pods,通過名字,通過服務,通過部署,等等。
Stern是另外一個專注於 pods和 pods中容器的日誌 tail 解決方案。使用 Stern,為了快速除錯,結果是有顏色的。
Telepresence
Telepresence是一個開源的工具,可以讓你在本地除錯服務,雖然該服務與它位於遠端Kubernetes叢集或者是遠端雲服務資源(如資料庫)的依賴服務保持連線。
Telepresence 本地開發和和對遠端Kubernetes 叢集的除錯。
就個人而言,我認為Telepresence有很大的潛力,對於執行在 Kubernetes 上的服務而言,Telepresence已經是一個豐富的本地開發環境。線上除錯是一個新事物,但是發展很快。
Weave Scope
Weave Scope是一個Docker 和 Kubernetes的排錯&監控工具。它為你的應用自動的構建邏輯拓撲以及基礎設施,以便你的SRE和Ops團隊可以直觀的明白,監控,控制你的容器,基於應用的微服務。
除了拓撲檢視,Weave Scope也提供了一個深入檢視,比如節點和程式之間的任何事情,包括部署,服務,副本集,pods 和容器。另外,你基於CPU和記憶體使用率應用過濾,或者是通過名字,標籤,甚至路徑使用搜尋快速的找到節點型別,容器和程式。
PowerfulSeal
PowerfulSeal 的靈感來源於 Chaos Monkey,由 Bloomberg 工程師團隊開發。它可以給你的Kubernetes叢集新增混亂,如殺掉目標的pods或者是節點。它以兩個模式操作:互動式和自治的。
- 互動式模式被設計為允許你發現你的叢集元件,並且人工的停止一些事情看會發生什麼。它操作在節點,pods,部署,和名稱空間上。
- 自治模式讀取一個策略檔案,可以包含任意數量的pod和節點的場景。每個場景描述了在叢集上匹配,過濾,和行動的列表。
策略檔案是以YAML 格式編寫的,包含將被自治客戶端執行的場景。
相關工具
kube-monkey是用於Kubernetes叢集的Netflix的Chaos Monkey
的另外一種實現方式。它隨機刪除在Kubernetes叢集中的pods,鼓勵並驗證恢復服務的開發。
Marmot
Marmot是一個來自於谷歌的工作流執行引擎,用於處理SRE和Ops需要的工作流。它被設計為處理基礎架構變更的工具,但它可以和Kubernetes一起使用。
它特別適用於那些有一定節奏,可能需要對健康進行狀態檢查的任何型別的操作。因此,比如,你正在使用大量例項釋出一個新服務版本,這時你執行了一個增量在受控的釋出(金絲雀釋出)。
Ark
Ark 是一個用於管理從你的Kubernetes資源和卷做災難恢復的工具。Ark提供一個簡單並且魯棒的方式來備份和從系列的檢查點恢復Kubernetes資源和持久化的卷。備份檔案被儲存在一個物件儲存服務(如,Amazon S3)。
Ark 確保你以一個高效的方式自動化以下場景:
- 減低災難恢復的TTR(響應時間)。
- Kubernetes API 物件提供跨雲伺服器商遷移。
- 通過複製生產環境副本,開發和測試環境的設定(+CI)。
Ark 附帶一個叢集服務(Ark server)和CLI(Ark 客戶端),叢集服務最重要的工作就是它執行所有的Ark控制器。Ark伺服器執行實際的備份,校驗,和把備份檔案載入進雲物件儲存中。
Sysdig
Sysdig是一個容器排錯工具,它可以捕獲系統呼叫和來自於Linux核心的事件。簡單的說,對於整個叢集,Sysdig就是strace + tcpdump + htop + iftop + lsof + wireshark。
- Sysdig 在物理機和虛擬機器的作業系統級別使用。通過安裝進Linux核心,捕獲系統呼叫和其他作業系統事件。Sysdig 也可以為系統活動建立trace檔案。
相關工具
Sysdig Inspect是一個視覺化通過Sysdig收集的資料的介面。Sysdig Inspect 使得SRE和Ops團隊在容器排錯和安全調查方面很方便。
- Inspect的使用者介面被設計為直觀的導航Sysdig捕獲的資料,包含系統,網路和一個Linux系統的應用活動。Sysdig Inspect幫助你明白趨勢,相關性的指標,和大海撈針(從一堆資料中找到關鍵資料)。它包含了功能設計來支援效能和安全調查,深入容器查詢。
Sysdig Falco 是另外一個構建與Sysdig收集的資料基礎之上的工具。Falco監控活動行為,它被設計為發現你應用中異常的活動。比如,使用Falco你可以發現活動,如:
- 執行在一個容器中的指令碼。
- 一個執行在私密模式的容器。
- 一個掛載在敏感主機的容器。
最後的思考
Kubernetes 生態系統正在爆炸性增長。有大量的開源和商業工具可以幫助你更高效的操作非關鍵性的Kubernetes叢集和服務。