天天看點

您可能不知道的10個必備KUBERNETES工具

作者:雲雲衆生s
您可能不知道的10個必備KUBERNETES工具

随着 Kubernetes 迎來 10 周年慶,其采用率和生态系統呈指數級增長。在 GitHub 上擁有超過 100,000 個星标,Kubernetes 已成為雲原生生态系統的支柱,能夠實作容器化應用程式的可擴充和高效管理。最新版本 Kubernetes 1.30 引入了許多新功能和改進,進一步鞏固了其作為領先的容器編排平台的地位。

譯自 10 Essential Kubernetes Tools You Didn’t Know You Needed,作者 Piotr。

簡介

然而,要真正發揮 Kubernetes 的強大功能,必須使用合适的工具。在本博文中,我們将探讨十個鮮為人知但非常有用的工具,它們可以增強您的 Kubernetes 體驗。從配置問題檢測到網絡可觀測性,這些工具将幫助您更有效地管理叢集。無論您是經驗豐富的 Kubernetes 使用者還是剛入門,您都會發現寶貴的見解和實用技巧,以優化您的 Kubernetes 工作流程。

讓我們深入了解這些工具,讓您的 Kubernetes 技能更上一層樓!

工具類别

我們将要讨論的每個項目都屬于一個類别。這些類别有助于在 Kubernetes 上進行設定、管理和開發。我故意避免了可觀測性領域中像 Prometheus/Grafana 這樣知名且成熟的項目,或網絡領域的 Cilium。相反,我們将重點關注那些可能不太為人所知但能為 Kubernetes 使用者帶來顯著益處的工具。

1. Popeye

倉庫連結: Popeye

類别: 配置問題檢測

描述: Popeye 是一個 Kubernetes 叢集清理器。它會掃描您的 Kubernetes 資源并報告叢集中潛在的問題和錯誤配置。Popeye 旨在主動預防,通過定期掃描和稽核您的部署、配置和資源定義,確定您的叢集幹淨且符合 Kubernetes 最佳實踐。

解決的問題: Kubernetes 叢集随着時間的推移可能會變得雜亂無章且配置錯誤,進而導緻潛在的穩定性和性能問題。Popeye 幫助識别這些錯誤配置,例如已棄用的 API 版本、缺少的資源和安全漏洞。通過解決這些問題,Popeye 有助于維護叢集的健康和性能,確定它們平穩高效地運作。

示例用法: 要在目前 Kubernetes 上下文中運作掃描并掃描所有命名空間,隻需使用以下指令:

popeye -A -s cm
           
您可能不知道的10個必備KUBERNETES工具

本地 kind 叢集上關于 popeye 的結果

2. KUTTL

倉庫連結: KUTTL

類别: 測試

描述: KUTTL (Kubernetes 測試工具包) 是一套全面的工具集,專為測試您的 Kubernetes 應用程式而設計。它提供了一個簡單且聲明式的架構來編寫、運作和管理測試,確定您的 Kubernetes 配置和應用程式按預期運作。

解決的問題: 測試 Kubernetes 配置和應用程式可能很複雜且容易出錯。KUTTL 通過提供一個與 Kubernetes 無縫內建的聲明式測試架構來簡化此過程。它允許您定義測試場景和預期結果,使您更容易驗證配置并在開發周期的早期發現問題。

示例用法: 要使用 KUTTL 建立和運作測試,您可以在 YAML 檔案中定義測試用例。以下是一個簡單測試用例的示例:

建立測試目錄結構:

my-tests/
├── 00-setup.yaml
├── 01-verify.yaml
├── kuttl-test.yaml
           

在 00-setup.yaml 中定義測試步驟:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  key: value           

在 01-verify.yaml 中定義預期結果:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  key: value           

使用以下指令運作測試:

kuttl test my-tests/
           

此指令将執行測試步驟并驗證您在 YAML 檔案中定義的結果。

3. Kubescape

倉庫連結: Kubescape

類别: 安全篩選

描述: Kubescape 是一個用于 Kubernetes 叢集的安全掃描工具。它通過掃描漏洞、錯誤配置和對安全标準的合規性,提供對叢集安全态勢的全面評估。Kubescape 利用行業最佳實踐和架構,例如 NSA Kubernetes 加強指南,以確定您的叢集滿足嚴格的安全要求。

解決的問題: 確定 Kubernetes 叢集的安全至關重要,但由于環境的複雜性和動态性,這可能具有挑戰性。Kubescape 通過提供自動安全掃描來簡化此任務,這些掃描可以識别漏洞、錯誤配置和合規性問題。這有助于管理者維護安全且合規的 Kubernetes 環境,降低安全漏洞和不合規的風險。

示例用法: 要對您的 Kubernetes 叢集執行安全掃描,請使用以下指令:

kubescape scan framework nsa --exclude-namespaces kube-system

此指令将根據 NSA Kubernetes 加強指南架構掃描您的叢集,排除 kube-system 命名空間。

示例輸出:

您可能不知道的10個必備KUBERNETES工具

了解更多關于 Kubernetes 安全加強

