文/云原生SIG

本篇文章我们将详细介绍怎么轻松在 Anolis OS 上使用 Kata Containers 安全容器,我们将介绍 Kata Container 社区于 2022 年 10 月 10 日最新发行的 Kata3.0.0 的安装部署方式,3.0.0 版本包含了基于袋鼠 RunD 开源的最新 Rust Kata runtime + 内置Dragonball 和Go runtime + VMM(本文默认安装了QEMU)两套架构。

目前社区计划在未来 1-2 年的时间内逐步由 Go Runtime 迁移至 Rust Runtime,Rust Kata runtime 是 Kata 社区未来的发展方向,在整体资源消耗、启动速度等方面都有明显优势,同时提供内置沙箱 Dragonball 进一步提高使用体验,目前还处于快速发展阶段。

本教程默认安装 Rust Kata Runtime + Dragonball,并会提供简易教程帮助您切换到Go Kata Runtime + QEMU,另外,我们提供的 Guest Kernel 基于龙蜥 OS, rootfs 基于专门为容器场景优化的 LifseaOS。

01

Kata Container 3.0.0 (Rust Runtime + Dragonball)

RunD 是龙蜥社区开源的下一代安全容器解决方案,相比于社区的 Kata 2.0 而言,RunD 最大的特点是提供了基于容器场景深度优化的内置 Dragonball 沙箱,减少了虚拟化外部依赖,带给用户开箱即用的优质体验。同时极大提升了整体容器的启动速度;其次通过引入全新的异步 Rust Runtime 机制,进一步降低 Kata 安全容器整体的资源开销。RunD 目前已开源成为 Kata Containers 社区上游 3.0 版本标准。之前文章里介绍了 Kata 3.0 背后的设计与思考,其中一体架构、轻量安全容器虚拟机 Dragonball、异步 Rust Runtime 等创新给 3.0 版本带来了低资源开销、极速启动速度、易于运维等优势。

目前,Kata 3.0.0 已经在社区发布第一个 Release 版本,用户可以在 Anolis 安装 Kata 3.0.0 来感受新版本的极速体验,我们也测得了 Kata3.0.0 + 内置 Dragonball 相比 Kata 2.4.3 + QEMU 的性能数据,给到各位更具体的提升效果。

Kata 2.4.3 + QEMU

Kata 3.0.0 + 内置Dragonball

100 容器串行启动时间

56s

35s

100 容器并行启动时间

3.7s

3.4s

100 容器并行启动内存消耗

18402764KB

9040992KB

*性能数据均在本教程中的部署环境中测试得到,测试时两个 Kata 使用相同 Guest Kernel 和 Rootfs 等配置。

1、部署环境

本教程中使用的是阿里云上购买的神龙弹性裸金属服务器,您也可以在本地物理机或其他云环境中部署 Kata Containers。

*物理机环境需要使能硬件虚拟化,虚拟机环境需要使能嵌套虚拟化。
内核版本:Linux 4.19
CPU:104 vCPU@3.8GHz
内存:192GB

2、安装 Kata3.0.0

龙蜥社区已经集成了 Kata Containers 最新 3.0.0 版本,推荐您使用龙蜥集成的软件包安装 Kata Container 3.0.0。龙蜥软件包会为您做好默认 Guest Kernel 配置、默认 Rootfs 配置、默认 Kata 配置,帮助您做到真正的开箱即用体验。

2.1 安装龙蜥 experimental 源

由于目前 Kata Container 3.0.0 在龙蜥源的 experimental repo 中,因此先需要安装龙蜥的 experimental repo。

yum install anolis-experimental-release

2.2 安装 Kata Containers 3.0.0

接着,可以在 Experimental repo 中安装 Kata Containers 3.0.0。

yum --enablerepo Experimental install kata-containers

以上两步即可安装好 Kata Containers 3.0.0,并且我们会为您做好如下默认配置,您可以使用它们即刻开始使用 Kata Container,也可以根据自己的需求进行调整:

  • Kata 默认配置

Kata Containers 3.0.0 安装后,默认配置会在 /usr/share/kata-containers/defaults/configuration.toml 且默认虚拟机管理器 VMM为Dragonball。

  • Guest Kernel 默认配置

默认 Guest kernel 路径:/usr/share/kata-containers/vmlinux.container

*默认安装的 guest kernel 是基于龙蜥 5.10 Cloud Linux 配合 Kata 社区推荐 5.10 内核参数制作而成。

  • rootfs 默认配置

默认 rootfs 路径:/usr/share/kata-containers/kata-containers.img

*默认安装的 rootfs 是基于专门为容器场景优化的 LifseaOS。

