e-works数字化企业网  »  文章频道  »  基础信息化  »  工业互联网

容器技术在企业落地的9个关键问题

2017/12/26    来源:51CTO技术栈    作者:孙杰      
关键字:容器技术  Docker  
基于Docker的容器,是一种更轻量级的虚拟化,我们称之为 CaaS,就是容器级服务。它涵盖了 IaaS 跟 PaaS 两者的优势,可以解决应用的部署、开发运维、微服务这些问题,而且能够更快的加速业务的交付。

    不可忽视日志标准化
 
    除了日志的集中收集,在应用改造上我们还应该重视容器应用的日志标准化问题。
 
    当我们采用容器来运行微服务架构应用,一个业务调用往往需要经过多个微服务的调用链,整个业务处理过程的日志记录分散在不同的微服务日志中,这对通过日志进行问题诊断带来了很大的不便。
 
    通过标准化日志,例如带上唯一的 ID 信息等,可以实现把同一个业务在不同微服务中的处理过程给关联起来。
 
    通过标准化的应用日志,我们可以对交易率、成功率、响应时间等关键业务指标进行统一关联分析,作为问题预警、诊断分析、容量扩缩的科学依据。
 
    容器应用的监控方案如何设计?
 
    在虚拟机运维的时代,Nagios 和 Zabbix 等都是十分经典的性能监控软件。但在容器时代,这些曾经耳熟能详的软件,大多不能提供方便的容器化服务的监控体验,社区对开发这类插件和数据收集客户端也并不积极。
 
    相反的是许多新生的开源监控项目将对容器的支持放到了关键特性的位置,一代新人换旧人,可以说容器的应用界定了一个全新的监控软件时代。
 
    在这些新生的监控工具中,有三种比较流行且成熟的具体方案,分别是 cAdvisor、cAdvisor + InfluxDB + Grafana 和 Prometheus。
 
    其中基于 InfluxDB 的方案是一个多种开源组件的组合方案,而基于 Prometheus 的方案是作为一种整体解决方案。
 
    它本身对容器信息的收集能力以及图表展示能力相比其他专用开源组件较弱,通常在实际实施的时候依然会将它组合为 cAdvisor + Prometheus 或 cAdvisor + Prometheus+ Grafana 的方式来使用,但它多维度的数据模型,可方便的进行数据过滤和聚合。
 
    说到容器应用的监控设计,在这里要注意监控是分层的,具体可以分为系统层面、应用层面和服务层面,每个层面都有自己的监控重点。
 
    系统层面
 
    主要是针对资源使用情况、网络连通性、节点健康情况的监控。传统的监控系统在这方面已经非常完备,我们直接可以利用传统的监控系统对容器平台的宿主机进行系统层面的监控,对接监控大屏幕等。
 
    宿主机上单个容器本身的性能和资源使用情况,对于外部资源监控意义不大,也没有多大必要传送到外部的传统监控。
 
    应用层面
 
    容器平台本身通常都带有类似 K8S 的 replication control 这样的机制保持某个服务运行实例数量的能力,所以通常情况下容器平台都能保证应用和应用下每个微服务的运行正常。
 
    关于应用层面的健康监控,还是需要来对接传统的监控系统,进行适当的告警输出,比如当遇到应用逻辑错误而导致启动反复失败或资源不足,导致启动总是不成功等问题时,容器平台本身的 replication control 机制就不能解决问题了。
 
    这种情况就需要我们把应用的故障信息传递到外部监控,并根据问题的严重情况进行不同等级的告警通知等,由相关的应用人员介入来解决问题,比如升级补丁或回退等。
 
    服务层面
 
    服务层面则是监控应用提供的服务是否运行正常。例如某个提供 Web 服务的应用,在一些时候虽然应用和应用中微服务的运行实例数量正常,但它的 Web 服务已经失去响应,或者返回的是错误的状态,这种情况在多数容器平台中是无法监测到的。
 
    传统的方式是通过打探针 Agent 方式,但在容器环境下,这种方式不一定可行,这就需要我们丰富容器故障的监测手段或者自己编写服务访问+检测逻辑来判断,并把检测出现的问题上报到外部监控,在监控中设立相应的告警策略和告警等级。
 
    容器云的多租户和权限如何设计?
 
    多租户,顾名思义,就是很多人来租用容器云平台的资源来实现自己的应用托管运维需求。这里面主要涉及多租户、资源管理与分配、安全权限管理这三个问题。
 
    多租户的问题
 
    从多租户的角度考虑,租户租用容器云平台的资源来托管、开发、部署运维自己的应用、服务。
 
    容器云平台需要提供、维护保障租户能正常使用这些资源,同时给租户托管的应用提供服务注册、服务发现、服务配置、日志、监控、预警告警、弹性伸缩、负载均衡、安全等能力。
 
    我们要明白的是租户只是租用这些能力,它并不运维这些能力。租户关注的是托管的应用和服务,它需要做的是利用平台提供的这些能力来无缝的运维他们的应用和服务。
 
    一句话来总结:租户只是使用/租用资源,容器云平台管理运维这些资源。租户侧重于对自己的应用或服务进行运维。资源由租户申请,容器云平台来分配管理资源。
 
    资源管理与分配
 
    这部分功能建议统一由运维团队或者系统团队负责,应用系统上云前一般会进行压测,有个容量估算的过程。
 
    通过容量估算和趋势分析,系统人员可以规划大致的资源池给相关应用,一般可以通过划分底层资源池实现。
 
    如果用 K8S,可以在计算节点上通过 lables 进行规划,另外还需要在编排文件上设置好最小资源和最大资源,让应用可以弹性扩容。
 
    安全权限管理
 
    多租户的安全权限设计涉及到容器云平台整体的权限控制架构,最好是实现一个权限中心,由权限中心来实现对容器云各组件及各功能的动态控制,以适应灵活的不同的场景需求。
 
    具体来说就是:
 
  • 组织结构的实现可采用层次结构,无论多少层多少级,只标注其父结点 ID,树型结构遍历可以获得所有的结点,这也是我们下面权限访问控制实现的基础。
 
  • 角色定义,需要基于用户及用户组织结构,权限和容器云提供给租户的功能列表来实现,可以采用 Oracle 数据库的用户角色权限定义方式来定义。
 
    比如容器云平台初始化时可以预定义角色,比如租户管理员角色、应用管理员角色等,根据定义的角色权限展示不同用户视图。
 
    把权限访问控制提取出来实现一个统一的权限中心组件,是因为整个容器云平台、各个组件都面临着权限访问控制需求。
 
    从云计算的理念来说,松耦合、插件式的组件或模块设计更灵活和适用快速变化的需求。
 
    对一个客户来说,一个组件可能需要也可能不需要,每个组件都可以以插拔的方式来控制,根据客户需求来部署相应的组件,实现相应的权限访问控制,将会更灵活和便利。
 
    容器与 OpenStack 和 Kubernetes 集成的能力?
 
    在开源云计算技术蓬勃发展的这几年中,OpenStack、Kubernetes、Container 无疑成为了改变云计算格局的三项关键技术。
 
    但是这三者之间在技术上仍然存在一个空白:容器运行时强安全隔离的同时保持精简尺寸以及轻量级,以及如何能够很容易与 OpenStack 和 Kubernetes 两大平台集成从而获取多租户以及统一网络和统一存储等诸多好处,这个空白阻碍了用户从中获取更大价值。
 
    为了解决这一问题,OpenStack 基金会在今年 12 月 5 日的 KubeCon 峰会上发布了一项新的开源项目,Kata Containers。
 
    Kata 可以使用户同时拥有虚拟机的安全和容器技术的迅速和易管理性。项目可以屏蔽硬件差异并且和 OCIspeciaification、Kubernetes 容器运行时标准兼容,在支持标准镜像格式的同时具有强隔离、轻量级以及快速启动能力。
 
    更重要的是 Kata 项目的设计初衷强调了能够无缝、便捷的与 OpenStack 和 Kubernetes 集成的能力。
 
    无疑 Kata 项目的发起为 OpenStack、Kubernetes 和 Container 更好的融合提供了有力的支撑,并为用户从中收益铺平了道路。
 
    期待容器真正辉煌时代的降临,但未来的道路,依然任重道远!
 
    容器云如何实现高可用和跨区部署?
 
    容器云需要考虑平台自身的高可用,实现多可用区多数据中心部署。
 
    容器上的应用高可用需要结合应用架构来实现。目前微服务架构是最适合云基础设施的应用架构之一。
 
    微服务应用通过服务注册发现、全局配置管理、熔断、服务追踪等容错设计,保证应用的高可用。
 
    弹性扩容,增加微服务运行的实例数量,配合负载均衡策略的使用,减少因压力过大而导致运行实例宕机的情况。
 
    总结
 
    容器技术在企业的落地,不是一蹴而就的,是一个渐进和价值普及的过程。技术的更迭方式可以是潜移默化的和平演变,亦或是轰轰烈烈的武装革命,容器技术应该归属于前者。
 
    我们可以看到,容器化技术已经成为计算模型演化的一个开端,可以预见在更高效和轻量化的平台实践之后,容器技术还将为整个 IT 领域注入更多新鲜和活力,在未来生存和壮大下去,成为引领潮流的决定性力量!
 
责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
兴趣阅读
相关资料
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