Kubernetes 已经成为大规模部署经过编辑的应用程序的标准方法(许多人会说这是标准方法)。但是,如果 Kubernetes 可以帮助我们控制无序和复杂的经编辑的部署,那么有什么方法可以帮助我们控制 Kubernetes 呢?毕竟,它也可能是复杂、混乱和难以管理的。
随着 Kubernetes 的成长和演变,它的一些过度行为很可能会从内部得到控制。但是有些人并没有等到 Kubernetes 变得更容易使用,而是对生产中 Kubernetes 的许多常见问题推出了自己的解决方案。
在这里,我们重点介绍 10 个以各种方式简化 Kubernetes 的项目,从简化命令行交互,到简化应用程序部署语法,再到与 AWS 集成,再到为多个集群提供一个窗口。
目 录
Bitnami Cabin:适用于 iOS 和 Android 的 Kubernetes 面板
Kedge:简明的 Kubernetes 部署定义
Koki Short:可管理的 Kubernetes 密钥清单
Kops:Kubernetes 集群的命令行操作
Kubebox:Kubernetes 的终端控制台
Kube-monkey:Kubernetes 的 Chaos Monkey
Kube-ps1:智能 Kubernetes 命令提示符
Kube-prompt:交互式 Kubernetes 客户端
Kube-shell:用于 Kubernetes CLI 的 shell
Kubespy:实时监控 Kubernetes 资源
Bitnami Cabin:适用于 iOS 和 Android 的 Kubernetes 面板
任何现代 web 应用程序或服务都应该具有某种移动界面。Cabin 为 Kubernetes 管理员提供了一个版本的 Kubernetes 面板,可以通过 iOS 或 Android 智能手机访问。整个 Kubernetes 面板中提供的许多功能都可以从 Cabin 启动,包括 Helm 图表,扩展部署,读取 pod 日志以及访问 Kubernetes 托管的基于 Web 的应用程序。
Kedge:简明的 Kubernetes 部署定义
关于 Kubernetes 最常见的抱怨是它的清单 (或应用程序定义) 是多么复杂和冗长。编写它们是一件痛苦的事情,维护它们也是一件痛苦的事情,所以人们求助于第三方工具来缓解也就不足为奇了。Kedge 提供了更简单、更简洁的语法。向 Kedge 提供了 Kubernetes 定义文件的简单版本,Kedge 将该简单定义扩展为完整的 Kubernetes 对应文件。与 Koki Short(见下文)不同,Kedge 的声明文件不使用模块化语法,它只是将应用程序定义简化为通用的快捷方式。
Koki Short:可管理的 Kubernetes 密钥清单
Koki Short 类似上述的 Kedge 是一个改进应用程序定义或清单在 Kubernetes 中工作方式的项目。像 Kedge 定义一样,Short 定义使用缩写的语法来描述 Kubernetes pod,它可以被翻译成完整的语法,然后再返回。与 Kedge 定义不同,Short 定义也是模块化的,这意味着一个 Short 声明中的细节可以在其他声明中重用,这样就可以简单地定义具有公共元素的许多 pod。
Kops:Kubernetes 集群的命令行操作
Kops 由 Kubernetes 团队开发,允许您从命令行管理 Kubernetes 集群。它支持在 AWS 和 GCE 上运行的集群,VMware vSphere 和其他环境也在开发中。除了自动设置和拆卸过程之外,Kops 还可以帮助实现其他类型的自动化。例如,它可以生成 Terraform 配置,从而允许使用 Terraform 重新部署集群。
Kubebox:Kubernetes 的终端控制台
Kubebox 是 Kubernetes 的高级终端控制台,它为 Kubernetes 及其 API 提供的不仅仅是一个美化的命令行。它提供内存和 CPU 利用率的交互式显示、pod 列表、运行日志和配置编辑器。最重要的是,它可以作为 Linux、Windows 和 MaciOS 的独立应用程序使用。
Kube-monkey:Kubernetes 的 Chaos Monkey
对一个系统进行压力测试的一种万无一失的方法是随机打碎东西。这就是 Netflix 的 Chaos Monkey 背后的理论,这是一种混沌工程工具,可以随机终止生产中运行的虚拟机和本地编辑,以“鼓励”开发人员构建更具弹性的系统。Kube-monkey 是对压力测试 Kubernetes 集群的相同基本思想的实现。它的工作方式是在你指定的集群中随机破坏 pod,并且可以在特定的时间窗内进行微调。
Kube-ps1:智能 Kubernetes 命令提示符
Kube-ps1 不是面向 Kubernetes 的第一代索尼 PlayStation 仿真器(尽管这很棒)。它是 Bash 的一个简单添加,在提示符中显示当前的 Kubernetes 上下文和名称空间。Kube-shell 包括这个功能以及许多其他功能,但是如果您只想要更智能的提示符,Kube-ps1 所需开销很小。
Kube-prompt: 交互式 Kubernetes 客户端
Kubernetes CLI 的另一个最小但有用的修改是 Kube-prompt,它允许您与 Kubernetes 客户机输入相当于交互式命令会话的内容。Kube-prompt 使您不必输入 kubectl 作为每个命令的前缀,并为每个命令提供上下文信息自动完成。
Kube-shell: Kubernetes CLI 的 Shell
Kubernetes 命令行功能强大,但与任何命令行应用程序一样,选择它的选项可能非常繁琐。Kube-shell 将标准的 Kubernetes 命令行包装在一个集成的 shell 中,该 shell 提供常见命令的自动完成和自动建议,包括 Kubernetes 服务器提供的建议(例如服务名称)。它还提供了更健壮的命令历史记录函数、vi 风格的编辑模式,以及用户、名称空间、集群和其他特定于安装的详细信息的运行上下文信息。
Kubespy: 实时监控 Kubernetes 资源
Pulumi 的 Kubespy 是一个诊断工具,它允许您实时跟踪 Kubernetes 资源的变化,为您提供一种动态的文本视图面板。例如,您可以在启动 pod 时查看 pod 状态的更改: 将 pod 定义写入 Etcd,计划在节点上运行 pod,在创建 pod 的节点上运行 Kubelet,最后将 pod 标记为 running。Kubespy 可以作为独立的二进制文件运行,也可以作为 Kubectl 的插件运行。
AWS 的 Kubernetes 入口控制器
Kubernetes 通过名为 Ingress 的服务向集群提供外部负载平衡和网络服务。Amazon Web Services 提供负载平衡功能,但不会自动将这些服务与 Kubernetes 的功能进行耦合。AWS 的 Kubernetes 入口控制器弥补了这一差距。入口控制器自动管理集群中每个入口对象的 AWS 资源,为新的入口资源创建负载平衡器,为已删除的资源删除负载平衡器,并利用 AWS 云形成来确保集群的一致状态。它还自动管理集群中使用的其他元素,如 SSL 证书和 EC2 自动伸缩群。
kube – os -view: 用于多个 Kubernetes 集群的面板
Kubernetes 有一个用于通用监视的有用面板,但是 Kubernetes 社区正在尝试使用其他方法向 Kubernetes 管理员提供有用的数据。Kube-os-view 就是这样一个实验:它提供了多个 Kubernetes 集群的概览视图,以图形化的方式呈现,因此您可以一眼看到集群中 pod 的 CPU 和内存使用情况以及状态。注意,它不允许您调用任何命令,这完全是为了可视化。但是它提供的可视化效果是惊人的和有效的,这是可与操作中心的壁监视器完美结合。
Skaffold: Kubernetes 的迭代开发
Skaffold 是谷歌为 Kubernetes 开发的工具之一,是一种为 Kubernetes 应用程序执行连续部署的方法。当您对源代码进行更改时,Skaffold 会自动检测它们,触发构建和部署流程,并在出现错误时警告您。Skaffold 完全在客户端运行。它可以在现有的 CI/CD 渠道中使用,并与一些外部构建工具集成,主要是谷歌自己的 Bazel。
Stern 和 Kubetail: Kubernetes 的日志跟踪
Stern 允许您从 Kubernetes 中的 pod 和本地编辑中生成颜色编码的输出 (根据 tail 命令)。这是一种将多个资源的所有输出管道传输到一个可以一眼读取的流中的快速方法。同时,您有一种一目了然的方法(颜色编码) 来区分流。
Kubetail 类似地将来自多个 pod 的日志聚合到单个流中,并对不同 pod 和本地编辑进行颜色编码。但是 Kubetail 是一个 Bash 脚本,因此它只需要一个 shell。
Teresa:Kubernetes 的简单 PaaS
Teresa 是一个应用程序部署系统,在 Kubernetes 上作为简单的 PaaS 运行。组织成团队的用户可以部署和管理属于他们的应用程序。这使那些受给定应用程序信任的人更容易使用它,而不必直接处理 Kubernetes。