HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

基于 Kata Containers 与 iSulad 的云容器实践解析

  • 2019-04-16
  • 本文字数:2371 字

    阅读完需:约 8 分钟

基于Kata Containers与iSulad的云容器实践解析

在 4 月 9 号结束的 OpenStack 基金会董事会议上,董事们投票批准了 Kata Containers 成为基金会旗下第一个新的顶级开放基础设施(Open Infrastructure)项目,这是该项目的一个重要里程碑。


作为 Kata Containers 的初创成员之一,华为拥有 Kata Containers 架构委员会五席位之一和三位 maintainer,贡献了支持 CNI 网络接口、Host Cgroups 等特性,参与核心代码重构,并已提交上百个 patch,代码贡献量超过 3 万行,全球排名稳定保持在前四。


2017 年,华为 EulerOS iSula 技术团队成功将 Kata Containers 集成到 iSula 容器平台,并于 18 年初应用于华为云容器服务,推出基于 iSulad 容器引擎 + Kata Containers 的商用容器服务——华为云容器实例 CCI(Cloud Container Instance),也是业界首个 Serverless 架构的云容器服务,正是得益于 Kata Containers,使之前一直困扰用户的容器安全问题迎刃而解。


本文将重点介绍基于 iSulad 容器引擎和 Kata Containers 如何打造安全、高性能的云容器实例服务。


首先了解华为 iSula 容器平台,这是华为自研的容器平台,支持双容器引擎和五种不同的容器模式。



双引擎为:


  • docker 引擎:目前流行的 docker 容器引擎,在 Linux 上基于 namespace 及 cgroups 实现应用之间的隔离,使用 Go 语言编写而成。

  • iSulad 容器引擎:使用 C 语言编写而成的华为纯自研容器引擎,相比 docker 引擎突出的优点是性能高,资源占用小,在边缘计算等资源受控场景下有着非常耀眼的表现。


五种容器形态为:


  • 应用容器:即大家熟知的 docker containers。

  • 系统容器:在容器大浪潮中,各种不同类型的业务纷纷进行容器化,期望利用容器“build, ship and run”的能力最大化生产效率。相比微服务应用,传统的基于 systemd 的重型业务更加难以容器化,系统容器应运而生。系统容器内置 systemd 作为 init 进程,可帮助传统业务更轻松完成容器化改造和使用。

  • 轻量化容器:基于 LXC 打造的轻量化容器占用内存资源极少,主要用于 CT 或边缘计算等资源受控场景。

  • 高性能低时延容器:使用 unikernel 技术将应用与定制化内核打包,一方面可以大大减小攻击面增强安全性,同时大幅度提高了应用的运行性能。高性能低延时容器可以为定制化场景提供最佳方案。

  • Kata 容器:融合传统虚拟化技术与容器技术创造的高安全性容器,一方面兼容了繁荣的容器生态,一方面解决了传统容器隔离性不足的安全隐患,这也是华为云容器实例这种 Serverless 架构下,用户最为关心的问题。


iSula 在集成 Kata Container 优秀特性的同时,还会针对业务场景进行定制化改造。性能问题一直是大多数开源项目被诟病的地方,尤其是在超大型商业应用环境下尤为明显。Kata Containers 也不例外,虽然 Kata 社区提供的技术方案已经可以很好地兼容 docker、containerd 及 crio 等容器运行时,但出于性能等方面的考虑,iSula 并未直接使用社区方案,而是采用了性能更高的自研发方案。使用 iSula 自研方案,可以极大缩短软件栈的深度,减少 RPC 调用开销,更好配合华为云自有高性能网络及存储资源,使得华为云容器服务能为用户提供更高性能的网络及存储方案。


以网络为例,社区开源网络方案如下所示:



Calico、Canal 等开源网络软件会将创建的 veth 网口插入容器的 namespace 中,在 Kata 的场景下,容器的 Network Namespace 中还有一层虚拟化层,需要使用 Linux tap 设备而无法直接使用 veth 网卡。因而,Kata 提供了几种网络模型用于兼容容器生态中的多种网络方案,包括:


  • Bridge 模式:使用 Linux bridge 将 veth 与 VM 的 tap 设备桥接起来。

  • Macvtap 模式:创建母设备为 veth 的 macvtap 供 VM 使用。

  • TC 模式:使用 Linux TC 在 veth 和 tap 设备之间做流量的双向转发。


Kata 默认的几种网络模型可以保证开源容器 CNI 网络方案无需修改开箱即用,这种方式足够智能,但灵活性稍显不足,因而华为向社区贡献了一种新的模式:


  • None 模式:Kata 不做任何猜测,不智能创建网卡,网络需要用户使用新增的 kata-network 命令手动创建。


使用 none 模式给予了用户最大选择权和灵活性,但需要用户自行改造 CNI 网络插件,相比其他模式有一定使用门槛。好处在于由 CNI 插件可以直接为容器增删网卡/路由,绕过了 veth 网卡,缩短了网络拓扑路径长度,为网络性能的提升提供了更大空间。


None 模式配合华为自研的容器网络方案,可以保证为容器应用提供最佳网络性能。


