Kubernetes 是最受欢迎的容器编排工具,但与其它工具结合使用时更加强大。Kubernetes 生态系统包含众多工具,用于命令行操作,简化集群管理、监控、安全以及部署任务。面对如此多的选择,不清楚在什么情况下应该使用哪个工具,或者各自的优势在哪里。
在这次巡览中,我们将介绍超过25个支持您Kubernetes集群的领先工具。我们将解释每个工具的关键功能以及如何提升您的Kubernetes使用体验。
Kubernetes 是一个功能强大的平台,具有在生产环境中大规模运行容器的稳健功能。虽然它为容器引入了一些高层次的概念,它仍然是一款复杂的系统,但缺少实际应用所需的某些关键组件。
生态系统工具可以填补这些空白。它们使将Kubernetes与您的其他DevOps流程集成更容易,例如支持GitOps以及CI/CD驱动的部署。Kubernetes工具还可以帮助您方便地创建新的集群,检查工作负载并监控使用率和成本,从而帮助简化使用Kubernetes。
建立一个强大的 Kubernetes 工具链可以让你更高效地与你的集群和工作负载进行互动。为了挑选合适的工具,你需要评估这些选项是否提供你需要的功能,接着看看它们是否受欢迎、是否可靠,以及是否能很好地与其他工具配合使用。
Spacelift 是最灵活的基础设施即代码管理平台,提供强大的持续集成和交付(CI/CD)能力,以支持您的基础设施。您的团队可以直接在拉取请求中协作,进行基础设施的更改。Spacelift 让您能够直观地查看资源,启用自助服务访问,并防止配置偏离。
通过 Spacelift 管理您的 Kubernetes 集群,而无需直接与云提供商互动或使用 IaC 工具(如 Terraform、OpenTofu、Pulumi 或 CloudFormation)。比如,您可以创建一个 Spacelift 堆栈,使用 Terraform 部署新的 AWS EKS 集群,让团队成员能够按需安全地测试他们的修改。
Spacelift 在部署集群以及在其中部署您的应用程序时也提供帮助。想了解更多,请参阅:如何围绕 Kubernetes 集群进行运维。
Kubectl 是 Kubernetes 的官方命令行工具。对于大多数 Kubernetes 用户来说,它是一个常用的命令行工具。相比手动调用 Kubernetes API,Kubectl 使得列出集群资源、添加新对象和应用声明性状态更改更容易。
kubectl [ 指令 ] [ 资源类型 ] [ 资源名称 ] [ 参数 ]
不过,很少有用户花时间深入掌握 Kubectl。掌握可用的命令和选项可以使操作更快更方便,从而提升您的集群管理体验。Kubectl 还可以提供详细文档,帮助您无需离开终端就能更多地了解 Kubernetes 和您的资源。
来看看我们的Kubectl 命令和对象速查指南
Helm 是一个 Kubernetes 包管理解决方案。它允许你将 Kubernetes 配置文件打包为可重用单元,称为图表(charts)。然后,你可以安装图表到你的集群中,以便轻松管理版本化的部署,并确保应用程序依赖项已准备好。
Helm图表也可以通过集中式的仓库与他人共享。这使您能够分发Kubernetes应用,而不必让用户手动修改和应用YAML配置文件。因此,对于为应用添加Kubernetes支持而言,Helm是一个理想的解决方案,包括所有组件、配置选项和依赖。
Kustomize 是一个让你每次使用 Kubernetes YAML 文件时都可以自定义配置的工具。你可以先设置一个基础配置,然后通过添加适合不同环境(如生产或预演)的自定义层来调整它。
Kustomize 提供声明式的配置管理工具,作为 Helm 图表的简单且灵活的替代方案。每个覆盖项都单独作为一个 YAML 文件,使其与 GitOps 和 IaC 工作流完全兼容。了解更多:Kustomize vs. Helm — 如何使用及比较。
[kube ns](https://github.com/weibeld/kubectl-ns)
和 [kube ctx](https://github.com/weibeld/kubectl-ctx)
是一组 Kubectl 插件,使在多租户的 Kubernetes 环境中工作变得更加方便。你可以使用 kube ns <namespace-name>
在命名空间(namespace)之间切换,而 kube ctx <context-name>
可用于更改你的活动集群上下文(context)——让你轻松在各个租户间切换,无需使用那些冗长的 -n/--namespace
标志或 kubectl config
命令。
Kubernetes Dashboard(https://github.com/kubernetes/dashboard)是官方的网页界面。它提供了您集群中工作负载项的可视化概览(https://spacelift.io/blog/kubernetes-dashboard),允许您快速监控资源、更改扩展选项,并查看节点层面的CPU和内存使用情况。当您不想记忆复杂的命令时,Dashboard 是一个很好的 Kubectl 替代工具。
Lens(https://k8slens.dev/)是另一个具有强大视觉界面的Kubernetes管理工具。它是一个桌面应用程序,旨在提供类似于IDE的Kubernetes体验。它支持Helm图表、应用程序模板、跨多个引擎的指标监控,以及无缝的多集群连接。您还可以使用Lens来管理Kubernetes RBAC配置,并邀请团队成员加入您的集群。
更多详情,请参阅我们的Kubernetes Lens教程文章。
Argo CD" 是一个持续交付(CD)解决方案,使应用程序自动部署到 Kubernetes 集群更加简单。它使用的是一种 GitOps 策略,定期从您的 Git 仓库同步更改。同时,Argo 通过定期检查集群中的对象是否与仓库中的定义一致来防止配置漂移。
ArgoCD(https://spacelift.io/blog/argocd)提供了一个强大的命令行界面(CLI)和网页界面。它允许你管理你的Kubernetes部署,而不直接让开发人员访问集群。
Argo Rollouts 可使您的集群实现渐进式应用部署。它通过使用蓝绿、金丝雀和实验性部署等策略来提高部署的安全性。您可以声明式地配置您的滚动更新并设置其推进条件,例如,将新版本首先暴露给50%的用户,并通过按照时间延迟、指标或通过手动操作逐步扩大部署。
Flux CD 提供了一套组件工具集,用于实现 GitOps 驱动的持续部署到您的 Kubernetes 集群。类似于 ArgoCD,它会自动将您的集群状态与 Git 仓库及其他来源保持一致,同时防止漂移现象。
Flux 配置简单,易于与 IaC 解决方案集成,它拥有一个强大的兼容工具和平台的生态系统支持。
成本管理是Kubernetes中最常遇到的挑战之一。
Kubecost 解决了这个问题,通过提供实时洞察来展示您在云中运行的 Kubernetes 集群的成本。它让您能够随时间监控成本,找出哪些工作负载对成本影响最大,并识别潜在的节省机会。
了解更多关于Kubecost及其使用方法的内容。
亚马逊的Elastic Kubernetes 服务(EKS) 是一项管理的 Kubernetes 服务,允许您在几分钟内在 AWS 中快速创建新的集群配置新的集群。EKS 自动管理集群的控制节点和工作节点,让您能够专注于部署工作负载。这减少了与启动、维护和更新您自己的集群相关的许多挑战,因此当你想使用 Kubernetes 而不想处理管理的麻烦时,它就是你的理想选择。
💡 你也会喜欢:等等
Google Kubernetes Engine (GKE) 是另一项托管的 Kubernetes 服务,它允许您根据需要快速启动新的云集群。它专门设计用于帮助您在无需专业的 Kubernetes 技能的情况下运行 Kubernetes 工作负载,并且它使管理任务更加自动化。这些功能包括治理、合规性、安全性和配置管理方面的强大功能,如果您亲自管理集群,这些方面可能比较难搞定。
Terraform 是一种领先的代码定义基础设施(IaC)工具,允许你来自动化云资源的部署和管理。
对于 Kubernetes 用户,Terraform 可以基于你在 Git 仓库中版本控制的配置文件,在任何云上创建新的集群。Terraform 还可以用于在你的集群内部署工作负载或应用,例如,使用 Kubernetes 清单文件或 Helm 图表来部署。
Prometheus 是最著名的时序数据库引擎之一。它有许多用例,但在 Kubernetes 的背景下,它是一个很好的指标存储和查询工具,用于提供集群及其工作负载的可观测性。当指标发生变化,比如节点 CPU 使用率激增或 Pod 失败时,您会收到警报。还可以与 Grafana 等工具集成,将这些指标可视化到仪表板上。
Kubernetes 默认并没有自带任何监控解决方案,通常会用 Prometheus 来补全这些关键的监控功能。查看如何为 Kubernetes 集群设置 Prometheus 监控 了解更多。
Istio 是一个服务网格,它使您的 Kubernetes 集群的网络配置、流量管理和监控更简单地进行。它协调应用程序的微服务之间的通信,提供了比简单的 Kubernetes 服务模型更多的控制选项。
Istio 提供了能理解应用需求的应用感知型网络。它使用 Envoy 代理 来抽象出底层网络环境并方便通用流量管理。
Loki 是来自 Grafana 家族的可观测性解决方案,即一个日志聚合工具。它帮助你解决故障和监控活动,聚合、分组和标注来自你应用程序的日志。尽管 Loki 是一个通用的日志聚合工具,但它在 Kubernetes 环境下特别有用,并且具有多个针对 Kubernetes 的特定功能。它会自动从你的 Kubernetes 工作负载对象(例如 Pod 标签)中抓取并索引元数据,以便与你的 Pod 日志一起查看。
Kubernetes 的 Metrics Server 是一个插件(Addon),用于收集节点和 Pod 层次上的 CPU 和内存资源使用情况。它是一个轻量级、专用于 Kubernetes 的单集群替代方案,可以替代像 Prometheus 这样的复杂监控解决方案。
Metrics Server 已与 Kubectl 集成。可以通过 kubectl top 命令访问其数据。要使用 Kubernetes 自动扩展功能,包括 Horizontal Pod Autoscaler (HPA) 和 Vertical Pod Autoscaler (VPA),需要 Metrics Server,因此,在生产集群中添加 Metrics Server 是一个最佳实践。
Portainer(https://www.portainer.io/)是一个容器管理平台,提供强大的网络界面工具来管理您的工作负载。它原生支持Kubernetes,帮助管理Pods、Deployments、Helm图表及其他集群资源。Portainer还提供了强大的RBAC权限管理和外部认证系统,让团队成员通过Portainer访问Kubernetes,而无需直接暴露集群。
SUSE Rancher(https://www.rancher.com/)是一款面向企业用户的Kubernetes管理工具。它提供了一个集中的平台来管理您在不同云提供商和本地数据中心的Kubernetes集群。您可以创建新的集群,监控工作负载情况,并执行安全扫描,以高效地确保环境合规。
Rancher 这个工具不错,当你在大规模部署 Kubernetes 并且在不同平台之间切换时遇到困难时可以使用。
Kubernetes网络中,Ingress资源至关重要:它们允许您通过HTTP路由将应用程序暴露给外部。然而,要使用Ingress,您需要在集群中部署一个Ingress控制器。Ingress NGINX是最受欢迎的选择——它速度快、功能强大且配置简单。
正如其名,Ingress NGINX 是通过 NGINX 来处理请求的。它将传入的请求反向代理到您的 Kubernetes 服务。代理路由会根据需求自动调整,根据您添加到集群中的 Ingress 资源。若您需要一个简单的 Ingress 解决方案,能够适用于多个集群版本,那么 Ingress NGINX 可能正适合您。
Minikube 让你轻松启动一个本地的 Kubernetes 集群。只需一条命令,你就可以快速搭建一个完整的 Kubernetes 环境,方便地进行项目开发和部署测试。
Minikube 可在您的主机上以虚拟机、容器或裸机的形式运行集群组件。内置的附加组件让启用高级可选功能变得简单,例如 Ingress、Istio、Elastic Stack 和 GPU 支持。因此,无论是 Kubernetes 新手还是有经验的用户都非常适合使用它。
别看它体积小,功能可强大了。K3s 是另一个紧凑的 Kubernetes 发行版。由 SUSE 开发,它是大小不到 70MB 的单一可执行文件。尽管体积很小,K3s 已认证兼容 Kubernetes 的上游版本,可以用于生产环境,并支持高可用性配置。
K3s非常适合本地开发,也适用于跨数百个节点的真实应用场景。小巧的二进制文件使其成为包括物联网设备在内的资源受限环境的理想选择。
Kind
是我们用来启动 Kubernetes 集群的第三个工具,但是它有点不同。可以在 Docker 容器中运行 Kubernetes,每个容器都是一个 Node。
它的目的是让在开发Kubernetes时更轻松地测试Kubernetes集群行为,因此如果您计划贡献功能或特性,您可能会从中受益。如果您已经安装了Docker,Kind也可以是Minikube的一个很好的替代选择。
在寻找一种基于终端的 Kubernetes 经验时,是否希望它比 Kubectl 更高级?K9s 是一个功能齐全的终端 UI,让你能够通过控制台监控、管理和基准测试 Kubernetes 工作负载。它提供了一个类似仪表盘的灵活界面。
K9s可以根据不同的视图和列来定制,让您轻松找到所需的信息。它高度依赖于别名和热键进行快速导航。您还可以添加皮肤和插件来增强工具的功能。
kube-bench 是一个自动化的工具,用于扫描您的集群,确保符合安全最佳实践。检查配置为 YAML 文件,这使自定义测试和添加新测试变得简单。默认规则集基于Kubernetes CIS 基准标准。
定期运行kube-bench可以帮助您审计集群的安全性并发现任何潜在威胁。在您对集群做出更改后,再次运行测试,以确保您已消除风险并使集群恢复合规状态。
要点
这是对今天常提到的一些K8s工具的高层次概述。这些工具帮助您更高效地使用K8s,通过支持健康、稳健且便捷的集群管理。
我们的列表还远远不够全面——还有许多优秀的Kubernetes工具专门用于特定场景和工作负载。如果你在这里找不到你需要的工具,那就继续搜索吧,因为总有新的工具不断涌现。由于Kubernetes只是更广泛的DevOps生态系统的一部分,如果你还需要与云、CI/CD和软件开发生命周期相关的其他工具,也可以查看我们关于2024年最有用的70多种DevOps工具的详尽指南。
而且,如果你想了解更多关于Spacelift的信息,可以注册一个免费账户或预约工程师演示。
由James Walker所写。最初发布在 spacelift.io .