写点什么

趋势科技基于 Docker 和 Kubernetes 的持续部署实践

2016 年 8 月 08 日

使用 Docker 可实现对环境和资源的隔离,但是与此同时也需要一套容器集群管理系统对分散的容器进行整体性的应用部署、维护和扩展等。Google 基于自身多年的大规模容器管理经验,推出开源的 Kubernetes 是目前流行的容器编排系统之一。此外,Docker 还改变了软件开发方式,成为了持续部署的一个重要选择

趋势科技采用的是Docker+Kubernetes+Jenkins 的技术方案实现CI/CD,团队的开发、测试和生产环境的部署工作都Docker 下进行。该方案实现PB 级数据处理,帮助了新业务的技术方案落地。InfoQ 对趋势科技的资深研发工程师孙青进行了相关的采访,另外,孙青将会在 CNUTCon 全球容器技术大会上分享题为《我在 Kubernetes 实践中踩过的坑》的演讲。

受访嘉宾

孙青,趋势科技中国研发中心资深工程师,6 年研发经验,致力于大型分布式系统的设计开发,目前专注于 Docker 和 Kubernetes 在持续集成以及持续部署中的最佳实践。

InfoQ: 能否介绍下趋势科技的业务和团队规模情况?与此对应,你们技术的需求是怎样的?

孙青:趋势科技业务范围涉及终端与移动安全、服务器安全、网络安全、虚拟化安全和云安全等。安全服务是由全球的 5 大研发中心共 1200 多名业界安全专家负责。我所在部门提供趋势全球移动安全响应和研究,主要负责各类移动平台相关的威胁分析、应急响应以及漏洞挖掘等业务工作和相应系统研发工作;目前团队有五十多人。

团队目前开发技术栈是:Python + MySQL + MongoDB + Redis + ELK + Hadoop。技术上需求主要有两个,海量数据的处理和新技术方案的快速落地。移动安全作为新兴的安全领域,近些年来得以快速崛起:要处理的样本信息迅速从 GB 级别激增至 PB 级。同时为适应各种业务,配套的新技术方案也源源不断从预演阶段快速迭代至生产环境。在满足业务增长需要的情况下,如何能合理有效的利用和管理资源是首要问题。具体来说,在资源共享和有效隔离的情况下,如何实现海量数据的分布式存储、索引以及快速分析查询。

InfoQ: 您说过公司因“业务特殊性”遇到了痛点,能否介绍一下?在解决痛点的过程中,技术方案的改进历程是怎样的?

孙青:因为处理样本的模块较多,出于系统机器资源考虑,不能为各个业务提供独立的环境;所以在部署上经常出现环境和资源冲突或资源浪费的问题。初期由于样本量小,分析模块都是单独部署,使用的是 SaltStack + supervisord 来管理。

随着存储量的激增,首先,机器数量越来越多;其次,分析模块也越来越多。由于各个模块对资源的需求都不一样,为了不浪费机器资源,我们开始混合部署。混合部署之后,又面临着资源冲突以及环境冲突的问题。公司运维花了大量时间去解决这些问题,这造成了很大的困扰。Docker 发布后,经过一段时间的调研,我们决定基于 Docker 开展部署,最终形成了现在的方案。

InfoQ:可否介绍下现在的持续集成和持续部署方案?

孙青:目前方案是 GitLab + Jenkins + Docker + Kubernetes。

方案的工作流程如下:首先,开发人员提交代码代码提交;随后,GitLab 会自动触发 Jenkins job,Jenkins job 会构建相应的镜像,放在一个 Kubernetes 的 Pod 里面;接下来,Kubernetes 的 Pod 会把模块需要的其他依赖都包含在其内部(比如 MySQL、Redis、MongoDB 等),运行 robot 测试用例,测试用例的结果最后会反馈到 Jenkins 中;所有测试通过之后,GitLab 把代码 Merge 到 Master 分支,然后触发部署,构建生产环境所需的 Docker 镜像并上传到镜像仓库。最后,生产环境的 Kubernetes 拉取最新的镜像做更新。

InfoQ:为什么选择 Docker 作为新的技术方案?又为什么选择 Kubernetes?

孙青:刚才提到过,选定 Docker 作为持续集成和持续部署方案是经过调研的结果。因为,发现 Docker 的理念正是我们所需要的,尤其是对环境、资源的隔离。从目前使用的效果来看,也确实达到了引入它的目的。