了解过 iSula,再来看看华为云容器实例(CCI)服务,CCI 是基于 Serverless 架构的 Kubernetes 容器服务。



真正的 Serverless 容器服务中,集群管理由云服务提供商承担,客户只需要关注每个应用的容器实例即可。在这种情况下,云服务提供商需要考虑如何在统一管理面下保证每个用户的安全。


CCI 服务所属的 Kubernetes 集群直接部署在裸金属服务器之上,底层是 Kata Containers,中间靠 iSula 容器平台连接。依靠 Kata Containers 的强隔离特性,多个租户之间的容器运行环境强隔离,不同租户之间的容器不感知、不可见,可以在同一台裸金属服务器上混合部署而安全无虞,若使用 docker 容器通常认为是存在安全风险的。


同时,CCI 这种将 Kubernetes 直接部署在裸金属服务器上的混合多租模式,配合 Kata Containers 技术可以最大化资源利用率,降低性能开销,使得用户的内存开销小于 64MB,容器实例启动时间小于 600ms,从而可以为用户提供高性能低价位的容器服务。借助 iSula 优化过的网络和存储能力,CCI 可以在网络和存储基础资源之上,提供更优性能。


除此以外,基于 iSula 提供的 GPU 直通功能,CCI 通过该技术提供的 GPU 容器,用户可直接在容器中使用 nvidia 的各型号 GPU 进行 AI 计算,使得 CCI 也成为市面上第一个提供 GPU 算力的 Serverless Kubernetes 容器服务,并且做到 32 块 GPU 线性加速比超过 0.95,128 块 GPU 线性加速比超过 0.8,在图像识别、自然语言处理、语音识别等领域被广泛使用。


2019-04-16 14:0611593

评论

发布
暂无评论
发现更多内容

海外主机是什么意思?与国内主机有什么区别?

行云管家

服务器 主机 服务器运维 海外 主机运维

云图说丨初识数据工坊DWR

华为云开发者联盟

大数据 数据处理 算子 数据工坊 工作流编排

31 家企业入选阿里云首期云原生加速器,共建云原生行业新生态

阿里巴巴云原生

阿里云 云原生 云原生加速器 招募 行业生态

云管理平台有哪些?建议选择哪家?

行云管家

云计算 多云 云管理

企业IM首选移动数字化平台WorkPlus

WorkPlus

天翼云TeleDB数据库为实现自主可控全面亮剑

天翼云开发者社区

面试官:对于宏任务和微任务,你知道多少?

是乃德也是Ned

JavaScript 面试 前端 ES6 Promise

Promise静态四兄弟,你学会了吗?

战场小包

JavaScript 前端 Promise 3月月更

【51单片机】独立按键控制LED灯(四种形式)

謓泽

3月月更

穿透、击穿、雪崩…Redis这么多问题,如何解决?

华为云开发者联盟

redis 缓存 缓存穿透 缓存击穿 缓存雪崩

优雅的编码习惯总是让人心情愉悦(Shell篇)

XinXing

Shell Code 优雅 脚本 规范

“养老”变“享老”,老龄人口高峰与养老产业爆发催生金融需求

易观分析

养老服务 养老金融

昆仑分布式数据库技术优势

KunlunBase昆仑数据库

分布式数据库 国产数据库

Linux之ss命令

入门小站

Linux

第九周作业

lv

Linux下C++后台服务器开发

Linux服务器开发

C/C++ 后端开发 Linux服务器开发 C++后台开发 Linux后台开发

主流移动端账号登录方式的原理及设计思路

WorkPlus

C++ 内存管理中内存泄漏问题产生原因以及解决方法

Linux服务器开发

C/C++ 内存管理 内存泄漏 Linux服务器开发 Linux后台开发

天翼云与龙芯完成产品兼容适配加速国产化云平台发展

天翼云开发者社区

黄东旭当选 CCF 数据库专业委员会、开源发展委员会、大数据专家委员会执行委员

PingCAP

如何高效完成ECS多环境部署?

阿里云云效

阿里云 云原生 开发 部署与维护 ECS

声网崩溃数据的自动化闭环处理

声网

自动化 测试 Dev for Dev

墨天轮国产数据库沙龙 | 胡津铭:时序数据库DolphinDB,从量化金融到万物互联

墨天轮

数据库 时序数据库 DolphinDB 国产数据库

应用环境能力 | 阿里巴巴DevOps实践指南

阿里云云效

阿里巴巴 阿里云 研发效能 开发

JavaScript 基础(一):语法和程序结构

devpoint

JavaScript 函数 数据类型 3月月更

史上最通俗,彻底搞懂字符乱码问题的本质

WorkPlus

CRM系统改善业务的方法

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 企业管理工具

为什么要选择昆仑分布式数据库?

KunlunBase昆仑数据库

国产数据库

恒源云(GpuShare)_加速pytorch训练的方法来喽~

恒源云

深度学习 PyTorch

昆仑分布式数据库技术特点

KunlunBase昆仑数据库

分布式数据库 国产数据库

昆仑分布式数据库架构介绍

KunlunBase昆仑数据库

数据库 分布式数据库

基于Kata Containers与iSulad的云容器实践解析_容器_华为云原生团队_InfoQ精选文章