华为云对Kubernetes在Serverless Container产品落地中的实践经验
华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API。正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用。
这里值得一提是,我们采用了全物理机的方案,对于端到端资源利用率有一个很大的提升。而在 K8S 之上我们通过一层封装实现了超规模资源池。大家知道 K8S 现开源的版本最大只能支持到5000节点,并且这是在 Google 云上的验证结果,而在很多其他的云平台往往达不到。主要是受限于底层网络和存储系统。
所以在华为云,我们的做法是通过一层封装和引入Federation来获得整体服务的超大规模。同时因为 K8S 原生多租能力非常有限,所以我们选择将额外基于租户的验证、多租限流等工作放在这一层封装中实现。但对于应用定义等接口,则是直接透传 K8S原生的API数据,只是在调用过程中增加如请求合法性等的校验。图中右侧的容器网络、容器存储,现有的开源方案是无法满足的,所以华为云采用自研的策略。
租户概念和网络隔离
前面已经讲过,K8S 原生并没有租户概念,只有一层以 Namespace 为边界的隔离。在 Namespace 这一层,除了API对象的可见性隔离,K8S 还提供了 Resource Quota(资源总和限制)以及 Limit Range(定义每个Pod、Container能使用的资源范围)等精细的配额管理能力。而在华为云上,我们设计的租户模型是:租户(用户)、项目、Namespace 三层模型,方便用户管理多个项目的开发、测试、生产等不同阶段。
网络隔离方面,采用多网络模型,一个项目中可以定义多个VPC,VPC 和 Namespace 是一对多的关系。用户可以结合实际需要将开发、测试阶段的应用部署在同个 VPC 的不同 Namespace 中便于调试和问题定位,生产环境部署在拥有单独 VPC 的 Namespace 保证不受其他活动干扰。
Runtime安全与隔离
再看 Runtime,由于是全物理机的模式,节点被不同的租户共享,普通docker容器无法满足Pod间的隔离性要求,Runtime采用的是安全容器(即早期的runV,现在的Kata Container)。使用安全容器的主要思路,就是在Pod外围包一层轻量级虚拟机,这样既保证了Pod间的隔离性,又兼容了K8S原生Pod内容器共享网络和存储的设计。而包装这层轻量级的虚机,因为里面只需要运行容器,可以通过裁剪等手段优化到与普通容器相同数量级的启动时间。
接口层面,按照社区现在的进展,推荐的做法是使用 CRI (container runtime interface) 直接对接安全容器的CRI-shim实现。不过因为项目启动很早,CRI尚未成熟,我们采用的是在 Docker 内部分支处理的方案:在容器引擎服务中,仍然是原来的逻辑,直接创建普通容器;而在我们的容器实例服务里,通过 Docker API 调用创建出来的则是安全容器。用户原本使用 Docker 容器的习惯几乎没有改变,在指定容器镜像时也是需要指定所需运行的 Docker 镜像,外层轻量级虚机的镜像直接由宿主机提供。这样既解决了安全隔离的问题,又不会给用户带来额外的切换成本。
最后,让我们来回顾一下本次分享的关键内容。
首先,我们基于 Kubernetes 构建了华为云容器实例服务的核心部分,在其上封装实现了多租户的定义和访问隔离。对用户来说,最大的好处是可以使用原生 K8S 的 API 和命令行,不需要感知 K8S 集群和底层资源,不需要在使用前创建集群,使用过程中也不用担心集群出现任何问题,完全由平台自身来保证服务的可用性。
其次,在计算资源隔离方面,我们采用是Docker原生API后端对接 kata container,可以最大限度兼容两个项目的生态。而对于最终用户来说,用户只需要知道安全隔离足够可靠。而在网络隔离方面,采用多网络的模型,用户可以定义多个 VPC,将 Namespace 和应用创建到不同的 VPC 中,以此实现彼此之间的隔离。
此外,针对高性能计算场景,我们还完成了GPU、FPGA加速芯片的分配调度优化,配合高性能网络与本地存储加速,进一步提升了端到端计算性能。
结语
以上是华为云对Kubernetes在Serverless Container产品落地中的实践经验。随着产品的成熟,我们也计划将一些共性的增强点回馈社区,推动Kubernetes在面向Serverless容器和多租隔离等场景的能力补齐和生态发展。
华为云对Kubernetes在Serverless Container产品落地中的实践经验的更多相关文章
- ServerlessBench 2.0:华为云联合上海交大发布Serverless基准测试平台
		
摘要:华为云联合上海交大重磅推出ServerlessBench 2.0,为社区提供涵盖12类基准测试用例.新增5大类跨平台测试用例.4大类关键特性指标.且多平台兼容的Serverless开放基准测试集 ...
 - Serverless 在编程教育中的实践
		