4. Mirrord

倉庫連結: mirrord

類别: 遠端開發

描述: mirrord 是一個遠端開發工具,允許開發人員在 Kubernetes 叢集的上下文中運作本地程序。這意味着您可以在本地開發和調試應用程式,同時它們與實時 Kubernetes 資源互動,就好像它們在叢集中運作一樣。mirrord 通過在本地和遠端環境之間提供無縫橋梁來簡化開發過程。

它解決了什麼問題: 開發和調試在 Kubernetes 上運作的應用程式可能具有挑戰性,因為本地環境和叢集環境之間存在差異。mirrord 通過允許開發人員在本地運作應用程式,同時與 Kubernetes 叢集無縫互動來解決此問題。這有助于更快地調試、測試和開發,因為開發人員可以使用他們熟悉的本地工具和環境,而無需将他們的應用程式部署到叢集以進行每次更改。

示例用法: 要使用 mirrord 在 Kubernetes 叢集的上下文中運作本地程序:

mirrord exec --target-namespace devops-team \
--target deployment/foo-app-deployment \
nodemon server.js
           

有關詳細指南和更多示例,您可以參考 我之前的部落格文章 關于使用 mirrord 進行遠端開發。

5. Kube-linter

倉庫連結: Kube-linter

類别: 代碼風格檢查

描述: Kube-linter 是一個靜态分析工具,它檢查 Kubernetes YAML 檔案和 Helm 圖表以確定它們符合最佳實踐和安全指南。它可以幫助您在部署資源之前發現潛在問題,確定您的 Kubernetes 配置安全高效。

它解決了什麼問題: 編寫 Kubernetes 配置可能很複雜,即使是微小的錯誤也會導緻生産環境中出現重大問題。Kube-linter 通過分析您的 YAML 檔案和 Helm 圖表以查找常見錯誤、安全風險和與最佳實踐的偏差來解決此問題。這種主動方法可以幫助您在開發周期的早期識别和解決問題,進而提高 Kubernetes 部署的整體品質和安全性。

示例用法: 要使用 Kube-linter 檢查您的 Kubernetes 清單,請運作以下指令:

kube-linter lint 1-create-deployment.yaml

您可能不知道的10個必備KUBERNETES工具

6. k3d

倉庫連結: k3d

類别: 配置

描述: k3d 是一個輕量級包裝器,用于在 Docker 中運作 k3s (一個輕量級 Kubernetes 發行版)。它允許您在 Docker 容器内建立和管理 Kubernetes 叢集,提供了一種簡單的方法來設定和運作 k3s 叢集,用于開發、測試和 CI/CD 目的。

它解決了什麼問題: 為本地開發和測試設定和管理 Kubernetes 叢集可能很麻煩且資源密集。k3d 通過使您能夠在 Docker 容器内運作 k3s 叢集來簡化此過程。這種方法減少了設定完整虛拟機或實體伺服器的開銷,使在本地機器上建立和管理 Kubernetes 叢集變得更加容易和快捷。

示例用法: 要使用 k3d 建立一個新的 k3s 叢集,請使用以下指令:

k3d cluster create mycluster

7. Kubeshark

倉庫連結: Kubeshark

類别: 網絡可觀測性

描述: Kubeshark 是 Kubernetes 的 API 流量分析器,提供對 Kubernetes 網絡通信的深入可見性。它捕獲、解析和可視化叢集中的網絡流量,使您能夠監控和調試微服務之間的互動。

它解決了什麼問題: 了解和調試 Kubernetes 叢集中的網絡通信可能具有挑戰性,尤其是在複雜的微服務環境中。Kubeshark 通過提供對叢集内 API 流量的全面視圖來解決此問題。這有助于開發人員和營運人員深入了解服務互動、檢測異常并更有效地解決網絡問題。

示例用法: 要使用 Kubeshark 開始捕獲流量,請運作以下指令:

kubeshark tap

您可能不知道的10個必備KUBERNETES工具

kubeshark web 界面

8. kubectl-tree

倉庫連結: kubectl-tree

類别: 插件

描述: kubectl-tree 是一個 kubectl 插件,它以樹狀結構顯示 Kubernetes 資源。它提供了一種直覺的方式來檢視和導航您的 Kubernetes 叢集,使您能夠輕松地了解資源之間的關系。

它解決了什麼問題: 使用 kubectl get 指令檢視 Kubernetes 資源可能很麻煩,尤其是在大型叢集中。kubectl-tree 通過以樹狀結構顯示資源來解決此問題,使您能夠更輕松地了解資源之間的關系并導航您的叢集。

示例用法: 要使用 kubectl-tree 檢視您的 Kubernetes 資源,請運作以下指令:

✗ kubectl tree deployment crossplane -n crossplane-system
NAMESPACE          NAME                                 READY  REASON  AGE
crossplane-system  Deployment/crossplane                -              49m
crossplane-system  └─ReplicaSet/crossplane-6dcbf47db4   -              49m
crossplane-system    └─Pod/crossplane-6dcbf47db4-gzzwp  True           49m
           

