容器技术只是刚刚起步

自 Docker,Kubernetes 这些容器技术出现以来,已经有四个年头了。现在,有些人认为这些技术已经开始成熟。但我强烈反对这种说法,我认为容器基础设施的实现还有很长的路要走。

这篇博文将聚焦于容器基础设施的其它部分,也就是除了容器之外的所有东西。这些东西才刚起步,远未达到成熟的程度。

回顾容器技术

Docker 是什么?

2013 年,借助于简化微服务的理念,Docker 为软件行业带来了一次全新的革命。Docker 是一个可以将任何应用程序和它的依赖打包在一个虚拟容器中的工具。

如果想对容器的实现有更多理解,可以看看这一篇 Web 开发者和容器咨询师的之间的对话

Kubernetes 是什么?

Kubernetes 是由 Google 开发的一款在集群环境中管理容器应用的开源工具。实际上,它就是用来管理Docker 的,通过现代、集群化的基础设施对容器进行解耦。

所以你在头疼,应该使用哪一款容器技术?

在我看来,你应该在你的生产环境里面都使用这两种容器技术。Kubernetes 兼容 Docker,它们可以很好地协同工作。

在容器市场里面,Kubernetes 占据了主要的市场份额,并且拥有良好的社区支持。作为一个自主研发的工具,它的好处在于,开发者和使用者都是“开发者”,遵守一样的守则,但是却缺少灵活性。但 Kubernetes 成为容器行业内的标准可谓是指日可待。

另一方面,Docker Swarm (又名 Docker Compose++) 是真正地为开发而生,因此它可以在开发环境下更轻松地调试。但在生产环境中就没有这么好了。

值得注意的是,上面提到的技术都是开源的。理解开源的真正含义是非常重要的。如果你有兴趣,可以看看开源容器之谜

容器之下的基础设施

从你的容器托管应用显示的一句“Hello world”开始,你将会走过一个陡峭的学习曲线。只有你掌握了容器技术的方方面面,你才脱离新手状态,拥有部署、维护生产环境应用的能力。

所以,开发者在运行容器的基础设施之前,必须要考虑什么呢?别忘了,对于容器策略的选择,会对你的顾客造成正面或负面的影响。

数据库

在开发环境下,你可以将你的数据库托管于容器之中,而不需要担心 I/O 性能。但是在生产环境里面,你要考虑的远不止那么少。

你需要考虑数据库存储的组件、备份及复制策略。要达到可以运行现代 Web 应用或为移动设备打造的 API 的量级,你需要一个具有高可用性以及具有可靠的备份/还原策略的数据库,可以应对随服务量上升所带来的 I/O 请求。

云服务提供商

选择一个合适的云服务提供商,不管是直接托管在服务器,又或是公有云或混合云。在选择之前,调查一下这个提供商是否能在某个地区提供高可用的服务。

之后,因为云服务提供商的容器部署流程各不相同,应该寻找灵活的解决方案。不要只锁定一家提供商——你不会想要在一棵树上吊死。

部署工作流管理

部署工作流管理的目标是在不停机的前提下进行部署(即,蓝绿部署)。这可以通过创建一些运行新版本的实例,与此同时,老版本的实例仍然处理全部请求,然后逐渐将请求分配给新版本的实例处理来实现。

选择合适工具是非常重要的,因为部署管理工具从开发环境到生产环境都有不少可供考虑的选项(如 Docker Compose)。迁移到集群环境将会提高复杂度,因此要确保你已经考虑好了从单个容器应用迁移到多个复杂容器镜像集的方方面面,在后者中,每个镜像的多个实例将会由连接到分配请求负载的负载均衡服务器分配请求。

负载均衡及服务发现

从单容器服务迁移到在一个或多台宿主机上的多个容器需要一个负载均衡器来分配请求。

为了给用户提供无缝的用户体验,一个容器应用应该与其它应用相互通信,并且能够被部署到任何一台服务器或容器集群。

对于微服务的负载均衡来说,一些如 Nginx 或 HAProxy 的工具是非常热门的选择。务必要保证负载均衡工具的配置是最新的,并且提醒自己:不同版本的实例会在同一时间运行。开发者也要面对服务发现带来的网络问题——它会拖慢容器技术应用的进程。