在决定要使用 Docker 之后,团队研究发现必须要同时使用一套容器集群管理系统。团队认为 Mesos 更适合作为 DCOS 的一部分,对于我们的业务有点“杀鸡用牛刀”的感觉。当时,Docker Compose 和 Swarm 刚刚发布,还不太成熟;Kubernetes 关注度很高、社区很活跃,而且 Kubernetes 里面的 Pod、RC、Service 的抽象很符合趋势科技的业务需求:所以最终选择了 Kubernetes。

InfoQ:在这个持续集成和持续部署方案之前,趋势科技是如何实现测试集成和部署环节呢?采用了这个方案之后,带来了哪些收益?

孙青:在使用 Docker 之前,准确地说,公司并没有持续集成和持续部署的方案,当时采用的只是比较传统的测试部署流程:开发人员完成开发并测试之后,首先提交代码到 SCM,然后出 build,build 好之后先在 staging 环境做集成测试,确定没有问题之后再部署到生产环境。

方案采用后,上线频率由原来的两周一次提高到一周两次。因为不再需要解决机器环境冲突的问题,所以该方案也同时大大降低了的运维成本。当然,新技术栈的引入会带来了额外的维护成本,不过这是无法避免的。

InfoQ: 对现阶段的 Kubernetes 使用满意吗?趋势科技对 Kubernetes 做了哪些改造?如何看待 Docker 前不久推出的内置编排工具?

孙青:目前对 Kubernetes 使用状况满意,它满足了公司的业务需求;团队正在将 Kubernetes 稳步落地,各项业务还在迁移的过程中。目前,还没有对 Kubernetes 进行改造;但是后续团队会着手改造工作,现在正在调研 Kubernetes 的 autoscaler。之所以这么做因为 Kubernetes 的开发计划里面,自定义的 autoscaler 目前进度还不明朗,团队会考虑自行研发一个基于 QPS 的 Autoscaler。

个人还没有深入研究 Docker 新推的该项功能。不过我个人认为 Docker 作为目前主流的容器工具,它内置的编排工具势必会非常有竞争力,后续会去研究一下 Docker 的内置编排工具。作为技术使用者,我们希望可以有更多的工具选择。如果业务上有需求,技术上我们也会考虑选用。

InfoQ:在采用 Kubernetes 技术过程中,可否简单讲讲你们遇到的最大的坑?有什么经验可以分享?

孙青:其实最大的问题主要还是网络,趋势科技的网络是基于 Flannel 做的。在使用后不久就遇到了 FLannel 出问题,导致 Node 之间的 Vxlan 不通。当时查这个问题查了很久,后面找到原因看到是因为 Flannel 在 bond 网络下的 OOM 导致的。好在 Flannel 修复的比较及时,并没有对我们的业务造成太大影响。但是 Flannel 的最新发布还是 15 年 11 月,所以猜测其开发进度没有预期的理想。因为我们对网络方面的要求并不高,所以到目前为止没有发现其他重大问题。

因为 Kubernetes 到目前为止被大家诟病最多的还是它的网络解决方案以及网络抽象。对于网络要求较高的服务我建议要多调研,多做一些性能测试。我个人的观点是:如果业务对网络的要求极高,就不推荐用原生的 Kubernetes。如果要用,网络架构不推荐使用 Flannel,可以做其他的选择;此外,需要对 kube-proxy 进行一些改造。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 8 月 08 日 19:005897
用户头像

