社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Kubernetes快车上的谋杀案:Docker容器的生与死

Docker • 5 年前 • 374 次点击  

每天有数以百万计的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

原文链接:https://itnext.io/murder-on-the-kubernetes-express-the-life-and-death-of-a-docker-container-d7aec13f8188


Kubernetes入门与进阶实战培训


Kubernetes入门与进阶实战培训将于2019年4月19日在北京开课,3天时间带你系统学习Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker三驾马车、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等,点击下面图片查看具体详情。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29979
 
374 次点击