本文将带您探索一些卓越的工具,它们可以与 Kubernetes 协同工作,以扩展其功能。
在 DevOps 的世界里,您会逐渐认识到,拥有强大的 DevOps 工具来减轻手动操作负担至关重要。各种 DevOps 工具可用于每个 DevOps 阶段和不同的功能领域。
如果您身处 DevOps 领域并使用容器运行应用程序,Kubernetes 绝对是不可或缺的工具之一。数以百计的工具可以与 Kubernetes 整合,以增强其能力。 这些工具可以帮助您更好地管理、保障安全、创建仪表板以及监控 Kubernetes 集群。
以下列出了一些能为您的 Kubernetes 带来强大功能的优秀工具。
让我们开始吧!
Helm
Helm 是 Kubernetes 的包管理器,它可以让您轻松获取高度可重复或用于多种场景的应用程序和服务,从而简化它们在典型 Kubernetes 集群上的部署。借助 Helm,您可以查找、共享和利用为 Kubernetes 构建的软件。
它采用称为 Helm Charts 的图表来定义、安装和升级复杂的 Kubernetes 应用。
Helm 的特点:
- 通过图表简化所有 Kubernetes 应用程序的复杂性
- 通过升级和自定义钩子轻松更新内容
- 图表可以在公共或私有服务器上轻松共享
- 只需一个命令即可轻松回滚
- 提高开发人员效率并增强运营准备
Flagger
Flagger 是一个用于 Kubernetes 的渐进式交付操作器。
它利用 Istio、App Mesh、Nginx、Linkerd、Contour、Gloo 和 Skipper 路由来进行流量转移,并使用 Prometheus 进行金丝雀分析,从而自动实现金丝雀部署。在金丝雀部署中,您会先将新版本发布给一小部分用户,进行测试,如果运行良好,则再向所有用户发布。
它利用集群中运行的服务网格来管理不同部署之间的流量。为了将流量转移到金丝雀版本,它会评估性能指标,例如请求的平均持续时间、HTTP 请求的成功率以及 pod 的运行状况等等。
Flagger 可以针对各种部署策略(如金丝雀部署、A/B 测试和蓝绿部署)执行自动化的应用程序分析、升级和回滚。
Kubewatch
Kubewatch 是一个开源的 Kubernetes 监控工具,它通过 Slack 频道发送通知。
它使用 Go 语言编写,由 Bitnami Labs 开发。它用于监控 Kubernetes 资源并在发生任何更改时发出通知。
您可以通过 kubectl 或使用 Helm 图表来安装 Kubewatch。它简单易懂,且具有非常用户友好的界面。除了 Slack,它还支持 HipChat、Mattermost、Flock、Webhook 和 SMTP。
根据您要监控的 Kubernetes 资源,您可以在 ConfigMap 文件中为这些资源设置 true 或 false。配置好 Kubewatch 并运行 pod 后,您将开始接收有关 Kubernetes 事件的通知,如下所示。
Gitkube
Gitkube 是一款工具,它可以通过 git push 在 Kubernetes 上构建和部署 Docker 镜像。它包含三个组件:Remote、gitkube-controller 和 gitkubed。Remote 由 gitkube-controller 管理的自定义资源构成。gitkube-controller 将更改发送到 gitkubed,后者会构建 Docker 镜像并进行部署。
Gitkube 的功能:
- 易于安装,即插即用
- 提供基于角色的访问控制以确保安全
- 使用公钥进行身份验证非常简单
- 支持多租户命名空间
- 除了 kubectl 和 git 之外,没有其他依赖项
kube-state-metrics
kube-state-metrics 是一项服务,通过侦听 Kubernetes API 服务器来生成状态对象的指标。它用于检查各种对象的运行状况,例如节点、pod、命名空间和部署。它为您提供来自 Kubernetes API 的原始、未修改的数据。
以下是 kube-state-metrics 提供的信息:
- Cron 作业和作业状态
- Pod 的状态(就绪、运行等)
- 资源请求及其范围
- 节点容量和状态
- 副本集规范
Kamus
Kamus 是一款开源 GitOps 工具,用于加密和解密 Kubernetes 应用程序的机密信息。Kamus 加密的机密信息只能由运行在 Kubernetes 集群上的应用程序解密。它使用 AES、Google Cloud KMS 和 Azure KeyVault 来加密机密信息。您可以使用 Helm Chart 来开始使用 Kamus。
Kamus 包含两个实用程序:Kamus CLI 和 Kamus init 容器。Kamus CLI 用于与加密 API 集成,而 Kamus init 容器用于与 API 解密集成。
Kubernetes 的普通 Secret 没有加密;它们采用 Base64 编码。您无法将其安全地存储在 Git 上。任何有权访问存储库的人都可以使用这些机密信息。因此,需要像 Kamus 这样的合适的加密/解密方案。它还提供了一个威胁模型,可以处理威胁并确保机密信息安全。
Untrak
Untrak 是一款在 Kubernetes 中使用的开源工具,用于查找未跟踪的资源并执行垃圾回收。它可以帮助您从集群中查找并删除那些未跟踪的文件。
在使用 kubectl apply 或 Helm template 将清单注入 CI/CD 管道后,Kubernetes 并不知道对象何时从存储库中被删除。一旦对象被删除,它们就不会在交付过程中被跟踪,并且仍然保留在 Kubernetes 集群中。
它使用简单的配置文件 untrak.yaml 在内部执行命令,以查找不再属于您的源代码管理的资源。
Scope
Weave Scope 用于 Docker 和 Kubernetes 的可视化、监控和故障排除。
它向您展示了容器化应用程序和整个基础架构的自上而下的视图,您可以使用它轻松识别并诊断任何问题。
在 Docker 容器中运行微服务架构的应用程序并不容易。这里的组件高度动态且难以监控。使用 Weave Scope,您可以轻松地解决内存泄漏并控制 CPU 消耗,可视化网络瓶颈。
Scope 的功能:
- 帮助您实时监控 Docker 容器
- 提供在容器中运行的进程之间的轻松导航
- 显示主机或服务的 CPU 和内存使用情况
- 使用 CLI 重新启动、停止或暂停容器,而无需离开 Scope 浏览器窗口
- 支持自定义插件,以获取有关容器、进程和主机的更多详细信息
Kubernetes 仪表板
Kubernetes 仪表板 是 Kubernetes 提供的 Web 界面。它用于在 Kubernetes 集群上部署、排除故障和管理容器化应用程序。它提供有关集群的所有信息,例如节点、命名空间、角色、工作负载等等的详细信息。
您可以使用 Helm Chart 来部署 Kubernetes 仪表板,或者使用下面提到的简单 kubectl 命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
Kops
Kops 代表 Kubernetes 操作,它是一个开源项目,可以非常轻松快速地设置生产就绪的 Kubernetes 集群。Kops 主要用于在 AWS 和 GCE 上部署 Kubernetes 集群。
小型 Kubernetes 集群易于创建和维护,但是当您扩展集群时,会增加大量的配置,并且难以进行操作管理。Kops 是一款可以帮助您解决此类问题的工具。它遵循配置驱动的方法,使集群始终保持最新和安全状态。
Kops 还具有许多网络后端,您可以根据用例选择其中一个,以便轻松设置各种类型的集群。
cAdvisor
cAdvisor 是一款用于监控容器的开源工具。它可以帮助您了解集群上运行的容器的性能特征和资源使用情况。
它在节点级别运行,可以自动发现特定节点上运行的所有容器,并收集内存、文件系统、CPU 和网络统计信息。它提供了一个 Web 界面,用于显示集群中所有容器的实时数据。
要开始使用 cAdvisor,您需要运行其 Docker 镜像 google/cadvisor,然后您可以通过 http://localhost:8080 在 Web 浏览器中访问它。
Kubespray
Kubespray 是一款免费工具,它结合了 Ansible Playbook 和 Kubernetes。它用于 Kubernetes 集群生命周期管理。
通过使用 Kubespray,您可以快速部署集群并自定义集群实现的所有参数,例如部署模式、网络插件、DNS 配置、组件版本、证书生成方法等。
只需运行一个简单的 Ansible-playbook,您的集群就可以启动并运行。您可以轻松扩展或升级 Kubernetes 集群。
K9s
K9s 是一款基于终端的开源工具,其仪表板实用程序可以执行 Kubernetes Web UI 的所有功能。它用于导航、观察和管理部署在 Kubernetes 集群上的应用程序。
K9s 的功能:
- 实时跟踪您的集群
- 基于每个资源自定义显示
- 放大集群资源问题
- 支持基于角色的访问控制
- 用于验证资源性能的内置基准
Kubetail
Kubetail 是一个简单的 Bash 脚本,用于将多个 pod 的日志聚合到一个流中。
非常方便!
它可以帮助您轻松进行调试。
最新版本的 Kubetail 还具有高亮和筛选功能。此功能使您能够执行日志着色。借助 Homebrew,您可以使用单个命令安装 Kubetail。您可以在 Kubetail 可以读取的环境变量中添加默认值,例如 KUBETAIL_NAMESPACE、KUBETAIL_TAIL 和 KUBETAIL_SKIP_COLORS 等。
PowerfulSeal
PowerfulSeal 是一款开源的、功能强大的混沌工程工具,用 Python 编写,用于 Kubernetes 集群。
混沌工程用于增强系统的信心,以检查其在生产中处理问题的能力。它将故障注入 Kubernetes 集群,以便尽早发现其中的问题。
它受到了 Netflix Chaos Monkey 的启发,用于提高 Kubernetes 的弹性。借助 PowerfulSeal,工程师可以有意识地尝试破坏集群中的某些东西,以检查系统的反应。
PowerfulSeal 在三种模式下工作:自主模式、交互模式和标签模式。
在自主模式下,它通过读取您提供的策略文件来执行场景。在交互模式下,它会告诉您手动尝试破坏的集群组件。在标签模式下,您可以使用标签来销毁集群上的目标对象,例如 pod。
Popeye
Popeye 是一款清理实用程序,用作 Kubernetes 集群的消毒剂🧼。
它将扫描整个集群并报告与配置和资源相关的问题。它可以帮助您在 Kubernetes 集群上执行最佳实践,以避免常见问题。
此实用程序适用于 Windows、Linux 和 macOS。目前,它仅适用于节点、pod、命名空间和服务。借助 Popeye,您可以轻松识别无效和未使用的资源、端口不匹配、RBAC 规则和指标利用率等。
总结
DevOps 工具在成功中扮演着关键角色,希望以上内容能帮助您更好地管理 Kubernetes。