生产环境部署容器的五大挑战及应对之策

Docker容器使应用程序开发变得更容易,但在生产中部署容器可能会很难。
环境复杂性、生态系统易变性、跨不一样分布式基础架构的部署......
本文将为你解析生产环境部署容器的五大挑战及应对之策。前端

软件开发人员一般只关注在特定基础架构上运行的单个应用程序、应用程序堆栈或工做负载。然而,在生产环境中,一组不一样的应用程序常需在各类技术(例如Java,LAMP等)上运行,而这些技术又需在本地、云上或两者结合的异构基础设施上部署。这给生产环境中容器化应用程序的运行带来了一些挑战:docker

  • 控制高度密集、快速变化的环境的复杂性后端

  • 充分利用极为易变的技术生态系统安全

  • 确保开发人员自由创新服务器

  • 跨不一样的分布式基础架构部署容器网络

  • 执行组织战略管理架构

控制高度密集、快速变化的环境的复杂性

2016年6月Cloud Foundry公司发布的《但愿与现实:容器,2016》报告显示,45%的受访者表示,他们最担忧的是Docker部署太复杂,没法融入到他们的环境中。[1]其中很大的缘由是容器化环境的密度和波动性。因为不须要为每一个容器加载操做系统和内核,所以与传统的虚拟化环境相比,容器化环境可以在给定数量的基础架构内实现更高的工做负载密度。所以,在整个生产环境中建立、监视和销毁的组件需求总量呈指数级增加,从而显著增长了基于容器的管理环境的复杂性。负载均衡

容器时代,不只有更多的东西须要管理,并且它们相比以往任什么时候候都要变化更快。Datadog调查显示,传统的和基于云的虚拟机的平均寿命大约只有短短15天,Docker容器的平均寿命更短,仅为2.5天。[2]这就致使了须要单独管理和监控的事物数量呈数量级增加。框架

因为架构的复杂性,这些高密集、快变化的环境就更进一步复杂化了。容器一般部署在高度分布式的单个集群或多集群环境中。这些群集的组成是高度分散的,它们能够在本地、云中部署或二者并举。虽然60%的容器在亚马逊网络服务(AWS)上运行,但仍有40%在本地运行。[3]分布式

所以,组织须要一种更便捷的方法来编排容器,以及管理多容器、多主机应用程序的底层基础架构服务。这对于具备微服务体系结构的应用程序尤其重要,例如,一个Web应用程序,包括一个容器集群运行Web服务器前端的多个实例的主机(故障转移和负载均衡)以及多个后端服务,是各自运行在不一样的容器中的。

利用高度波动的技术生态系统

Docker的生态系统复杂多变。在过去几年中,第三方工具和服务大量出现,帮助开发人员在开发过程当中部署、配置和管理他们的容器化工做流程。基于开源技术,这些工具和服务的变化之快以及新文档的数量之多,使构建稳定的技术栈以实如今生产中运行容器变得充满挑战。这也使得公司难以创建和维护利用丰富的生态系统所需的工程技能。根据RightScale公司第五个年度“云调查情况”显示,对于目前还未使用容器的公司而言,迄今为止,缺少经验是采用容器面临的最大挑战(39%)。[4]

确保开发人员自由创新

在简化容器管理中,开发人员可以不失灵活创新、不断探索新技术的重要性愈加凸显。他们须要有足够的自由来挑选他们须要的工具和框架。RedMonk分析公司将这称为“无限发展时代”。[5]当开发人员须要解决什么问题时,他们再也不询问他们“能够”使用什么工具,而是会直接寻找最佳工具。 他们还喜欢选择最新版本,虽然新版本不必定是最稳定的,可是他们能够快速利用其新功能。与此同时,他们也愈来愈须要承担责任,确保他们建立的任意应用程序逻辑在生产中可以正常运行,若是出现问题,也能快速修复它。这表示若是部署遇到问题,就须要他们可以回滚部署。

开发人员须要root访问的自由,他们但愿可以安装任何他们喜欢的开源软件。所以他们一般会避免传统的平台即服务(PaaS)解决方案。把PaaS从容器中抽取出来,这样开发人员就能够不用管理容器而是专一于编码。然而,一家供应商或基础设施提供商提供的可能是专用服务,不像本地开源堆栈那样通用。开发人员的创造力很大程度上也受限于此。

