0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

最常用的11款Kubernetes工具

阿铭linux 来源:InfoQ 作者:Matt Broberg 2021-08-23 10:43 次阅读

“到 2021 年,几乎所有接触过云基础设施的人都熟悉 Kubernetes 项目。简单地说,Kubernetes 是一个非常强大的容器编排平台,并且 Kubernetes 社区一直在共享工具,这有助于改善 Kubernetes 开发人员的体验。本文列出作者自己最常用的 11 款 Kubernetes 工具,并对它们进行了分类介绍。

Kubernetes 是一个非常强大的容器编排平台。但在我看来,Kubernetes 最重要的是将最佳实践整合到了一个系统中,这个系统可以从树莓派(Raspberry Pi)扩展到财富 500 强中最大的基础设施。它使得开发和运维人员能够通过标准化的 API 和有意义的抽象(如 Pod 或 ConfigMap)进行协作。

通过提供一个开源标准,Kubernetes 可以将一个组织从数十年自己摸索的“容器策略”中拯救出来,幸运的是,这个标准也是每个主要云供应商的标准。也就是说,像 Kubernetes 这样庞大的野兽是很难驯服的,但为了充分发挥它的潜力,我们需要一套额外的工具。

Kubernetes 社区一直在共享工具,这有助于改善 Kubernetes 开发人员的体验。以下是我自己最常用的 11 款 Kubernetes 工具,我将它们进行了分类:哪些是可以帮助我运行 Kubernetes 的工具,哪些是测试 Kubernetes 的工具,以及哪些是可以让我在 IDE 中能够获得乐趣的(最后但并非不重要)。

类别 1:运行 Kubernetes 环境

Minikube 仍然是最佳的

几乎每个 Kubernetes 教程都是从“下载 Minikube”开始的,这在今天仍然行得通。如果你想在一个真正低风险的环境中编排容器,那么打包及维护良好的 Minikube 项目可以让 你在大约 23 秒内即可运行一个集群。

Helm 仍然是可重复部署的标准

虽然我们都编写过一两个一次性脚本来将一些配置部署到 Kubernetes 中,但实际上管理可重复部署的方法是使用 Helm。就像 Ubuntu 上的 apt 或 RHEL 上的 rpm 一样,Helm 是一个包管理器,它为 Kubernetes 开发人员做了很多事情。作为一名开发人员,想在投入不多的情况下用其他项目来测试我的应用程序。我可以简单地运行helm install jenkins/jenkins,而不是编写自己的 Jenkins 设置。想要获取 Helm 或其他 Kubernetes 软件包,请查看 Artifact Hub。

Rancher K3s 可随时随地运行

向 Kubernetes 服务中推送容器是一回事,但是如果你想在 Raspberry Pi 农场之外也弄一个呢?来自 Rancher 的 K3s 项目可以做到这一点。正如维护人员在 README 中所说的那样,它对于 Kubernetes“集群学”(clusterology)的任何边界或物联网尝试都是理想选择。

K3s 作为本地和轻量级集群选择的一个突出特点是它支持的设备非常广泛。使用 K3s,你可以在任何地方运行 Kubernetes。事实上,它是以单个二进制文件下载的,这意味着它包含了所有生产 Kubernetes 配置的功能(sqlite3 是默认的,但是你可以通过它的可插拔存储后端将其扩展到 Etcd3),并且 Rancher 团队及其 1749 名(到目前为止)贡献者仍在非常积极地维护它。

Loft 可扩大团队规模

任何人都可以通过调用curl来启动上面提到的 Minikube 集群。但是,如果你想要和别人合作呢?在云原生开发工具和本地开发集群的交接处有很多选择。

传统的选择是在公有云上运行一些可公开访问的资源:AKS、EKS、DigitalOcean Managed Kubernetes 或其他可用资源。但是任何一个在云服务上运行过hello world教程但忘删除它的人都知道,这会让你很快就损失很多。

Loft 提供了一组包含 UI 和 CLI 在内的服务,可以进一步抽象 Kubernetes 环境,这些环境最终将在生产环境中运行。这样做之后,你可以建立一个自助服务体验,而无需考虑隔离和预算问题。

