网易云深度剖析Kubernetes优化与实践
欢迎访问网易云社区,了解更多网易技术产品运营经验。
10 月 15 日,聚焦 Kubernetes 中国行业应用与技术落地的首届中国 Kubernetes 用户大会(KEUC)在杭州成功举办。本次大会吸引了来自全球各地的技术精英齐聚一堂,共同探讨、分享 Kubernetes 最前沿技术和成果,对于 Kubernetes从理论到落地推广,并走向国际化有着极为深远的意义。
大会的Keynote环节中,网易云基础设施部技术总监张晓龙带来了题为“容器及其编排技术在网易公有云的应用”的演讲。
网易从2012年就开始使用LXC工具部署内部业务,2014年研究容器并基于Docker部署面向网易内部产品的消息推送服务,2015年开始研究容器编排并基于kubernetes实现网易自身的容器编排服务,2016年将公有云基础设施服务(云主机、云网络、云硬盘)与已有容器及其编排服务深度整合并优化,并发布网易云容器服务(蜂巢容器云),目前在研发面向高性能场景的公有云裸金属容器。
网易云容器服务的目标是面向海量互联网用户提供按需使用、高性能、安全可靠的公有容器云,为了完成这个目标,主要遇到了四大挑战:
多租户隔离:实现容器系统内核、网络的隔离,实现容器的安全可靠;
资源动态管理:容器的计算、网络、存储资源按需动态分配与回收;
高可扩展:实现大规模容器下的高效编排管理;
高性能:提供高网络吞吐量、高IOPS的容器。
网易云深度整合IaaS与容器及其编排服务
网易云将基础设施与容器编排服务做了深度整合与优化,实现了容器网络/内核的租户隔离;基础设施的性能优化可直接提升容器性能;实现容器运行资源按需动态管理;将资源管理和容器编排分层,降低容器集群管理的复杂性。
此外,网易云通过对社区原生集群编排的一系列优化,实现了Kubernetes单集群容器管理能力相比官方1.6版本6倍的性能提升,同时实现了多个Kubernetes集群并行扩展的能力,使得我们可以面向海量互联网业务提供大规模容器集群的管理。
最后,网易云结合计算、存储、网络层面的基础设施实现了容器的高性能:
计算层面:容器直接运行于裸机,消除KVM虚拟化/IO路径的开销,计算性能提升15%;
网络层面:基于DPDK/SR-IOV实现高速网络包转发,网络包处理能力接近150W;
存储层面:容器使用自研高性能分布式块存储后端,磁盘写性能3W+ IOPS/300Mbps。
最后,张晓龙透露未来网易云会在以下三个方面继续深耕:研发GPU/FPGA 高性能容器,跟进开源社区最新版本并适配,加大参与社区力度并反馈社区。
在Kubernetes技术论坛中,网易云首席解决方案架构师刘超分享了“网易云如何基于大规模Kubernetes集群支持高并发应用”。

网易云首席解决方案架构师 刘超
首先,刘超以网易考拉海购为例,介绍了大规模云原生应用的支撑痛点。考拉在拆分为微服务后,各个服务间的关联关系是非常复杂的。为了支撑这个复杂的应用,会对Kubernetes集群产生以下需求:首先,在入口需要有高性能负载均衡器承载外部大规模的流量,流量进来后需要高性能私有网络来支撑组件间的相互访问;其次,要保证容器网络和虚拟机网络互通,使得容器可以访问PaaS平台的服务:此外,还包括高可用、服务发现、统一的配置中心等需求。
刘超分别从架构、网络、负载均衡、服务发现等方面介绍了网易云如何解决大规模云原生应用的痛点,从而支撑考拉业务的。

网易云容器服务平台架构
上图是网易云容器服务平台的架构,网易云的容器服务部署在底层的IaaS平台之上,需要动态依赖底层的计算资源来创建云网络、云硬盘、Node节点等资源。通过网易云自研Netease Controller组件,可以监听事件事先准备好底层的硬件资源;
云网络方面,网易云自研的CNI插件部署在每个虚拟机节点上,每当发现有Pod起来的时候,就会调用CNI插件,从IaaS平台上虚拟出一张网卡打到虚拟机里。

