内容简介:每天有数以百万计的Docker容器被启动起来以使用它们的资源,然后在结束任务后,没有用时就被杀掉。这是一个残酷的现实,但对于作为开发者的你我来说非常有益。你可以看到在过去几年中,容器技术已经大大改变了软件公司构建,发布和维护其应用程序的方式。
每天有数以百万计的 Docker 容器被启动起来以使用它们的资源,然后在结束任务后,没有用时就被杀掉。
这是一个残酷的现实,但对于作为开发者的你我来说非常有益。
你可以看到在过去几年中,容器技术已经大大改变了软件公司构建,发布和维护其应用程序的方式。
这是因为容器允许我们打包应用程序代码及其所有依赖项,因此无论计算运行环境如何,它都可以平稳快速地运行。
不仅如此,容器还可以很好地用于持续集成/持续部署(CI/CD)方法,允许你尽快向客户提供新功能,增强功能或错误修复,从而推动客户增长以及改进你提供的软件。
这些只是工作流带来的红利。
还记得之前告诉过你关于容器的“出生与死亡”吗?这个循环称之为 horizontal scaling-水平扩展 ,当应用程序面临的流量超过当前资源可以处理的流量时,这些额外的容器就会被启动起来,然后在流量消失后这些容器也会被终止。
当你在大规模运营时,整个部署自动化过程变得至关重要。
现在你可能在想,“哇!这听起来超大工作量!”
你猜对了,但有个好消息,容器编排系统能为你完成所有这些繁重的工作。
虽然你有一些容器编排系统的选择,例如Docker Swarm,Apache Mesos,但是市面上没有任何一款能有Kubernetes这么流行,究其原因有以下。
Kubernetes是一个开源工具,允许我们利用内部部署,混合或公共云基础架构,使得可以随心所欲地移动工作负载。它提供安全性,网络和存储服务,并且可以一次管理多个集群。
此外,它还可以自动执行许多在过去你必须手动执行的过程。例如:
- 控制容器运行在哪个服务器上
- 轻松快速地扩展资源
- 当应用程序出现问题能自动进行回滚
- 计算容器的“最佳位置”以实时优化容器均衡扩展资源和应用程序
听起来很酷对吧?
最终,Kubernetes可以更有效地使用硬件,最大限度地利用资源并节省资金。
但这就是事情变得棘手的地方。
你清楚当你使用类似Kubernetes这样的容器编排 工具 时,你可以在YAML文件中描述应用程序的配置。
在这个配置文件中,你可以告诉Kubernetes如何工作,例如收集容器镜像,如何在容器之间建立网络,如何挂载存储卷以及将容器日志安放在何处。
容器被部署到主机上,通常以复制组的形式存在。当需要将新容器部署到集群中时,Kubernetes会调度部署并根据选择的预定义约束(如CPU或内存可用性)查找最合适的主机来调度容器。
基本上,一旦容器在主机上运行,Kubernetes将根据你在容器的Dockerfile中书写的定义规范来管理其生命周期。
这意味着Kubernetes会为你自动执行所有这些任务,但它怎么做完全是基于 你 做为开发人员所设置的配置。
虽然你可能是一名神枪手(工程师),但你可能无法确切知道在部署的第一个月内将会有多少流量,或者是应用程序表现如何。
这就是为什么,特别是对于前几个月,监控Kubernetes集群非常重要。
现在为桌面准备的有一些非常好的开源监控工具。
例如,Prometheus包含一个功能强大且灵活的查询语言-PromQL,它允许你收集Kubernetes集群并在时间序列数据库中记录这些富含洞察力的实时指标。
当你将Prometheus与Grafana(一种数据可视化工具)配合使用,它会将指标精美地展示在容易看懂的图表中。
Prometheus和Grafana一起为你的Kubernetes集群提供强大的数据可视化和监控功能。
但这些工具仅适用于桌面。
这意味着在第一个月左右,当你还在微调并了解集群的行为表现或应用程序面临多少流量时,你就被拴在办公桌上了。
事实上,直到最近,当你在旅途中时,还没有什么出色的移动解决方案可以用于管理集群的指标。
幸运的是,如果你在Kubernetes集群上运行Prometheus/Grafana监控栈,现在有一个名为 Aetos 的移动应用程序,可直接通过手机监控Kubernetes集群的运行状况和性能。
而且这个应用非常容易使用,只需将你的Grafana URL以及API密钥配置到应用程序中,Aetos就会给你容易读懂的图表让你实时查看数据。
当前该应用程序使用一体化可滚动视图,提供了CPU使用率,内存使用率,网络饱和度和系统饱和度的指标。
这些结果显示在几个不同的图表上,让你可以即时了解性能,如需迁移也仅需手指滑动即可。
此外,它是使用开源技术栈打造的,因此无需担心售价问题。
不必说,它有它的好处。
但无论你如何监控你的集群,如果你有一个尚未容器化的遗留代码库,你可能需要开始思考如何实现它。毕竟,容器化才是未来的发展方向。
此外,涉及到杀死那些已到达其生命周期末期的容器,你会发现,让Kubernetes为你做这些肮脏的工作会更容易。除非……你本身就是心狠手辣无情的怪物 :-D
特约作者:
Robert McHalffey | Jay Cogen | Tristan Schoenfeld | Ken Brisco
【原文链接】 Murder On The Kubernetes Express: The Life And Death Of A Docker Container 翻译:冯旭松
以上所述就是小编给大家介绍的《Kubernetes快车上的谋杀案:Docker容器的生与死》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。