发布了 58 篇内容, 共 37.7 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
  • 大规模业务 Kubernetes 集群托管实践

    本次分享介绍 LKS 的设计架构,以及在 LKS 在运营过程中的一些经验及思考。

  • Docker 1.9 对网络、存储和集群进行了改进

    Docker公司在这个月巴塞罗那举办的DockerCon EU上发布了Docker引擎1.9版本。此次新版本的发布,正如Docker公司在月初所声明的那样,包含了网络和卷管理的变化,Docker Swarm可用于生产环境了,以及对于Docker Compose、Docker Toolbox、和Docker Registry等组件的诸多改进。

  • Docker Desktop 添加对 Kubernetes 的支持

    Docker在其stable频道发布了Windows和Mac平台下Docker Desktop对Kubernetes的支持。Kubernetes也得到了Docker Enterprise的支持,允许我们将相同的镜像部署到两个系统中。它还包括对Docker Compose的支持,允许我们使用compose文件部署到Kubernetes,可以将其作为kubeconfig文件的替代方案。

  • 迁移到 Docker:在 RightScale,我们为什么要全部迁移?

    作为一家提供对多云平台统一访问接口的公司,RightScale帮助客户管理云计算提供商的IT流程。随着Docker的流行,该公司也开始关注这一概念。而且随着对Docker的了解,RightScale公司发现了该容器的好处,并准备将软件开发和部署过程迁移到Docker中。Tim Miller是RightScale公司的副总工程师,领导着公司的产品开发与部署工作。在Tim Miller最近的一篇博客文章中,他讲述了RightScale决定要迁移到Docker的原因。

  • 搭建一个分布式实验环境:纸上得来终觉浅,绝知此事要躬行

    我以搭建Kubernetes集群为例,与你说明搭建一个分布式环境的关键步骤,以及其中可能涉及的分布式核心知识。

    2019 年 12 月 16 日

  • 2016 DevOps 新趋势调查报告

    RightScale于2016年1月进行了有关云计算使用情况的第五次年度调查,本次调查特别关注了最新的DevOps趋势,是目前为止针对云环境中DevOps所做的最大规模调查,为目前的DevOps状态提供了一种有益视角。

  • Docker 周报:Docker 收购 SDN 创业公司 SocketPlane

    这周Docker公司纳入很多新人,先是宣布两位安全大牛加入,而后又称已经完成对多主机容器网络解决方案创业公司SocketPlane。当部署大规模的Docker集群时,网络就是最大的挑战之一,Docker希望借助SocketPlane可以解决网络方面的问题。

  • 从 0 到 1:搭建一个完整的 Kubernetes 集群

    今天,我们从0开始,在Bare-metal环境下使用kubeadm工具部署了一个完整的Kubernetes集群。

    2018 年 9 月 17 日

  • 谷歌的创新精神:好的、坏的和丑陋的(下)

    谷歌可说是最具创新精神的互联网公司,创新既为它赢得声誉和品牌,也给它带来实际利益。但事情总有两面性,谷歌创新背后又怎样?

    2018 年 7 月 18 日

  • 从 Docker 运维看知乎容器平台的优雅整合

    传统的部署是安装、配置和运行;而Docker的出现革命性地改变了传统模式,部署被简化为复制和运行两个步骤。因此,越来越多企业使用Docker提高分布式应用的构建与交付;但是与此同时,Docker带来了很多不可避免的挑战,其中运维需要克服的挑战尤为传统的部署是安装、配置和运行;而Docker的出现革命性地改变了传统模式,部署被简化为复制和运行两个步骤。因此,越来越多企业使用Docker提高分布式应用的构建与交付;但是与此同时,Docker带来了很多不可避免的挑战,其中运维需要克服的挑战尤为突出。知乎曾经在QCon上与大家首次分享Docker架构和经验,也即将在全球容器大会详细讲述容器平台的实战历程。本次InfoQ就在Docker整合入原有架构过程中,如何实现的Docker运维对知乎两位专家进行了采访。

  • 美团容器技术研发实践

    2018 年 12 月 18 日

  • Docker 周报:IntelliJ IDEA 开始支持 Docker

    IntelliJ IDEA 14.1宣布支持Docker,通过使用Docker插件,开发者可以在现有项目中添加对Docker的支持,并将artifact部署到Docker主机,查看日志,还可以在IntelliJ IDEA中对Docker容器进行管理。

  • 携程的容器化交付实践

    演讲嘉宾董国星(大浪),携程系统研发部 资深后端开发工程师内容介绍携程系统研发部负责公司云平台和 PaaS 两大平台,共同完成了容器交付在携程的落地。云平台始于 OpenStack,进入容器时代后,走过了胖容器,Mesos,以及目前实践中的Kubernetes容器,积累了丰富的容器实践经验。另一方面,PaaS平台始终紧跟容器技术的演进,在引入新技术的同时,为用户提供了稳定一致的交付体验。我们基于Jenkins打造了自己的镜像管理服务,实现基础镜像的管理分发,以及不同机房间的基础镜像同步。另外,基于 Telegrah Sidecar+Kubelet/Cadvisor打造了容器的应用监控,并与PaaS平台进行无缝整合,让用户更方便的掌握容器的状态。同时我们也想分享下从Mesos到Kubernetes的容器迁移方案,如何透明的完成生产容器的迁移。在容器交付的实践过程中,我们还完成了 Python Nodejs Golang等应用的标准化发布,让PaaS平台赋能更多的应用。内容大纲 背景介绍; 镜像管理; 容器日志与监控; PaaS平台的容器交付; Mesos 到 Kubernetes迁移; 各技术栈的容器标准化。

    2018 年 12 月 26 日

  • 2020 年 InfoQ 趋势报告:运维领域

    本文主要基于 QCon 全球软件开发大会和 ArchSummit 全球架构师峰会的演讲内容,盘点了这几年运维方向的技术发展变化。

  • Docker 周报:Docker 这一年

    2014年最后一期Docker周报,从8月8日开始,InfoQ中文站就推出Docker周报,以期推动国内Docker的发展。转眼间Docker周报已经走过5个月,这周Docker周报为大家盘点2014年Docker相关的大事件以及优秀的Docker教程。

  • 云上容器服务:从 Docker 到 Kubernetes,迎接云原生浪潮

    从Docker到Kubernetes,容器生态不断地发展,云原生的技术浪潮已经袭来。

    2020 年 4 月 3 日

  • Docker 周报:CoreOS 推 Rocket 与 Docker 分庭抗礼

    CoreOS与Docker分道扬镳,推出自己的容器引擎Rocket、Docker发布新的跨容器的分布式应用编排服务、Docker发布Docker Hub企业版、CentOS 7实战Kubernetes部署、Docker部署SDN环境、Shopify的Docker使用经验,更多Docker新闻以及资讯,请看本期Docker周报。

  • Docker 公司 CEO 宣布离职,前 Hortonworks CEO 将接替

    5月8日,Docker公司宣布Steve Singh已辞去CEO职位,前Hortonworks的CEO Rob Bearden将接替他的位置。

  • CoreOS 与 Docker 分道扬镳,推出自己的容器引擎 Rocket

    CoreOS是一家容器化Linux服务器操作系统创业公司。近日,CoreOS公布了一款其正在开发的类Docker的开源容器引擎Rocket,首个版本已经提交到了GitHub。