3、安装 Containerd

如果您的环境中没有 Containerd 或没有配置 Containerd 的 Kata 运行时支持,请您参考3、4节的内容。

3.1 安装 Containerd

yum --enablerepo Plus install containerd

4、配置 Containerd

当 Containerd 安装完成后,您需要修改 Containerd 配置来让 Containerd 可以找到 Kata 容器运行时。

4.1 生成默认 Containerd 配置

首先请您进入/etc/containerd路径,这里默认会存放 Containerd 的配置文件 config.toml。如果这个路径下没有配置文件或者配置文件是被全部注释的缺省状态,可以使用如下命令生成默认配置;如已经有完整配置,也可以直接跳到 5.2。

# 进入containerd配置目录并查看配置情况,若无配置或为全部注释,可以继续生成默认配置cd /etc/containerd/# 生成containerd默认配置containerd config default > /etc/containerd/config.toml

4.2 配置增加 Kata 容器运行时

接下来,您需要在 Containerd 配置中加入 Kata 容器运行时,从而让 Containerd 运作的时候可以找到 Kata。打开 5.1中 的 Containerd 配置并找到[plugins."io.containerd.grpc.v1.cri".containerd.runtimes],在其下加入新的runtime_type。

# 打开containerd配置并在# [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]# 下加入kata runtime的选择[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata]  runtime_type = "io.containerd.kata.v2"

为了让您更好理解如何修改配置,我们这边也给到一份修改完的配置截图,方便您参考。

同时,我们为您准备了一份 Containerd 配置文件示例供您进一步参考,您可点击此处下载:https://gitee.com/chao1997/kata-share/blob/master/config.toml

4.3 重启 Containerd

最后,重启 containerd 让配置生效。

# 配置完成,重启 containerd 即可systemctl restart containerd

恭喜您,到这一步跑起 Kata 容器的主要步骤已经完成,您后续可以自由地开始尝试 Kata,如果您想现在立即就有一个用例让 Kata 跑起来,请您继续往下看。

5、启动 Kata3.0.0 安全容器

5.1 获取 busybox 镜像

为了启动安全容器,我们首先需要获取到一个镜像。在这个教程里,让我们选用最基础的镜像 busybox 吧。

同时,您也可以选用各种你喜欢的 CLI 工具,例如 ctr、nerctl、crictl 等,在本教程中,我们使用了 Containerd 自带的 ctr。

ctr images pull docker.io/library/busybox:latest

5.2 启动 Kata 安全容器

接着,让我们使用 Kata 启动一个安全容器,并打出安全容器中的操作系统信息吧。

ctr run --runtime=io.containerd.kata.v2 --rm docker.io/library/busybox:latest kata-test uname -r

--runtime 用于指定容器运行时,--rm 代表我们创建好容器、容器运行完命令后会立即销毁容器, docker.io/library/busybox:latest 代表容器的镜像名,kata-test 代表容器的名称,最后 uname -r 是我们要在容器中运行的命令。

通过以上命令即可打出安全容器中的操作系统版本信息,您可以感受到安全容器内运行的 Guest OS 和 Host OS 的差异。

02

切换至 Go Runtime + QEMU

目前社区计划在未来 1-2 年的时间内逐步由 Go Runtime 迁移至 Rust Runtime,您如果在使用 Rust Kata Runtime 上遇到功能性问题可以先使用 Go Runtime,下面我们将介绍切换方法。

切换至 Go Runtime 的二进制文件

首先,进入 Kata Runtime 默认二进制安装路径。

cd /usr/local/bin

接着,用 Go Runtime 二进制文件替换 Rust Runtime 二进制文件。

# 遇到overwrite询问,都请回答ycp /usr/runtime-go/bin/* .

切换 Kata 配置到 QEMU 配置

进入 Kata 配置路径,并切换配置到 QEMU 配置。

# 进入配置路径cd /usr/share/defaults/kata-containers# 切换配置到QEMU配置ln -sf configuration-qemu.toml configuration.toml

通过以上两步,您已切换到 go runtime,您可以试着按教程中的 5.1 和 5.2 步骤来启动安全容器。

至此,您的第一个 Kata 3.0.0 安全容器就创建成功啦,您可以继续对 Kata3.0.0 展开更多探索,如果有遇到任何问题,欢迎到龙蜥云原生社区来和我们交流。

小贴士:请注意,安装包中的 kata-agent 是用于在虚拟机内启动服务和宿主机沟通的,在任何情况下请不要在宿主机上直接启动 kata-agent,可能会对您的机器产生破坏。

