译者 | 李睿
审校 | 重楼
在容器化应用程序编排方面,Kubernetes是市场的领导者。它允许用户在多主机环境中管理容器,提供工作负载分配和网络处理。
此外,它还提供了许多在DevOps过程中至关重要的特性,例如自动扩展、自动修复和负载平衡。这些功能解释了Kubernetes是大多数软件工程师首选解决方案的原因。
然而,人们也普遍认为管理Kubernetes是一项艰巨的任务。值得庆幸的是,有一些Kubernetes工具可以帮助用户实现流程的自动化,以确保其部署和工作流得到优化。本文探讨了各种Kubernetes监控工具,包括专有的和开源的工具,它们可以帮助用户最大限度地利用软件开发项目。
优秀的Kubernetes工具
(1)Kubernetes成本管理工具
- KubeCost
价格:免费(开源)
KubeCost是一个Kubernetes成本监控和管理工具,它可以根据名称空间标签、服务、部署等提供成本消耗的实时报告。
KubeCost还允许用户考虑云计算服务器上的外部支出,以获得整体视图,并为成本超支添加警报和通知。此外,还可以获得提高性价比的智能见解。
- Kubernetes Opex Analytics
价格:免费(开源)
Kubernetes Opex Analytics是Kubernetes成本监控工具,在其GitHub存储库中拥有400多颗星。使用这个工具,可以跟踪Kubernetes使用的资源,并以每个名称空间为基础获得每小时、每天和每月的趋势。
Kubernetes Opex Analytics还突出显示了应用程序工作负载无法利用的容量。在展示分析时,它还提供了优雅的可视化,此外,它还将其分析指标提供给第三方可视化工具。
- Pluto
价格:免费(开源)
毫无疑问,Kubernetes在很短的时间内推出了新的更新并弃用了一些组件。然而,查找和更新所有弃用的API版本是一件麻烦事。
Pluto是Kubernetes的一个监控工具,它可以自动在用户的基础设施即代码(IaC)仓库和Live Helm版本中找到受影响的版本,然后将它们标记为“已弃用”或“已删除”,以帮助用户处理已贬值的API。
(2)Kubernetes部署工具
- Loft
价格:免费和付费级别
Loft是一个部署工具,它使用户能够为Kubernetes设置自助服务虚拟环境。这种方法允许集群的快速初始化,并提供更好的控制。使用Loft,可以管理跨Kubernetes环境的多个租户的访问控制、安全性和隔离。
此外,它还可以帮助用户监视未使用的资源,并自动将所有此类名称空间置于休眠状态,这可以帮助服务节省高达70%的云计算成本。
- Minikube
价格:免费(开源)
Minikube允许用户创建一个本地Kubernetes集群,其方法是在其服务器上创建一个虚拟机(或者可以使用Docker),并在几分钟内部署一个单节点集群。
从本质上来说,Minikube是测试和探索Kubernetes的一个很好的工具,因为它有几个特性,例如负载平衡器、仪表板和Nvidia GPU支持。
- Kubespray
价格:免费(开源)
Kubesray是一个管理工具,它允许用户在AWS、GCE、Azure和裸机服务器上部署Kubernetes集群。它由Ansible剧本、库存和供应工具组成,用于处理Kubernetes集群配置。
例如,Ansible允许跨多个平台运行高可用性集群。
- Okteto
价格:免费(开源)
Okteto是一个Kubernetes部署工具,它为用户提供了预配置的开发环境。这样,如果在这些内部部署环境中进行任何更改,它们会自动反映在云服务器上。
这种功能的好处是它加速了Kubernetes开发工作流,因为不必等待CI管道完成。
- Flagger
价格:免费(开源)
Flagger是一个部署工具,可以促进Kubernetes应用程序的逐步发布。首先,可以将应用程序的更新版本发布给受控和有限的用户群,以进行测试。如果初始部署成功,则可以完成对其余用户的发布。
这样做的好处是,如果出现错误,可以安全地将应用程序回滚到稳定版本。需要强调的是,Flagger使用了Contour、NGINX、App Mesh、Linkerd和Istion来实现这个金丝雀部署模式。
- ArgoCD
价格:免费(开源)
ArgoCD是一个为Kubernetes提供声明式持续交付的工具,它允许自动化Kubernetes部署和生命周期管理。其结果是两者都是可审计的,并且易于理解。
- Flux
价格:免费(开源)
Flux由Weaveworks开发,并于2016年开源,它可以帮助用户在Git中保存应用程序的整个状态。可以使用它来部署带有金丝雀和特性标志的应用程序,也可以使用Git执行A/B测试和渐进交付。
Flux还增强了应用程序的可听性,因为一切都是通过pull请求控制的。
(3)Kubernetes监控工具
- Headlamp
价格:免费(开源)
Headlamp是一个开源工具,它提供了一个用户友好的Web UI来监控Kubernetes集群。用户不仅可以获得传统仪表板的所有功能,还可以通过插件扩展UI。
动态UI根据权限(例如删除或编辑)调整和显示控件。实际上,用户可以在集群中部署Headlamp,并通过Web浏览器或作为从Kubecconfig文件读取设置的桌面应用程序访问它。
- K9s
价格:免费(开源)
K9s是另一个开源工具,它有一个易于使用的终端UI,用于监视Kubernetes pod。UI显示实时信息,可以通过某些命令与之交互。
k9除了允许运行集群管理命令外,还显示所有集群指标和RBAC角色。它甚至带有不同的皮肤来改变UI的外观和感觉。
- Lens
价格:免费和付费级别
Lens是一个桌面应用程序,可用于Windows、Linux和macOS,它为Kubernetes提供了一个开源集成开发环境(IDE)。
它允许在Kubernetes集群之间轻松导航,而无需使用任何kubectl命令,并提供实时统计数据和日志。该界面显示错误和警告,可以展开这些错误和警告以查看详细信息。
- Falco
价格:免费(开源)
Falco是一个活动监控工具,用于检测Kubernetes中的异常使用模式。该项目最初由Sysdig启动,现在是CNCF孵化的项目。使用Falco,可以检测涉及Linux系统调用的异常活动并获得即时警报。
此外,它能够为容器、主机和网络定义规则,然后通知是否有任何系统调用违反了这些规则。
- Kube-bench
价格:免费(开源)
Kube-bench是一个开源监控工具,它通过运行CIS Kubernetes Benchmark中记录的检查来检查Kubernetes部署是否安全。测试是在一个YAML文件中定义的,这使得它们很容易根据规范进行升级。
- Kube-hunter
价格:免费(开源)
Aquasecurity的Kube-hunter旨在探测Kubernetes集群中的安全漏洞。它增加了安全威胁的可见性,并允许在造成任何损害之前解决问题。
- 开放策略代理(OPA)
价格:免费(开源)
开放策略代理(OPA)是一个开源的政策制定引擎,它统一了跨多个云原生环境(包括Kubernetes)的策略执行。
它提供了一种高级语言,允许将自定义策略声明为代码并将其集成到服务中。这提供了安全管理的灵活性和对云服务的更好控制。
(4)命令行实用工具
- Kubectx / Kubens
价格:免费(开源)
Kubectx和Kubens是在GitHub上的同一个存储库下找到的命令行工具。Kubectx允许在Kubectl上的场景(集群)之间快速切换。另一方面,Kubens允许使用一些命令在Kubernetes名称空间之间切换。
需要强调的一个关键点是,从0.9.0版本开始,这两个工具都在Go中进行了重写,尽管Bash实现仍然存在。
结论
Kubernetes是一个强大的编排工具,不用说,它已经彻底改变了现代云计算。随着Kubernetes被越来越多地采用,对管理和监控Kubernetes集群的高级有效工具的需求也在不断增长。
这一指南重点介绍了与市场上领先的Kubernetes工具相关的一些关键特性,这些工具迎合了各种用例,主要是成本管理、部署和监控。
最适合软件项目的Kubernetes工具的最终决定取决于用户的特定需求和项目目标。
原文标题:Best Kubernetes Tools:The Complete Guide,作者:Florian Pialoux