企业级容器云平台的落地与实施

随着IT行业的发展和变迁,IT应用的底层支持也从大型机、小型机、PC服务器、虚拟化技术,到如今的容器化 。基于敏捷开发的持续迭代,持续部署,以及多样化的技术栈,传统的底层架构变得越来越冗杂,运维管理越来越力不从心,运维人员也逐步陷落在无尽的“救火”运维模式 。
容器技术的出现,从根本上改变了这一切 。而容器高效的编排与管理,才是让其风光无限的前提条件 。Kubernetes经过多年的发展,已经成为行业的事实标准 。而如何利用好Kubernetes,为企业的发展助力,成为很多企业,尤其是初创企业无法忽略的一道难题 。
? 本文将介绍利用Amazon EKS打造企业级容器云平台,通过一系列的实践操作,让大家直观地了解AWS是如何帮助企业高效地部署、管理容器化应用 。
1. 传统应用架构的容器化之路
? 说到“传统”二字,大家第一反应,就是“落后”,“守旧”,然而现实情况却是----绝大部分传统应用,依然在良好地运行在这些传统架构中 。这些被服务的对象不会因为某些因素对整个系统资源的需求发生很大变化,也不会有频繁的系统功能的迭代开发需求 。
? 但是随着互联网、大数据、AI等技术的发展,各行各业都在努力地从信息化向智能化转型 。而转型的过程中,越来越多的应用场景,和频繁地迭代开发,也让“传统”架构越来越庞大 。随之而来的是运维人员疲于奔命的“救火”,系统服务越来越不稳定,以及系统成本的失控飞涨 。
? 如何才能从根本上一劳永逸地解决这些问题? 容器化/微服务化是很多企业寄予厚望的方向 。
容器化真的那么有效吗?? 我们以下图为例 。这是一个很通用的架构,在多台服务器上分别部署Tomcat,使用反向代理软件(Nginx)把请求均匀分发到每个Tomcat中 。假定由于11.11促销,我们需要将现有的3台Tomcat扩充到10台,运维人员需要完成哪些工作?(假设服务器硬件已经准备好)
传统系统的扩容步骤:1. 安装OS,设置安全和权限相关
2. 分配IP,联网
3. 部署Tomcat
4. 以上动作做7遍
? 仅仅一个扩容,就需要一个资深的运维人员花费几个小时才能完成 。如果要扩充到100个节点呢,工作量成倍增加 。
容器化系统扩容步骤:? 如果我们使用容器化技术来完成刚刚这件事,就会节省很多人力 。
1. 安装OS,并由Kubernetes统一管理
2. 一条命令足以,并且在秒级完成扩展
kubectl scale rc tomcat --replicas=103. 完成
? 简单的一个对比,即可发现,在资源分配,系统稳定(自愈),运维管理等多个方面,容器化技术都可有效地降低企业的成本和运维压力,并且让企业保持技术的敏捷性和先进性 。

企业级容器云平台的落地与实施

文章插图
 
2. 容器化应用场景
? 刚刚讨论过容器化对于企业的价值,接下来要继续分析哪些场景适合容器化 。
? 容器化很重要的特点,就是轻量化和无状态 。而像传统的企业应用软件,承载业务模块众多,功能流程繁琐,因此并不适合容器化改造 。具体哪些应用场景比较适合呢?主要包含以下几种场景(当然,这只是几种常见情况,业务场景满足轻量化、无状态的特点都是可以尝试容器化技术)
2.1. 应用打包
2.2. 多版本混合部署
2.3. 升级回滚
2.4. 多租户资源隔离
2.5. 内部开发环境
? 我们一直在说容器化(Docker为代表)的各种优势,但是企业在真正的生产环境中,如果只是通过Docker来实现容器化,是无法满足高可用、弹性扩展和高并发等场景需求 。而Kubernetes的出现,才让Docker真正在生产环境中被大规模使用起来 。Kubernetes提供了应用部署、规划、更新、维护的一种机制,让容器化应用的部署和管理更简单、更高效,。
Kubernetes的特点:
· 可移植: 支持公有云,私有云,混合云,多云(multi-cloud)
· 可扩展: 模块化,插件化,可挂载,可组合
· 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
? Kubernetes结合Docker,让企业容器化之路变得更加容易,从而更快地满足业务需求 。但是,事物都是有两面性,并不是所有项目都适合容器化改造,而且任何的改动都有可能产生未知的影响,要对技术保持敬畏,对生产保持敬畏,才能在容器化的道路上走的更稳 。
? Kubernetes虽好,但是对于很多初创企业,和没有太多相关技术积累的传统企业,Kubernetes的学习成本过高,企业会在底层架构的高可用性、网络、机房等方面遇到一系列问题,从而让容器化之路满是荆棘 。


推荐阅读