发现更多内容

第三周作业

andy

【week03】作业1

chengjing

【架构师训练营 - 作业 -3】组合模式

小动物

极客大学架构师训练营 作业 第三周

架构师训练营第 3 周——学习总结

在野

极客大学架构师训练营

8行代码的21问题: 如何有效Code Review?

zzj8704

Code Review 代码规范 可测性 CR常见规则 结构化CR

第三周作业

芒夏

极客大学架构师训练营

奈学教育《百万架构师》课程大纲

奈学教育

极客大学架构师训练营

奈学教育《百万架构师》课程大纲

古月木易

极客大学架构师训练营

瓷都景德镇牵手蚂蚁区块链,重塑非遗陶瓷产业

CECBC区块链专委会

区块链技术 溯源 防篡改 景德镇 非遗

【week03】总结

chengjing

week3 作业& 手撕单例模式

不在调上

【架构师训练营 - 周总结 -3】设计模式、重构

小动物

总结 极客大学架构师训练营 第三周

架构师训练营第 3 周 _ 学习总结

方舟勇士

课程总结

Tweak原理与越狱防护

大冯宇宙😏😏

架构师训练营Week03

Frank Zeng

用于可视化软件体系结构的C4模型(转载)

清风徐徐

有益思考一则:概率与格局

石君

思考 思维方式 格局

第三周总结

andy

元年云“宽能力”拓宽成长型企业数字化升级之路

人称T客

架构师训练营第三周课后作业

竹森先生

极客大学架构师训练营

第三周作业

戴维斯

极客大学架构师训练营

项目交付二三事

飞哥

持续交付

大白话Java多线程,小白都能看的懂的哦

java金融

Java 多线程 线程安全 创建线程方式 什么是多线程

万恶的NPE差点让我半个月工资没了

java金融

Java 程序员 互联网 NPE 空指针

代码重构练习三

李广富

到底是什么让IT人如此苦逼???

不会笑青年

程序员 程序人生

当教育遇上区块链,会擦出什么样的火花?

CECBC区块链专委会

区块链技术 去中心化 防篡改 教育资源共享

中心化是人性,去中心化是技术

CECBC区块链专委会

区块链技术 去中心化 超级节点

从单机事务到分布式事务

ElvinYang

组织协同-研发项目责任矩阵

飞哥

研发管理 团队组织

week3 学习总结

不在调上

极客大学架构师训练营

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

趋势科技基于Docker和Kubernetes的持续部署实践-InfoQ