龙蜥云原生 SIG(Special Interest Group) 助力龙蜥企业用户完成云原生转型和升级;面向用户与企业提供云原生能力和组件支持,并与广大开发者一起构建具备竞争力的云原生技术,协助用户更快、更好地利用云原生技术构建应用集群。

龙蜥云原生 SIG 主页:

https://openanolis.cn/sig/cloud-native

—— 完 ——

实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?相关推荐

  1. Fedora和Red Hat Enterprise Linux实用指南(第6版)(套装上下册)火热上市!!!!

    亚马逊热卖地址: http://www.amazon.cn/Fedora%E5%92%8CRed-Hat-Enterprise-Linux%E5%AE%9E%E7%94%A8%E6%8C%87%E5% ...

  2. 如何在WordPress网站上轻松显示代码

    您想在WordPress博客文章中显示代码吗?如果您尝试添加常规文本代码,则WordPress将无法正确显示. 每次保存文章时,WordPress都会通过几个清理过滤器运行您的内容.这些过滤器用于确保 ...

  3. Happy Hacking!如何在Anolis OS中打造属于自己的Linux内核? | 征文活动

    龙蜥社区已启动主题为"2021 我与 OpenAnolis 龙蜥社区的那些事儿"征文活动!征文内容包括但不限于以下五类:使用评测.技术解读.经验分享.共建建议.知无不言. 优质文章 ...

  4. wordpress代码_如何在WordPress网站上轻松显示代码

    wordpress代码 Do you want to display code in your WordPress blog posts? If you tried to add code like ...

  5. mac os maven_如何在Mac OS上安装Maven

    mac os maven 在Mac上安装Maven (Install Maven on Mac) Maven is the most widely used build and project dep ...

  6. mac memcached_如何在Mac OS上安装Memcached Server

    mac memcached Memcached is an open-source high performance distributed memory object caching system. ...

  7. windows rt_如何在Windows RT上轻松将网站添加到Flash白名单

    windows rt Microsoft's Surface RT and other Windows RT-based machines include the Flash browser plug ...

  8. mac os mysql 命令_如何在Mac OS上安装“mysql”命令?

    通常命令是: /usr/local/mysql/bin/mysql -u root -p 这将提示您输入root密码(除非您更改密码,否则可能为空) 您还可以使用: /usr/local/mysql/ ...

  9. javaweb和ajax使用查询出来的数据做下拉菜单_区块链浏览器实用指南篇:利用链上数据把握减半行情...

    进入2020年,加密货币市场最热的话题当属"减半"了.在减半行情的推动下,以BTC为首的减半币种展现出了极强的上行趋势.如何抓住这一波行情,评估正确时机?当然,这个问题的答案可以说 ...

最新文章

  1. cocos2d-x 2.X for Android中需要使用OpenGL ES 2.0
  2. mysql 执行计划详解_mysql explain执行计划详解
  3. 摄像头poe供电原理_什么是POE供电,这种POE套装有什么优势呢?
  4. Form.php 日期表单,Bootstrap日期和时间表单组件使用方法
  5. [react] 在React中组件的props改变时更新组件的有哪些方法?
  6. python数据变更邮件提醒_如何使python脚本在某些数据更改时自动发送电子邮件?...
  7. centos装java配件_CentOS安装JAVA
  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-easyui构建前端页面框架[附源码]
  9. 2014年4月java程序设计,2014年4月 Java语言程序设计(一)试题答案.doc
  10. infiniband, fiber channel,RDMA
  11. idea64.exe.vmoptions 参数意义
  12. linux进入根目录的代码,Linux根目录+源代码目录
  13. ES文件浏览器局域网传输文件分析
  14. 图像辨识系统神经网络图,图像识别技术神经网络
  15. postgresql用户和角色
  16. illegal instruction
  17. 【实战项目惜时App需求分析说明书】Vue-cli3+Vant UI+Vue-element-admin+Egg.js+Mysql
  18. Linux分区命令-parted
  19. Linux 命令详解之df命令
  20. 如何查看线程的详细信息

热门文章

  1. 阿里巴巴字体图标怎么改变尺寸
  2. 足球网页设计制作 简单足球静态HTML网页作品 足球网页作业成品 学生体育运动足球网站模板
  3. GPS北斗时钟同步系统(网络时钟系统)组成及配置
  4. 使用物联网卡发送短信
  5. excel 置信区间 计算_如何用excel计算 95%的置信区间
  6. 手把手学会LoadRunner参数化【LoadRunner】
  7. R数据分析:跟随top期刊手把手教你做一个临床预测模型
  8. 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
  9. Springboot毕业设计毕设作品,心理评测系统 开题报告
  10. 教你如何使用WinCE CAB Manager制作PPC绿色软件