说起Serverless这个词,我想大家应该都不陌生,那么Serverless这个词到底是什么意思?Serverless到底能解决什么问题?可能很多朋友还没有深刻的体会和体感,这篇文章我就和大家一起聊 ...
 - Forrester:华为云容器是容器混合云最佳选择
		
近日,国际权威咨询机构Forrester发布<The Forrester New WaveTM: Public Cloud Enterprise Container Platforms, Q3 ...
 - 如何基于 K8S 多租能力构建 Serverless Container
		
当前 Kubernetes 已经成为名副其实的企业级容器编排规范,很多云平台都开始提供兼容 Kubernetes 接口的容器服务.而在多用户支持方面,多数平台选择直接提供专属虚机集群,用户需要花费大量 ...
 - 揭秘华为云GaussDB(for Influx)最佳实践:hint查询
		
摘要:GaussDB(for Influx)通过提供hint功能,在单时间线的查询场景下,性能有大幅度的提升,能有效满足客户某些特定场景的查询需求. 本文分享自华为云社区<华为云GaussDB( ...
 - 华为云发布桌面IDE-CodeArts
		
摘要:华为伙伴暨开发者大会2022,发布华为云桌面IDE-CodeArts. 本文分享自华为云社区<华为云发布桌面IDE-CodeArts,让连接更简单.编码更智能>,作者: Huawei ...
 - 华为云ROMA,联接企业应用的现在与未来
		
2019.9.19日,在华为全联接大会的华为云Summit中,华为云CTO宇昕总提出:"企业的应用与数据集成,始终是数字化转型和智能化升级的关键,华为云企业应用与数据集成平台ROMA,打破时 ...
 - 当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性
		
摘要:当前MySQL所有版本不支持分布式事务的崩溃恢复安全,这严重影响了分布式事务的高可用保障. 华为云数据库内核高级技术专家,拥有十多年MySQL内核研发经验,目前在华为云数据库团队研发华为云数据库 ...
 - 【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发
		
摘要:Serverless.微服务,这些新技术和IoT有什么关系?纵观IoT行业的发展,云服务又扮演了什么角色? IoT并不是一个新名词.新技术,很长一段时间,它甚至给人一种"下工地&quo ...
 
随机推荐
- mysql 表格操作指令大全(Show、desc、create、insert into、delete、select、drop、update、alter)
			
使用数据库 use 数据库名 eg: use weiying 2. 查看库里所有的表 Show tables 3.查看所表的结构 desc 表名 desc score 4.建表create tabl ...
 - Asp.net core 2.0.1 Razor 的使用学习笔记(二)
			
ASP.net core 2.0.1 中 asp.net identity 2.0.1 的基本使用(一)—启用用户管理 一.修改和启用默认的用户账户管理和角色管理 在Data目录中添加Applicat ...
 - 等我干IT发财了,就和你离婚。。。。。
			
01 “等我干IT发财了,就和你离婚” 他淡淡地说 听完后,她心里暖暖的, 她想,没有比这更天长地久. 海枯石烂的承诺了. ——2018年度最佳微小说奖 02 “等我干IT发财了,我就买房和你结婚.” ...
 - Terminal Service 终端链接
			
2008 64位前有这项服务,之后就与远程管理合并了 如果要设置他的连接数可以去 桌面 --> 管理工具 --> 远程桌面服务 最大数设置成1个好了
 - 没有插件的sublime编辑器是没有灵魂的
			
这阵子各种捣鼓,现在趁有空记录一下sublime编辑器的一些实用的插件和安装方法,下午又该继续学习了. 接下来安装的是htmlHint.jsHint.cssLint以及汉化这几种插件,其实插件会使我们 ...
 - 1008. [HNOI2008]越狱【快速幂】
			
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果 相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 I ...
 - sql server 数据库作业备份存储过程
			
DECLARE @fileName nvarchar(100) SET @fileName='D:\HFS\DataBase' + REPLACE(REPLACE(REPLACE(REPLACE(CO ...
 - 【转】Android中通知的提示音、震动和LED灯效果小例子
			
通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发出一条通知后,手机最上方 ...
 - uwsgi+django  配置
			
uwsgi+django 创建新的虚拟环境,且解决crm的环境依赖 在虚拟环境下安装uwsgi pip3 install uwsgi 学习uwsgi命令,如何启动python应用 启动python w ...
 - pytorch代码资源
			
pytorch版本的faster和fpn https://github.com/jwyang/faster-rcnn.pytorch https://github.com/jwyang/fpn.pyt ...