容器服务的网络模型
在IaaS平台或虚拟机中部署容器,通常会遇到二次虚拟的问题,即物理机到虚拟机的一次虚拟和虚拟机到容器的一次虚拟,对吞吐量会产生很大影响,如左图所示。为了解决这个问题,网易云将虚拟机的网卡打到容器中(右图),容器看到的网络和虚拟机看到的网络是同一个二层网络,一方面的好处是只有一层overlay,另一方面虚拟机和容器之间可以相互访问,使得虚拟机和容器混合部署的应用可以无感知地迁移,并且容器也可以访问虚拟机上的PaaS服务。
负载均衡方面,网易云也开发了一个Load Blancer Controller,要起一个负载均衡的时候,会调用Load Balancer Manager去创建一个虚拟的Load Balancer。我们的负载均衡包含2层,一层是物理的负载均衡,所有租户共享;另外一层是虚拟机中的HAProxy,负载均衡和虚拟机或容器的连接通过OVS的二层网络就可以搞定。
Kubernetes默认使用用kube-proxy实现服务发现,考拉和云音乐等大型应用更倾向于使用其做外部的服务发现,可以简化配置;而内部的服务发现通常沿用容器化前的服务发现方案Dubbok,一方面因为Dubbok的功能更强大,另一方面避免底层平台的绑定。
网易云为您提供容器服务,欢迎点击免费试用。
相关文章:
【推荐】 知物由学|未来安全隐患:AI的软肋——故意欺骗神经网络
网易云深度剖析Kubernetes优化与实践的更多相关文章
- KEUC首次落地中国,网易云深度剖析Kubernetes优化与实践
本文由 网易云发布. 10 月 15 日,聚焦 Kubernetes 中国行业应用与技术落地的首届中国 Kubernetes 用户大会(KEUC)在杭州成功举办.本次大会吸引了来自全球各地的技术精英 ...
- 资深专家深度剖析Kubernetes API Server第3章(共3章)
在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...
- 资深专家深度剖析Kubernetes API Server第2章(共3章)
欢迎来到深入学习Kubernetes API Server的系列文章的第二部分.在上一部分中我们对APIserver总体,相关术语及request请求流进行探讨说明.在本部分文章中,我们主要聚焦于探究 ...
- 资深专家深度剖析Kubernetes API Server第1章(共3章)
欢迎来到深入学习Kubernetes API Server的系列文章,在本系列文章中我们将深入的探究Kubernetes API Server的相关实现.如果你对Kubernetes的内部实现机制比较 ...
- 深度剖析Kubernetes API Server三部曲 - part 3
在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...
- 深度剖析Kubernetes API Server三部曲 - part 2
欢迎来到深入学习Kubernetes API Server的系列文章的第二部分.在上一部分中我们对APIserver总体,相关术语及request请求流进行探讨说明.在本部分文章中,我们主要聚焦于探究 ...
- 深度剖析Kubernetes API Server三部曲 - part 1
欢迎来到深入学习Kubernetes API Server的系列文章,在本系列文章中我们将深入的探究Kubernetes API Server的相关实现.如果你对Kubernetes 的内部实现机制比 ...
- 网易云基于 Kubernetes 的深度定制化实践
本文由 网易云发布. 2017 年,Kubernetes 超越 Mesos 和 Docker Swarm成为最受欢迎的容器编排技术.网易云从 2015 下半年开始向 Kubernetes 社区贡献代 ...
- 腾讯刘金明:腾讯云 EB 级对象存储架构深度剖析及实践
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:刘金明 腾讯云存储业务中心副总监 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来" ...
随机推荐
- 还是要精简开发呀,VS2015太大,VS2010不想装
公司电脑配置没有很好,所以对于我就是一个挑战. vs2015装上了,但是一打开就卡卡卡,基本没法办公. 公布能用记事本吧,太多不方便: Notepad++做辅助的局部修改还是很好用的,装上插件就智能提 ...
- IOS 添加定时器(NSTimer)
定时器 CADisplayLink:时间间隔比较小(使用时间频率高)的时候用(适合小游戏中开发) NSTimer:时间间隔比较大的时候调用(适合图片轮放的时候用) //声明定时器 @property ...
- 创建一个gradle项目
1.创建项目 一定要选这个安装的路径 项目创建成功,修改build.gradle文件,主要是为了下载依赖的jar包,原始模板, 而我修改之后,如下 apply plugin: 'idea' apply ...
- Android_ListView适配器
ListView如何优化 复用convertView缓存(减少ListView绘制). 自定义静态类ViewHolder(减少findViewById次数),通过setTag().getTag()获取 ...
- http知识补充
在我的职业生涯中,没怎么重视过这http四个字,想当然的觉得不就是个网页请求嘛就没怎么当回事,而且很多http相关的长篇大论一听就困,真心是弄不下去,但是就是这种观念导致我后期的工作中不断的挖坑,不断 ...
- 【转】Xcode真机调试初体验
1. 开发者证书(Certificates) 分为开发(iOS Development)和发布(iOS Distribution)两种,无论是真机调试,还是上传到App Store都需要该证书,是一个 ...
- .svn文件被删除的解决办法
不小心把文件夹下的.svn给删除了,svn提交时会报如下错误: 包含工作副本管理数据的目录“/home/usa/svn/aispeech/air201102/branches/tools/res/di ...
- 深入理解HDFS的架构和原理
(一) HDFS主要是用于做什么的? HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处 ...
- vs code配置c/c++调试环境+mingw+windows
目录 1.安装codeblocks 2.配置mingw环境变量 3.配置.vscode文件夹的json文件 ref 1.安装codeblocks 我已经安装过vscode和c++扩展插件,现在需要g+ ...
- Servlet学习笔记04——什么是重定向,servlet生命周期?
1.重定向 (1)什么是重定向? 服务器通知浏览器访问一个新的地址. 注: 服务器可以通过发送一个302状态码及一个 Location消息头(该消息头的值是一个地址,一般 称之为重定向地址)给浏览器, ...