Loft 对隔离的关注,特别是对 vClusters 及其相应 Spaces 的关注,为每个开发人员提供了一个真实的环境,而不会影响预算。这对开发人员和部门领导来说都是非常有价值的。

Loft 的价值在于启动和关闭安全 Kubernetes 环境的速度。它在一个用例中提到只需单击一次 UI,即可创建本地环境的现场演示。更自私地考虑一下,在不破坏开发集群命名空间的情况下,可以在自己的独立测试用例中演示最新的生产功能, 这说听起来确实不错。

此外,Loft 实验室最近聘请了了不起的 Rich Burroughs,这对于他们正在建立的这类社区来说是个非常好兆头。

当与团队合作时,使用 Loft 是非常有意义的。

类别 2:简化反馈回路

Skaffold 可提供自动反馈回路

假设你是一名开发人员,你想写一个可以在 Kubernetes 上运行的应用程序。从运行 Node.jsPython 应用程序到在 Kubernetes 上运行容器,你需要了解大量的 Kubernetes 概念,数量大到像一堵 YAML 墙。幸运的是,谷歌的好朋友们编写了 Skaffold,为我们提供了一些急需的脚手架。

不要误会我的意思:你仍然需要编写自己的代码、Dockerfile、清单文件以及与管道相关的所有服务。Skaffold 提供的是一种干净的方法,可以在每次变更代码后重新运行部署管道。它的主页上引用了来自世界各地开发人员的语录,深受用户喜爱。

你可能会有这种感觉:运行 Skaffold 感觉就像第一次运行 Vagrant,而不是手动管理虚拟机。曾经需要很多步骤才能完成且不可靠的任务,在某种程度上变得简单且可重复了,从而简化了我们的工作。Skaffold 将在 Kubernetes 的测试和部署反馈回路中这样做。

Podman 可停止管理 Docker 守护进程

虽然 Dockerfiles 可能永远是我们表示容器的方式,但 Docker 本身是完全可选的。甚至 Kubernetes 本身也在将其运行时从 Dockershim 中移出来。我非常推荐 Podman 作为本地运行 Docker 的替代品,唯一的原因是你不需要再维护守护进程服务了。不干扰守护进程意味着更少的无效时间浪费和更多的编码时间。

这种区别对你来说可能很陌生,所以解释一下:Docker 既是一个与本地容器交互的客户端,也是一个管理容器运行的用户态守护进程(aka server)。Nick Janetakis在这里 完美地解释了这一点。

像我一样,当一切都能正常工作时,你可能会忘记 Docker 客户端和服务端之间的区别。也就是说,我经常会看到这样的信息

$ docker ps

$ Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

现在我只能选择了。我可以对 Docker 守护进程和工具链中的服务进行故障排除,或者我可以使用一些不会遇到相同问题的服务。我更喜欢后者。

Podman 提供了将容器作为子进程运行的选项,从而无需单独的守护进程。这意味着我永远不会再收到那条错误消息了,我的容器会一直在做它该做的事情。

你可能会因为自己的肌肉记忆太根深蒂固而不愿改变。在这种情况下,我强烈建议你删除dockerCLI 并将alias docker = podman添加到你的 shell 配置文件中。

Tilt 真正了解你的应用程序

虽然我介绍了几种不同的管理管道的方法,但我仍然认为 Tilt 是观察基于 Kubernetes 应用程序的持续反馈回路最彻底、最直观的方法。Tilt UI 具有非常简洁的错误捕捉功能,可以在 YAML 小错误变成重大部署错误之前就能指认出它们来。它还具有可定制的按钮,以提供特定于应用程序的独特功能,如在不同迭代之间刷新架构中的消息队列。

如果你想观察细节但又不想被它们淹没,那就试试 Tilt 吧。

DevSpace 可使开发流程更高效

你是否有过想让kubectl做某件事情,但却忘记了做这件事情所需要的大量命令呢?很幸运的是,DevSpace 是一个开源的命令行实用程序,它可以将 Kubernetes 开发人员体验包在一个温暖的拥抱中。它能管理大量繁琐的任务,所以你可以像对待运行在本地系统上的 Pod 一样对待它。

