Kubernetes

10 个你不知道自己需要的 Kubernetes 工具

本文主要是介绍10 个你不知道自己需要的 Kubernetes 工具,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

庆祝 Kubernetes 十周年 🎉
简介

随着 Kubernetes 庆祝其成立十周年,其采用率和生态系统呈指数级增长。在 GitHub 上,Kubernetes 拥有超过 100,000 个星标,已成为云原生生态系统的支柱,能够实现容器化应用程序的可扩展和高效管理。最新版本 Kubernetes 1.30 引入了多项新功能和改进,进一步巩固了其作为领先容器编排平台的地位。

然而,要真正发挥 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

popeye 在本地 kind 集群上的结果

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 Hardening Guidance框架扫描您的集群,排除kube-system命名空间。

示例输出 :

kubescape 扫描结果的一部分

📖 了解更多关于Kubernetes 安全加固

4. mirrord

仓库链接 : mirrord

分类 : 远程开发

描述 : mirrord 是一个远程开发工具,允许开发人员在 Kubernetes 集群的上下文中运行本地进程。这意味着你可以在本地开发和调试应用程序,同时它们可以与实时的 Kubernetes 资源交互,就像它们正在集群中运行一样。mirrord 通过提供一个无缝的桥梁来简化开发过程,连接本地和远程环境。

解决什么问题:在Kubernetes上开发和调试应用程序可能会因为本地环境和集群环境之间的差异而变得具有挑战性。mirrord通过允许开发人员在本地运行应用程序并无缝地与Kubernetes集群交互来解决这个问题。这有助于更快地调试、测试和开发,因为开发人员可以使用他们熟悉的本地工具和环境,而无需为每次更改都将应用程序部署到集群中。

示例用法:要在Kubernetes集群的上下文中运行本地进程时使用mirrord

    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 charts,确保它们符合最佳实践和安全指南。它帮助你在部署资源之前发现潜在问题,确保你的 Kubernetes 配置安全且高效。

解决什么问题:编写Kubernetes配置可能会很复杂,即使是小错误也可能导致生产环境中出现重大问题。Kube-linter通过分析您的YAML文件和Helm图表中的常见错误、安全风险以及与最佳实践的偏差来解决这个问题。这种主动的方法有助于您在开发周期的早期识别并修复问题,从而提高Kubernetes部署的整体质量和安全性。

示例用法:要使用 Kube-linter 检查您的 Kubernetes 配置文件,请运行以下命令:

    kube-linter lint 1-create-deployment.yaml

kube-lint 错误

6. k3d

仓库链接 : k3d

类别 : 提供配置

描述 : k3d 是一个轻量级的包装器,用于在 Docker 中运行 k3s(一个轻量级的 Kubernetes 发行版)。它允许你在 Docker 容器内创建和管理 Kubernetes 集群,为开发、测试和 CI/CD 目的提供一种简单的方式来设置和运行 k3s 集群。

解决什么问题:为本地开发和测试设置和管理Kubernetes集群可能既繁琐又耗费资源。k3d通过在Docker容器内运行k3s集群来简化这一过程。这种方法减少了设置完整虚拟机或物理服务器的开销,使得在本地机器上创建和管理Kubernetes集群变得更加容易和快捷。

示例用法:要使用 k3d 创建一个新的 k3s 集群,请使用以下命令:

    k3d 创建集群 mycluster
7. Kubeshark

仓库链接 : Kubeshark

类别 : 网络可观测性

描述 : Kubeshark 是一个 Kubernetes API 通信分析器,提供对 Kubernetes 网络通信的深入可见性。它捕获、解析并可视化集群中的网络流量,允许您监控和调试微服务之间的交互。

解决什么问题:在 Kubernetes 集群中理解和调试网络通信可能具有挑战性,特别是在复杂的微服务环境中。Kubeshark 通过提供集群内 API 流量的全面视图来解决这个问题。这有助于开发人员和运维人员更好地了解服务交互,检测异常并更有效地解决网络问题。

示例用法:要开始使用 Kubeshark 捕获流量,请运行以下命令:

    kubeshark tap

kubeshark 网页界面

8. kubectl-tree

仓库链接 : kubectl-tree

分类 : 插件

描述 : kubectl-tree 是一个 kubectl 插件,允许你将 Kubernetes 对象层次结构以树状图形式可视化。此工具通过提供一种简单的方式来查看和导航 Kubernetes 资源(如 Pods、Deployments、ReplicaSets 等)之间的关系,增强了 kubectl 的使用体验。