跨不一样的分布式基础架构部署容器

容器的主要优势之一就在于它们是可移植的——一个应用程序,其全部的依赖关系能够捆绑到一个独立于Linux内核、平台分布或部署模型的主机版本的单个容器中。此容器能够传输到另外一台运行Docker的主机上,而且在没有兼容性问题的状况下执行。云和数据中心之间的基础设施服务差别巨大,这致使应用程序几乎不可能实现真正的可移植性。所以利用容器使应用程序跨不一样基础设施须要的不只仅是一个用于运输代码的标准化单元,它还须要基础设施服务,包括:

  • 运行Docker容器的主机(CPU、内存、存储和网络链接),包括在本地以及云上运行的虚拟机或物理机器;

  • 协调好端口映射或软件定义的网络,使不一样主机上的容器可以相互通讯;

  • 向Internet提供负载均衡器服务;

  • DNS,一般用于实现服务发现;

  • 集成的健康检查,确保应对请求的使用的都是健康的容器服务;

  • 某些事件触发执行操做时的应对措施,例如在主机发生故障后从新启动新容器,确保可用的正常容器始终维持一个固定的数量,或者建立新主机和容器以响应增长的负载;

  • 经过现有容器建立新容器来扩展服务;

  • 借助存储快照和备份功能以备份状态容器,从而进行灾难恢复;

部署好这些基础架构服务,组织面临的难题就变成了如何监控它们。DevOps团队须要迅速解决这些问题。所以,监控和记录基础架构性能,并在出现问题时提醒DevOps团队,这是任何一个容器管理所要具有的重要功能。

执行组织策略和管理

与部署容器相关的安全性和合规性问题是必须解决的,这是全部在生产中使用容器的大企业都必定会关注的问题,特别是那些受监管的行业,如金融和医疗保健。Docker等公司正在努力修复这些问题,并经过在工具链上建立新的软件和集成做为应对这个问题。

然而,在应用程序容器安全性和企业使用虚拟机之间仍缺少平衡。这包括实施组织策略,确保安全访问容器和集群管理,包括管理传输层安全(TLS)证书。经过基于角色的访问控制(RBAC),用户和用户组可以共享或拒绝访问资源和环境(例如开发或生产)。 用户身份验证须要与Active Directory、LDAP和/或GitHub等活动目录集成。

巧妙利用工具,应对五大挑战

容器使软件开发变得更容易,使您可以更快地编写代码并更好地运行它。 然而,在生产中运行容器可能会很困难。 有各类各样的技术须要集成和管理,而且新的工具层出不穷。 Rancher使您能够轻松管理运行容器的方方面面。那些集成复杂的开源技术必备的技术技能,你可能不再须要了。

想在生产环境中的任一基础设施上运行Docker,Rancher能够提供你须要的一切。Rancher让你能够轻松配置和集成可移植的基础设施服务层。Rancher提供了一个易于使用的用户界面,您能够利用其丰富的集合编排功能,随后经过单击来部署容器。Rancher强大的Catalog能够将配置文件打包为模板并在组织中共享。目前, Rancher已经拥有超过2000万次下载和并提供企业级支持,很快成为在生产环境中运行容器的首选开源平台。

Rancher使用起来很是简单

只需按照下列步骤操做:

  • 尝试一下:您能够先使用Rancher Sandbox。它是公开托管的,而且会自动更新。

  • 下载:您能够把Rancher部署为一个Docker容器,甚至还能够在您的集群或笔记本电脑上部署Rancher。

  • 开始:若是您按照快速入门指南中的步骤操做,部署Rancher只需不到5分钟。

  • 使用文档:Rancher使用起来很是简便。但Rancher的技术文档中仍有大量信息,以备用户不时之需。

  • 利用咱们的强大的用户社区:您能够登录咱们的论坛,这里是新产品发布、与同行以及和Rancher工程师交流互动的最佳场所。

资料来源:
[1] https://www.cloudfoundry.org/...
[2] https://www.datadoghq.com/doc...
[3] https://clusterhq.com/assets/...
[4] http://www.rightscale.com/blo...
[5] http://redmonk.com/fryan/2016...

相关文章
相关标签/搜索