作者:Sean Porter
我们的行业长期以来一直依赖基于微服务的架构来更快、更安全地交付软件。微服务的出现和无处不在自然为容器技术铺平了道路,使我们能够重新思考如何构建和部署我们的应用程序。Docker在2013年加入战场,对于专注于基础架构和云迁移现代化的公司而言,像Docker这样的工具对于大规模快速发布应用程序至关重要。
但是,随着速度的提升带来了挑战,容器在编排方面引入了不小的复杂性。进入Kubernetes:一个开源容器编排系统,用于自动化容器化应用程序的部署、扩展和管理,Kubernetes控制平面命令和控制你的基础架构。Kubernetes最初由谷歌于2014年推出,现在由云原生计算基金会维护(顺便提一下,谷歌帮助组建了Kubernetes,以确保它保持自由免费和竞争力)。如果你使用Docker来容器化你的应用程序,那么你肯定会使用Kubernetes进行编排。(当然还有其他的编排器,比如Docker Swarm和Apache Mesos,但Kubernetes已成为容器编排领域的领导者。)
在本系列的第一部分中,我将介绍监控Kubernetes的挑战和主要数据来源。稍后,我将深入探讨Kubernetes和Docker部署,并使用下面列出的数据源的实际示例。
Kubernetes监控:挑战
Kubernetes使团队更容易管理容器,在自动维护所需状态的同时调度和配置容器。核心价值观是它作为一个通用平台,Kubernetes可以在任何地方部署你的应用程序,无论是AWS、GCP、Azure还是裸机。同样,所有这些功能和自动化都带来了挑战,特别是在关注性能方面。无论部署的规模如何,你仍需要知道该部署中有多少可用资源,以及了解已部署应用程序和容器的运行状况。正如微服务使我们重新思考如何构建应用程序一样,Kubernetes要求我们改变传统的监控方法,容器编排的动态特性需要采用动态的监控方法。
以下是我看到的挑战:
Kubernetes监控:数据来源
基本上,监控工具从四个来源收集Kubernetes数据:
接下来:容器状态和使用Prometheus收集数据
如果你有跟踪这话题,你可能会注意到你可以使用Prometheus监控所有这四个数据源。你可能还注意到我们只讨论监控Kubernetes而不是监控它上面运行的应用程序(并且,这可能与你听到的有关Kubernetes监控的所有内容一致)。在我的下一篇文章中,我将以Prometheus展示Kubernetes和Docker监控,讨论它为什么能够很好地适应Kubernetes生态系统,并识别差距。