解决什么问题:在大型集群中,理解和导航众多相互关联的对象之间的关系可能会很复杂。kubectl-tree 通过以树状格式显示资源层次结构,简化了这一过程,使资源之间的依赖关系和关系更容易可视化和管理。

示例用法:要可视化 crossplane 部署的层次结构,请使用以下命令:

    ✗ kubectl tree deployment crossplane -n crossplane-system  
    NAMESPACE          名称                                 状态  原因  年龄  
    crossplane-system  Deployment/crossplane                -              49分钟  
    crossplane-system  └─ReplicaSet/crossplane-6dcbf47db4   -              49分钟  
    crossplane-system    └─Pod/crossplane-6dcbf47db4-gzzwp  True           49分钟
9. Flux

仓库链接 : Flux

类别 : GitOps

描述 : Flux 是一组面向 Kubernetes 的持续和渐进交付解决方案。它自动化了资源的部署,并通过 Git 仓库中的配置文件同步集群状态,遵循 GitOps 原则。Flux 确保你的 Kubernetes 集群的期望状态,如你在版本控制配置文件中定义的那样,能够持续保持和更新。

解决什么问题:手动管理Kubernetes配置和部署可能会出错且难以审计。Flux通过自动同步您的Git仓库和Kubernetes集群解决了这个问题。通过将Git视为事实来源,Flux确保集群状态与配置文件保持一致,从而实现可追溯性、可审计性和更简单的回滚更改。这种方法还通过利用版本控制来促进团队成员之间的协作。

示例用法:要在您的 Kubernetes 集群中安装 Flux 并将其连接到您的 Git 仓库,请按照以下步骤操作:

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

📖 了解更多关于使用 GitOps 与 Flux 和 Crossplane的内容

10. Kubecost

仓库链接 : Kubecost

类别 : 成本管理

描述 : Kubecost 是一个用于 Kubernetes 集群的成本监控和优化工具。它提供了您 Kubernetes 工作负载的成本和资源使用情况的实时洞察。Kubecost 帮助您准确地分配成本,优化资源利用率,并通过识别低效和未使用的资源来减少整体云支出。此外,Kubecost 集成了 OpenCost,这是一个面向 Kubernetes 的开源成本监控和管理项目。

解决什么问题:在 Kubernetes 环境中管理成本可能会因为容器化工作负载的动态特性和云计费的复杂性而变得具有挑战性。Kubecost 通过提供详细的成本拆分、使用报告和优化建议来解决这个问题。这有助于组织了解其在 Kubernetes 上的支出,做出明智的资源分配决策,并识别节省成本的机会。

示例用法:在您的 Kubernetes 集群中部署 Kubecost 后,您可以访问仪表板查看成本报告,按命名空间、标签和部署分配成本,并接收优化资源使用量的建议。与 OpenCost 的集成通过提供标准化的成本监控和管理功能增强了这些能力。

奖励轮

虽然我已经强调了十个对Kubernetes至关重要的工具,但仍有许多其他工具可以极大地提升你的Kubernetes体验。这些额外的工具提供了从管理废弃的API到促进远程开发等多种功能。这里有一份你可能会发现非常有价值的额外工具列表:

最后的思考

我们刚刚庆祝了 Kubernetes 的 10 周年纪念日,很明显,其生态系统比以往任何时候都更加强大和充满活力。Kubernetes 已经发展成为云原生领域中的一个关键组成部分,使组织能够高效且可靠地管理其容器化应用程序。

我们在本博客中审查的工具,从 Popeye 用于检测配置问题到 Kubecost 用于成本管理,展示了 Kubernetes 生态系统的多样性和深度。每个工具都针对特定的挑战,帮助优化或保护 Kubernetes 部署。这些工具的大量出现突显了 Kubernetes 生态系统的动态特性以及每个领域中缺乏成熟的行业标准。这种多样性允许定制解决方案,以满足不同组织和用例的独特需求。

展望未来,Kubernetes 将会为世界上更多的基础设施提供动力。随着边缘计算、无服务器架构和基于 AI 的运营等新趋势的出现,Kubernetes 将继续适应和进化。生态系统通过一系列工具和解决方案促进创新的能力,对于满足未来云原生环境的需求至关重要。

你有没有最喜欢的一个项目?你是否使用了其他想要分享的工具?在评论中告诉我。

感谢你花时间阅读这篇帖子。希望你觉得有趣且有所收获。

🔗 与我连接LinkedIn

🌐 访问我的网站

📺 订阅我的YouTube频道

这篇关于10 个你不知道自己需要的 Kubernetes 工具的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!