此外,如果你有非常特殊的设置项,可以简单地将它们添加到 devspace.yaml 声明配置文件中即可。

虽然它不会一对一地取代kubectl提供的“手术刀”,但运行 DevSpace 会为你提供大量正常的默认行为,使与真正的 Kubernetes 环境交互更像是$HOME。

Lens IDE 可使调试更快速

像 Minikube 这样的 Kubernetes 项目开箱即用,带有一个称为 Dashboard 的丝滑而直接的 GUI。这是一个非常出色的以阅读为中心的环境视图,但是如果你想通过 UI 执行某些操作,该怎么办呢?

开源社区中最强大的选项是 Lens。我真的不应该称它为 GUI,因为它的特性丰富到足以被视为 IDE。只需单击按钮,你就可以在 Lens 中执行 Kubernetes 能够执行的任何操作。我最喜欢 Lens 的是它那不可思议的思维情境特定选项,它帮助我区分了 Kubernetes 领域许多其他资源的命名空间服务。

类别 3:不可或缺的 IDE 开发工具

VSCode 我们都需要的 Kubernetes 扩展

如果没有一个能够区分 Kubernetes 资源和 Helm 图表的 IDE,就不能说是有 Kubernetes 开发经验。这就是 Visual Studio Code Kubernetes Tools 的亮点所在。任何生活在 Kubernetes 世界的人都必须从安装它开始。

该 VSCode 插件使 YAML 更易于管理

Kubernetes 开发人员被描述为 YAML 牧民,我认为这非常合适。虽然我也喜欢结构化的特定领域语言,如下一代 Kubernaut,但我不会放弃任何来自管理 YAML 本身的帮忙。幸运的是,红帽(Red Hat)的 YAML Language Support 扩展可以帮到我。

它提供了大量的自动完成选项,以及许多额外的细微选项,这些选项帮助我解决了问题。话虽如此,右键单击并选择“格式化文档”的功能本身就很有价值。

Footsteps 通过代码查找路径

严格来说,它虽然不是 Kubernetes 扩展,但是我发现在 YAML 的农场中导航可能会让我忘记出发的地方。它在我 2000 行的配置文件的什么地方呢?那时 Footsteps 声照亮了我短期失忆的立足点。这个出色的扩展程序,也适用于 VSCode 或其他 IDE,它通过高亮来突出显示最近编辑的文档。随着你的继续编码,Footsteps 会逐渐淡化这些颜色,让你了解你的编码模式。安装它,可以节省你迷失方向的时间。

总结

有很多不可思议的工具可以帮助 Kubernetes 开发和运维人员来驾驭这种新的容器编排范式。我喜欢从三个方面来考虑它们:它们是能帮助我运行 Kubernetes,是能测试 Kubernetes,还是能以可感知的方式编写 Kubernetes 代码呢?所有这三个类别都可以引导你在开源生态系统中获取维护良好的软件,这可以帮助你像我们及其他人一样成为更好的 YAML 牧民。

原文链接:https://loft-sh.medium.com/11-of-the-best-open-source-kubernetes-tools-2021-edition-b4aa49487845

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    116

    文章

    1705

    浏览量

    105599
  • kubernetes
    +关注

    关注

    0

    文章

    224

    浏览量

    8709

