华为云对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 ...
随机推荐
- Linux uptime命令详解
常见的命令展示 uptime 08:21:34 up 36 min, 2 users, load average: 0.00, 0.00, 0.00 #当前服务器时间: 08:21:34 #当前服务器 ...
- 【Linq】常用语法汇总
语言继承查询(Language Integrated Query, LINQ),在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源,LINQ提供了不同数据源的抽象层,所以可以使用相同语法 ...
- 阿里八八Alpha阶段Scrum(4/12)
今日进度 叶文滔: 整合了一下已完成的界面设计,修复了一些BUG. 问题困难:制作多级悬浮按钮阻碍重重,首先是刚更新不久的Andriod Studio 3.0向前兼容性差,一些语句规则的修改无所适从, ...
- 实例化list
List<String> lists = new ArrayList<String>();list.add("123");
- React-Native开发笔记 持续更新
1.css单位转换px2dp 在做页面开发的时候习惯了用rem去做css单位,处理各种尺寸数据,到了React-Native里面做app开发时,rem就不好用了,这个时候就需要转换成另外一个单位,基本 ...
- Redis系列一:reids的单机版安装
环境:VM+centos6+xshell 1.准备好linux的虚拟机,这里用的是centos6,具体方法百度 2.进入software目录,创建一个redis的目录来存放下载的redis包 cd s ...
- Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装
转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...
- svn 更新提交文件冲突
文件冲突定义:svn up更新服务器文档到本地的时候发现本地的文件有所改动,和svn服务器不同步 服务器会报冲突,让你觉得已谁的为准,根据实际情况我们需要选择是以服务器还是以本地代码为准 报错: Co ...
- Pyspider抓取静态页面
近期,我想爬一批新闻资讯的内容.新闻类型的网址很多,我想看看有没有一个网页上能包罗尽可能多的新闻网站呢,于是就发现了下面这个网页 http://news.hao123.com/wangzhi 这个页面 ...
- Linux 平台下的漏洞扫描器 Vuls
导读 Vuls 是一款适用于 Linux/FreeBSD 的漏洞扫描程序,无代理,采用 Go 语言编写,对于系统管理员来说,每天必须执行安全漏洞分析和软件更新都是一个负担. 为避免生产环境宕机,系统管 ...