安全

容器其实只是”一段能够实现在共享内核中互相独立运行的代码“而已,因此不能用小型虚拟机的看法来对待,尤其是安全方面。为了支持容器资源的快速扩容,新的安全策略也是必要的。在生产环境中,所有容器的进程会运行在单一的宿主机上,以便降低网络被入侵和遭受多种攻击的风险。

面对容器可能遭受的攻击,首先要确保你配置了合适的防火墙规则,以抵挡拒绝服务或暴力攻击。另外,诸如 Habitus.io 等为 Docker 而生的构建流工具可以帮助你在构建过程中移除和管理对安全较为敏感的层级。

监控及日志

为了确保用户可以在应用上使用必需的功能,应该调查一下市面上的各个全面的容器监控策略,确保容器良好运行。另外,确认当前以及未来的负荷量不会拖慢容器的性能甚至崩溃。最后,务必将故障排除和错误处理方法准备妥当。

还需要对日志管理进行设置,以便将日志收集到一台或多台日志服务器上。别忘了你还要准备查看和搜索日志的方法,以便进行故障排除工作。

本文的版权归 CodeingBoy 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯大数据的专栏

“超级计算机”再现-Gaia集群操作系统为业务插上云的翅膀

1. 引言 在互联网用户和应用爆炸的今天,我们承载的服务和运算,无论在规模还是性能上都提出了前所未有的要求,开发人员常常偷偷在想,能不能给我一个超级计算机,很多...

3935
来自专栏云计算D1net

Docker为何未在生产环境中取得广泛成功?

Docker的发展势头一天比一天强劲,它显然在试图解决实际的问题。然而,对如今许多的生产环境用户来说,没有出现优点压倒缺点的局面。在开发、测试和持续性集成等环境...

35710
来自专栏企鹅号快讯

Kubernetes的前世今生和未来

有人认为自动化,云计算和人工智能是第四次工业革命。如果你开始感受到IT领域自动化率的飙升,特别是在应用程序部署和管理领域(我觉得还不是无缝的自插拔式),那么不用...

2306
来自专栏程序猿DD

Netflix 的上线工具 Spinnaker

Spinnaker 的介绍 ? Spinnaker 是 Netflix 开源出来的持续交付工具,目的是为研发团队提供灵活的持续交付流水线,并且支持部署到测试/生...

55913
来自专栏腾讯大数据的专栏

Docker On Gaia——腾讯Docker管理解决方案

要问2015年什么最火,耐人寻味的股票走势?黄晓明baby领证?Apple Watch 销量会有多好?我无法准确回答你,每个人心中都有自己的答案。不过要问技术领...

2369
来自专栏Zchannel

#Linux建站入门第二期#为建站挑选合适的VPS/独立服务器

上一期我们讲到,无法远程管理中国家宽环境下的linux系统(因为端口封锁的缘故),所以建站需要购买VPS,这里说的VPS是什么呢,我们来看看维基百科的解释

1602
来自专栏EAWorld

容器镜像仓库之选:企业级容器registry Harbor实践(上)

目录: 1.背景 2.开源Docker Registry的不足 3.新的选择--Harbor 4.Harbor的使用 背景 公司于去年启动了新一代数字化企业云平...

4176
来自专栏陈云的专栏

Docker 学习笔记 ( 一 ) 简介以及构架剖析

之前一直忙于项目工作,一直没有好好去系统学习,完善自己的知识体系,以致于在腾讯两年知识体系都没有深度发展,还是停留在原来的领域,所以从 8 月份开始学习 doc...

1.1K2
来自专栏社区的朋友们

开源助力腾讯云容器服务

腾讯很多业务早已经跑在容器平台上,所以说腾讯内部对容器这块也积累了很多经验和教训,这次分享的主题,就是当我们把容器服务放在云上的时候,我们碰到的一些问题,以及我...

3010
来自专栏CodeSheep的技术分享

利用K8S技术栈打造个人私有云(连载之:初章)

最近在学习Docker技术,相信Docker技术大家都有所了解,Docker类似于虚拟机(但与虚拟机又有本质不同),提供进程级别的隔离。我们可以利用Docker...

38215

扫码关注云+社区