一些很棒的Kubernetes工具和项目,用于部署、保护和监控Kubernetes集群。
【译文】原文地址
之前我在watch上分享了 2021年顶尖技术和工具,它得到了DevOps和SRE社区的大力支持。所以今天我将列出用于测试和开发的顶尖Kubernetes工具。
Lens
有一段时间,我是个重度GKE用户,特别喜欢它的简单和GCP控制台上的管理仪表盘。对于本地开发,运行Kubernetes社区维护的Dashboard已经能满足大部分需求了。然而,当过渡到管理多云和混合云环境时,我需要一个单一的工具来与GKE、EKS和本地minikube集群交互。
Lens 是一个开源的Kubernetes IDE,可以很容易地在多个集群之间切换,并与已部署的应用程序交互。 Aqua Security也有一个扩展的工具,集成了漏洞测试,使DevSecOps工作流程更容易管理。
Fairwinds Tools
Fairwinds和Aqua security提供了几个有用的Kubernetes工具来验证、扫描和优化应用程序:
- Polaris:作为dashboard和准入控制器部署,也可以是CLI工具来审计和验证deployment最佳实践(例如你的deployment是否定义了健康检查、是否配置了资源请求约束)
- Kube-hunter: 查找集群中的安全弱点
- Kube-bench: 运行CIS Kubernetes Benchmark和标记失败的配置
- Trivy: 可集成到CI中的容器漏洞扫描工具
-
Goldilocks:使用kubernetes垂直pod自动伸缩来查询各命名空间的资源使用率。
Kyverno
Kyverno是一个CNCF沙箱项目,旨在简化Kubernetes中的策略管理。虽然Kubernetes有管理员和操作员可配置的PodSecurityPolicies和NetworkPolicies,但通常很难正确配置、测试策略和验证资源。Kyverno通过创建一个ClusterPolicy CRD来验证和实施规则来解决这个问题。
一些策略示例:
- 容器禁用root特权
- 禁用hostNetwork、hostPort、hostPIID和hostIPC
- 禁止latest镜像tag
- 强制deployment打标签
CLI工具
Kubernetes有太多的CLI工具,以下是最有用的:
- kube-ps1: 将当前Kubernetes上下文和名称空间添加到bash/zsh提示中,以避免与错误的集群交互
- kubectx + kubens: Kubectx帮助您在集群之间切换,而kubens用于在名称空间之间切换
- krew: kubectl插件的包管理器(相当于brew, apt)
- kubectl-neat: 删除Kubernetes在运行kubectl get时添加的冗余信息。这有助于在调试Kubernetes manifest时隐藏我们通常不需要的大多数行(例如,creationTimestamp, uid, dnpolicy,terminationMessagePolicy)。
- kube-no-trouble: 检测集群中使用废弃的api。在升级cluster之前运行一个完整性检查非常有用
- helm-mapkubeapis: 更新Helm版本,包含废弃或移除Kubernetes APIs更新。将此与kube-no-trouble结合,不仅可以修复您的应用程序,还可以修复第三方Helm charts。
- kube-diff** + **helm-diff: diff检查器预览部署用的kubernetes manifest或Helm版本之间的区别
Kube Forwarder
在开发过程中,你很可能在kubernetets集群中部署数据库,而且没有通过kubernetes service暴露服务(例如NodePort、Ingress) Kubectl允许端口转发将这些服务映射到localhost,以便在本地进行交互。这对于一个或两个应用程序是没问题,但当你有多个应用程序时, Kube Forwarder 变得比管理多个终端标签更容易使用。它还可以处理自动重新连接和多集群,如果你需要在开发和qa集群之间切换进行测试,这非常方便。
Kubecost
类似任何云计算服务,在AWS/GCP/Azure上面运行Kubernetes会变得很昂贵。 即使使用可抢占实例对集群进行微调,并使用自动伸缩器来缩减未使用的资源,仍然很容易存在空闲或过度提供的资源。 kubecost监控Kubernetes的支出,并提供成本分配的详细报告。对于大型项目,可能已经有一个团队在密切监控成本支出,但对于个人项目,如果您想避免自己在云计费工具上折腾,那么kubecst是非常优秀的。
Kubespy
Kubespy 是Pulumi的一个工具,通过跟踪Kubernetes API来观察Kubernetes资源的变化。Kubespy提供比kubectl get -w更详细的信息,并在命令行中显示所有更改。我发现这个工具在调试cert-manager和TLS认证问题时很有用,但我确信它可以用于所有其他Kubernetes调试会话。