提高Kubernetes可理解性的5个技巧

2021-05-11 10:48:17 浏览数 (1)

现在,当你与企业开发团队交谈时,他们很有可能正在将应用程序迁移到云中,或者正在构建云原生应用程序。虽然在云中运行这些应用程序有很多方法,但Kubernetes经常是首选平台。它提供了一个功能强大的容器编排平台,为应用程序的发展提供了足够的增长空间。

当然,由于Kubernetes所带来的强大功能和惊人新功能,对于没有经验的用户(有时甚至是有经验的用户)来说,通常很难上手。大多数人都赞同,管理、部署和调试Kubernetes中运行的应用程序有一条学习曲线。本文将介绍一些技巧,以提高Kubernetes的易用性和可理解性。

一、使用Helm管理打包

Helm不仅为流程增加价值,而且为你的客户如何使用你的软件增加价值。通过使用Helm图表打包Kubernetes应用程序,你的客户可以快速轻松地使用这些应用程序或服务,而无需深入了解这些服务的内部工作原理。只需从CLI执行几个命令,应用程序就可以启动并运行了。

当面向客户的团队与客户一起部署软件时,这也是非常宝贵的。安装过程漫长而繁重的应用程序会给客户和负责部署它们的内部团队增加额外的负担。随着时间的推移,管理这些应用程序的长期维护成本可能会成为技术债务,从而降低开发和工程的速度。Helm不是解决所有这些问题的灵丹妙药,但它确实有助于降低复杂性,并提高Kubernetes中应用程序部署过程的可理解性。

二、使用远程调试器进行调试

应用程序调试很困难,它不会增加Kubernetes作为运行时环境的复杂性。当你在生产环境或预生产环境中发现一个bug时,有时你只想直接跳入并在代码运行的地方开始调试代码。连接调试器并不总是一项简单的任务,有时由于安全性和合规性的原因,甚至完全不可能。在这些情况下,回到典型的方法,即添加日志代码并运行构建、部署和发布过程,直到找到有助于确定问题的数据。

远程调试器是一个完美的解决方案,能够更好地理解代码的运行位置,而无需添加日志记录或创建缺陷再现环境的所有开销。远程调试器通常作为代理或SDK与你的应用程序一起运行,让你拥有传统的“本地调试器”体验。这些可以成为现代开发工作流程中非常宝贵的一部分,并显著缩短解决问题的时间。

三、使用命名空间管理Kubernetes资源

使用Kubernetes命名空间可以帮助在逻辑上划分部署的服务,这样你的集群就可以更容易地被多个团队或用户理解和使用。默认情况下,Kubernetes在配置集群时实例化一个默认命名空间,由管理员创建其他命名名称空间。这些命名空间提供了一种很好的方法,可以将多个授权策略附加到集群的这些逻辑分区。这意味着多个服务、团队或项目可以将同一个集群用于不同的目的或具有不同的安全级别,而无需为每个用例创建单独的集群。团队甚至可以利用一个集群来模拟多个部署环境,如dev、staging或UAT。这种对环境的分区可以确保在每个环境中都可以维护已部署组件的命名约定,而不会发生冲突。

四、尝试基于终端或浏览器的UI

在与许多率先在Kubernetes上涉足微服务开发的客户合作时,笔者看到许多客户采用交互式终端或图形用户界面工具来管理和与集群交互。这可以使集群组件(pod、服务、部署)的上手速度更快,甚至可以缩短学习曲线。它们通常很容易安装,可以提高日常工作流程的效率。

有很多不同的选择。K9s是一个免费且易于使用的工具,它直接在命令行终端中提供了一个简单而高效的集群查看器。不必严重依赖kubectl命令,你只需使用简单的键盘快捷键导航集群。为了更好地理解集群,另一个开源选项(但是基于浏览器的)是Octant,它允许你直接从浏览器导航集群并与集群交互。无论你是使用上述功能之一,还是直接在云提供商中使用集群管理功能,使用带有快捷方式的可视化工具都有助于加快工作流程并降低复杂性。

五、考虑服务网格

服务网格是一种工具,用于管理和简化Kubernetes集群中运行的微服务之间的高容量通信。它们试图抽象并简化无论构建何种类型的应用程序都需要的任务,例如微服务间通信、发现、安全性、跟踪和监控。通过使用服务网格,你可以将网络、安全性和可观察性逻辑与特定于应用程序的业务逻辑分开,从而有效地消除了为这些特定功能维护代码的需要。

这个领域的一些主要选择是Istio、Linkerd和Consul。这些解决方案通常运行在现有基础设施之上,作为pod的sidecar。当涉及到应用程序的可理解性和可维护性时,可以从开发团队中卸载的核心应用程序运行时功能越多,效果越好。

结论

一头扎进Kubernetes是一项艰巨的任务,但是有一些技术可以让你更轻松。无论你是刚刚开始采用Kubernetes,还是正在努力,考虑采用能够提高Kubernetes环境可理解性的新技术或流程都不会有什么坏处。

原文链接:

https://thenewstack.io/5-tips-to-improve-kubernetes-understandability/

0 人点赞