网易云容器服务研发实践分享

【网易云容器服务研发实践分享】3月25日,网易云技术布道系列第三期?对话架构师上海站的活动中 , 网易云基础设施技术总监张晓龙带来了题为“网易云容器服务研发实践分享”的干货演讲 。网易从2012年春开始云计算研发,陆续上线私有云IaaS、PaaS服务 , 并实现网易95%以上的互联网业务迁移上云 。本次活动中,张晓龙分享了网易云基础服务团队在研发容器服务过程中的实战经验 。

网易云容器服务研发实践分享

文章插图
张晓龙 , 网易云基础设施技术总监,网易专业技术委员会委员 。浙江大学本科、博士毕业 。目前主导网易私有云以及网易公有云基础设施服务的技术研发,在云计算基础设施、分布式系统方面有多年的架构设计与研发经验 。
网易云技术架构
张晓龙首先介绍了网易云的研发历程和整体架构 。
网易云容器服务研发实践分享

文章插图
网易云的产品经历了长期的技术积累,网易在2012年开始做云计算 , 最早实现了IaaS,交付了公司内部的私有云基础设施服务,包括主机、网络、存储等服务;2013年8月 , 陆续上线了关系型数据库、负载均衡、对象存储等平台服务;2014年12月,网易内部95%以上的互联网产品都实现了上云;2015年5月,网易云对外服务于合作伙伴——网新科技、中顺易等;2016年1月 , 网易基于实现了容器云,并在9月正式对外发布 。
下图是网易云的简单架构:
网易云容器服务研发实践分享

文章插图
网易云的技术架构从底到上分为三层:
基础设施层主要采用虚拟化技术将服务器、交换机/路由器以及硬盘等物理设备虚拟成为可以按需分配的计算/存储/网络资源 。基础设施层主要包括:云主机、云网络、云硬盘等服务 。基础设施层不仅为网易云容器服务运行提供计算/存储/网络资源,同时也为为数据库、缓存、负载均衡等网易云平台服务提供资源;
核心业务层主要包括两块:一是容器及容器编排:镜像仓库、日志服务、容器服务、编排服务,主要覆盖了以容器以及容器编排为中心的网易云容器服务核心功能;二是PaaS插件服务,主要包括数据库、负载均衡、对象存储、缓存等;
最上面的外围服务层,也是构成一个平台不可或缺的一部分 。主要包括:认证、API服务、计费服务、安全服务、监控服务
网易云容器服务
作为网易云的核心服务之一,网易云容器服务的定位是面向高效研发而打造的新一代云计算平台,提供弹性计算、工具链及微服务基础设施等,帮助企业解决IT、架构、运维等问题,使企业更聚焦其业务 。容器服务的功能包括3个方面:
提供有状态/无状态容器及其镜像加速/构建/仓库等在内的容器服务;
提供包括对象存储、CDN、关系数据库、、负载均衡、缓存服务、安全服务等在内的完善平台服务 , 是实现互联网应用的通用的基础组件;
提供包括服务发现、编排服务、APM服务、持续集成、监控服务、日志服务、持续发布等在内的完整工具链 。
容器服务的核心技术
要构建一个容器服务,需要三类核心的技术:基础设施、容器、容器编排 。从整个核心技术来看 , 网易云容器服务基于流行的开源技术而打造,为实现极致的用户体验实施了各种优化和定制开发 。
基础设施
基础设施提供容器运行所需计算/存储/网络资源,高效管理这些资源并确保资源的按需分配、高效交付,同时要保证交付资源的QoS比如计算能力、网络性能、I/O能力等;
基础设施服务的技术基础是虚拟化技术,包括计算、网络、存储的虚拟化技术,计算的虚拟化无论在硬件或软件层面都相对成熟,而在网络、存储的虚拟化上网易云的选择是软件定义的技术 。
容器
容器是网易云容器服务资源交付的最小单位 , 网易云采用了最新技术,实现应用交付的标准化;目前的容器服务基于.12版本打造 。
容器编排
要基于容器实现一个可水平扩展的产品服务端架构,需要使用容器编排技术实现对容器集群的发布、回滚、迁移、扩容、缩容等 。网易云的容器编排基于开源项目 , 服务将资源抽象为三个层次:容器(软件及运行环境),Pod(相关联的容器组合)容纳一个或多个容器,Node(提供计算/网络/存储的资源节点)容纳一个或多个Pod 。
网易云团队对这些核心技术有全面的掌控力,一方面也体现在网易云对这些开源技术的贡献和参与上:
以和为例,网易从2012年4月开始对 E版本贡献代码 , 去年下半年网易云开始向社区贡献代码,是国内最早向这2个社区贡献代码的团队之一 。
构建容器云的关键技术 关键技术——基础设施服务 网络存储计算关键设计——容器计算
首先 , 容器的计算资源应该如何提供?应该跑在物理机上还是虚拟机上?从公有云层面来说 , 在容器的隔离性不是特别好的情况下,还是要跑在云主机上面,这是对用户最基本的安全承诺 。
关键设计——容器网络 容器网络实现
网易云容器服务研发实践分享