原文标题:2021年11款最佳的开源 Kubernetes 工具

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    devops使用最广泛的集成工具盘点

    devops使用最广泛的集成工具包括GitLab(全栈DevOps平台)、Jenkins(CI/CD自动化服务器)、Docker(容器化技术)、Kubernetes(容器编排平台)、Ansible
    的头像 发表于 11-26 13:48 147次阅读

    Kali Linux常用工具介绍

    Kali Linux 虚拟机中自带了大量渗透测试工具,涵盖了信息收集、漏洞利用、口令破解、漏洞扫描等多个方面。 以下是按分类简要介绍一部分常用工具的使用方法: 使用方法只能当做参考,**详细
    的头像 发表于 11-11 09:29 426次阅读

    芯片开发必备工具|好用的文件比对工具有哪些?

    在芯片开发工程中,通常为了知道工程目录下发生了哪些改动,或者两份源码文件之间有什么不同,会需要用到文件和文件夹的比对工具。使用工具比肉眼观察更便捷,也更精确!本文将介绍自己最常用的几
    的头像 发表于 11-01 08:11 317次阅读
    芯片开发必备<b class='flag-5'>工具</b>|好用的文件比对<b class='flag-5'>工具</b>有哪些?

    常用的devops工具集成方法

    常用的devops工具集成方法涵盖了软件开发和运维的各个方面,从版本控制到自动化构建、测试、部署和监控。这些工具的有效集成可以帮助团队提高协作效率,减少沟通障碍,实现快速、高质量的软件交付。
    的头像 发表于 10-09 11:21 239次阅读

    网络监控工具Nagios和Zabbix的功能和使用场景

    在现代网络管理中,监控工具是确保网络运行正常、快速发现和解决问题的关键。本文将详细介绍网络工程师常用的两监控工具:Nagios、Zabbix。每
    的头像 发表于 08-13 16:28 1114次阅读
    网络监控<b class='flag-5'>工具</b>Nagios和Zabbix的功能和使用场景

    恒讯科技分析:常用的vps路由测试的工具和方法

    VPS(虚拟私人服务器)路由测试是评估服务器网络性能的重要环节,以下是一些常用工具和方法: 1、BestTrace:这是一路由追踪客户端软件,可以测试VPS的去程路由和回程路由。它具有可视化
    的头像 发表于 08-08 22:54 353次阅读

    windows11 远程连接工具

    随着远程办公的普及,选择合适的远程桌面工具变得尤为重要。在Windows11上,用户可以利用系统自带的远程桌面功能,或选择更专业的第三方解决方案,如Splashtop。本文将详细介绍如何在
    的头像 发表于 08-06 08:37 345次阅读
    windows<b class='flag-5'>11</b> 远程连接<b class='flag-5'>工具</b>

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具
    的头像 发表于 08-05 15:43 342次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b>集群

    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

    Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。
    的头像 发表于 07-15 13:31 855次阅读
    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装<b class='flag-5'>Kubernetes</b>集群

    计算机网络中最常用的通信协议

    绞线是目前最常用的传输介质之一,它由两根绞在一起的导线组成,可用于传输模拟或数字信号。同轴电缆也是一种常用的传输介质,它由内外两层导体组成,中间填充绝缘材料。
    发表于 02-19 09:51 717次阅读

    最常见的直流负载工作方式

    见的直流负载工作方式。 1. 固定电阻负载 固定电阻负载是最简单和最常见的直流负载方式之一。它由一个或多个电阻器组成,用于产生一个恒定的电阻值,从而使电路中的电流保持稳定。这种负载常用于校准和测试电源的电流输出能力,以
    的头像 发表于 01-18 15:12 742次阅读

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 刚刚 GA,旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的 API资源,用于管理已暴露的服务。在这篇文章中,我将介绍 Gateway
    的头像 发表于 01-12 11:32 879次阅读
    <b class='flag-5'>Kubernetes</b> Gateway API攻略教程

    使用Jenkins和单个模板部署多个Kubernetes组件

    在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个
    的头像 发表于 01-02 11:40 757次阅读
    使用Jenkins和单个模板部署多个<b class='flag-5'>Kubernetes</b>组件

    《Linux常用命令自学手册》+一本手边linux速查字典

    ,大概是以命令的常用性来排序的吧,比如第一个就是ls,这个几乎是最常用工具了,相当于初学windows,需要会用资源管理器一样,而《linux命令速查手册》则是中规中矩,按照字母顺序编写。两者对比
    发表于 12-26 08:46

    Kubernetes RBAC:掌握权限管理的精髓

    Kubernetes RBAC(Role-Based Access Control)是 Kubernetes 中一项关键的安全功能,它通过细粒度的权限控制机制,确保集群资源仅被授权的用户或服务账号访问。
    的头像 发表于 12-25 09:43 468次阅读