9. Flux

倉庫連結: Flux

類别: GitOps

描述: Flux 是一套用于 Kubernetes 的持續和漸進式傳遞解決方案。它自動化資源部署并根據 GitOps 原則将叢集狀态與存儲在 Git 存儲庫中的配置同步。Flux 確定您的 Kubernetes 叢集的期望狀态(如您的版本控制配置檔案中定義的那樣)得到持續維護和更新。

解決的問題: 手動管理 Kubernetes 配置和部署可能會出現錯誤,并且難以審計。Flux 通過自動化您的 Git 存儲庫和 Kubernetes 叢集之間的同步來解決此問題。通過将 Git 視為真相來源,Flux 確定您的叢集狀态與您的配置檔案一緻,進而實作可追溯性、可審計性和更輕松的更改復原。這種方法還通過利用版本控制來促進團隊成員之間的協作。

示例用法: 要在您的 Kubernetes 叢集中安裝 Flux 并将其連接配接到您的 Git 存儲庫,請執行以下步驟:

fluxctl identity --k8s-fwd-ns flux
fluxctl sync --k8s-fwd-ns flux
           

閱讀有關 使用 Flux 和 Crossplane 進行 GitOps 的更多資訊

10. Kubecost

倉庫連結: Kubecost

類别: 成本管理

描述: Kubecost 是用于 Kubernetes 叢集的成本監控和優化工具。它提供有關 Kubernetes 工作負載的成本和資源使用情況的實時洞察。Kubecost 幫助您準确配置設定成本、優化資源使用率并通過識别效率低下和未使用的資源來降低總體雲支出。此外,Kubecost 與 OpenCost 內建,這是一個用于 Kubernetes 的開源成本監控和管理項目。

解決的問題: 由于容器化工作負載的動态特性和雲計費的複雜性,管理 Kubernetes 環境中的成本可能具有挑戰性。Kubecost 通過提供詳細的成本細分、使用情況報告和優化建議來解決此問題。這有助于組織了解其 Kubernetes 支出,就資源配置設定做出明智的決策,并确定節省成本的機會。

示例用法: 在您的 Kubernetes 叢集中部署 Kubecost 後,您可以通路儀表闆以檢視成本報告、按命名空間、标簽和部署配置設定成本,并接收有關優化資源使用情況的建議。與 OpenCost 的內建通過提供标準化的成本監控和管理功能來增強這些功能。

獎勵回合

雖然我重點介紹了 Kubernetes 的十個基本工具,但還有許多其他工具可以極大地增強您的 Kubernetes 體驗。這些附加工具提供從管理已棄用的 API 到促進遠端開發等各種功能,以及更多。以下是一些您可能會發現非常有價值的附加工具清單:

工具名稱 描述 代碼庫
K9s 用于管理 Kubernetes 叢集的基于終端的使用者界面 K9s
kube-no-trouble 檢查已棄用的 API kube-no-trouble
kaniko 在 Kubernetes 叢集中建構容器鏡像 kaniko
arkade 便攜式 Kubernetes 應用市場 arkade
helmfile 管理 Kubernetes Helm Charts helmfile
kdash Kubernetes 終端儀表闆 kdash
werf Kubernetes 的 GitOps CI/CD 工具 werf
kluctl Kubernetes 的部署工具 kluctl
cilium Kubernetes 的網絡、安全和可觀察性解決方案 cilium
kubeflow Kubernetes 的機器學習工具包 kubeflow
k8sgpt GPT 驅動的 Kubernetes 助手 k8sgpt

結束語

我們剛剛慶祝了 Kubernetes 的 10 周年,很明顯,生态系統比以往任何時候都更加強大和充滿活力。Kubernetes 已發展成為雲原生環境的關鍵組成部分,使組織能夠高效可靠地大規模管理其容器化應用程式。

我們在本文中回顧的工具,從用于配置問題檢測的 Popeye 到用于成本管理的 Kubecost,都證明了 Kubernetes 生态系統的廣度和深度。随着 Kubernetes 繼續發展,我們可以期待看到更多創新工具的出現,這些工具将進一步簡化和增強我們的雲原生之旅。

為了成本管理,展示了 Kubernetes 生态系統的多樣性和深度。每個工具都針對特定的挑戰,幫助優化或保護 Kubernetes 部署。這些工具的激增突出了 Kubernetes 生态系統的動态特性以及并非所有領域都存在完善的标準。這種多樣性允許定制的解決方案,以滿足不同組織和用例的獨特需求。

展望未來,Kubernetes 有望為世界上更多的基礎設施提供動力。随着邊緣計算、無伺服器架構和人工智能驅動的營運等新趨勢的出現,Kubernetes 将繼續适應和發展。生态系統通過廣泛的工具和解決方案來促進創新的能力,對于滿足未來雲原生環境的需求至關重要。

您最喜歡哪些項目?您是否使用過您想分享的其他工具?請在評論中告訴我。

感謝您抽出時間閱讀這篇文章。希望您覺得它有趣且資訊豐富。

繼續閱讀