文章插图
容器网络由基础设施服务来提供,并确保网络的性能、可扩展性;容器不关心和处理网络性能、可扩展性问题 , 只管用云提供的网络服务创建和使用相应的网络 。网易云为每个租户提供一张完全隔离的私有网络以及一张所有租户共享的公网 。
关键设计——持久化容器数据
容器的存储也是比较难解决的问题 , 多数容器都是无状态的,也就是说容器内部不应该保存用户有用的数据,一个容器挂掉后,用镜像能很快启动另一个容器 , 保证系统的正常运行 。从架构上来说这个设计很好,弹性可扩展 。但如果架构设计能力不是太好的情况下,很容易出现有状态容器的需求 。
存储需求
但不管是还是都不解决容器的存储问题,只可以用 -v指定一个数据目录,所以在构建容器云时有2个需求:
难点
默认会将所有容器都存储在目录下,不同容器数据无法有效区分并隔离
方案关键设计——网络安全
网络安全也是云平台设计非常重要的一点
网络过滤DDoS攻击防护
基于Intel DPDK技术实现高性能实时抗攻击
网易云容器服务研发实践分享

文章插图
关键技术——网络带宽QoS 设计原则实现方案
网络QoS另一个重要问题是网络小包过载的问题,
关键优化——容器启动速度 问题
容器运行于云主机,容器启动依赖于云主机先启动,而基于硬件虚拟化技术的云主机启动速度较慢 。
启动速度优化
1、定制系统镜像,裁剪不必要服务启动加载项;
2、云主机IP静态化,加速网络初始化过程 。IP静态化的原因:云主机网络初始化使用DHCP服务获取网络IP和路由等信息,会占用较多启动时间 。在网络服务启动前使用Cloud-init和完成网卡名称匹配和IP配置信息注入;
3、优化创建云主机流程,主要是在的计算节点上做了一些优化 。
优化效果
创建容器在40秒内完成
关键优化——网络性能
内网使用巨?。↗umbo )模式,提升数据传输的吞吐量 。
VxLan性能优化
使用不同内核版本和OVS版本的组合,VxLan性能差异很大,在万兆网络环境下使用3.18版本内核 + 2.6版本OVS,云主机单连接网关转发性能可近4Gbps,云主机多连接网关转发性能可达近9Gbps,云主机间互访近4Gbps
关键技术——解决Ceph运维时性能衰减 性能问题
社区Ceph在osd进程重启时会出现长时间、极其严重的性能衰减(80%+),原因是osd重启时要恢复重启期间脏数据对象,会消耗大量网络/磁盘开销
解决手段
在pglog记录重启期间数据对象的增量数据,在重启时增量恢复数据对象
解决效果
关键优化——容器编排多租户支持
原生的没有租户和多租户的概念 , 意味着要给每个用户部署一套的集群管理系统,网易云用一套集群去管理所有租户的容器,这跟社区版本中完全不一样的地方
完善多租户支持关键优化——容器编排性能 性能问题优化手段调度器并行优化副本控制器多优先级处理内部负载均衡转发表精简、kube-proxy、api-内存优化优化效果关键技术——容器性能监控未来工作
云计算的研发是一项系统的基础开发工作,有非常大的难度难,云计算产品最重要的是稳定性、性能和安全 , 后续的工作也将围绕这三方面展开 。