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

news2025/2/26 18:56:11

文/云原生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

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AAAI 2023 | 小鹏汽车纽约石溪:在末层激活上作对抗训练的域自适应

原文链接:https://www.techbeat.net/article-info?id4602 作者:吕骋 增强未标记目标域数据的模型预测置信度是无监督域自适应(UDA) 的一个重要目标。在本文中,作者探讨了末层激活(即最后一层线性分类层输入…

以假乱真的手写模拟器?

前些时候给大家推荐了一款word插件叫做“不坑盒子”,这款盒子不仅方便了word的操作,还附带了手写模拟器这样的效果只是在使用的时候不仅需要手动下载字体,而且效果也并不是太理想。 今天小编找到了一款软件--手写模拟器,不仅一键生…

木鱼cms系统审计小结

MuYuCMS基于Thinkphp开发的一套轻量级开源内容管理系统,专注为公司企业、个人站长提供快速建站提供解决方案。 ​​ ‍ 环境搭建 我们利用 phpstudy 来搭建环境,选择 Apache2.4.39 MySQL5.7.26 php5.6.9 ,同时利用 PhpStorm 来实现对项目的调试 ​…

求数组中的第k小元素

文章目录第k小的元素🔒题目💡分析🔑题解🍃不去重版🍃去重版第k小的元素 🔒题目 题目来源:3533. 查找第K小数 - AcWing题库 💡分析 不去重版思路:去重版思路&#xff1a…

华为OD机试 - 斗地主(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

一、【cas搭建单点登录】使用cas搭建单点登录服务器

使用cas搭建单点登录服务器 环境要求 JDK 8CAS 5.2tomcat 8 选用5.x的cas版本是应为要是jdk1.8的版本。 cas版本jdk版本5.x86.x117.x17 模板下载 目前cas的官方文档中,cas官方模板分成了5个大类。cas-sso-server 模板下载地址。 在cas的官方模板库中&#xff…

2023年2月22日PMP®项目管理认证课程正式开课

PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP认证定为项目经理人必须取得的重要资质。 PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。…

微服务之Eureka

🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 &#x1…

【虚拟机】VirtualBox Host-Only + 主机网络共享配置

文章目录创建Host-Only虚拟机配置主机配置其它工作中经常会使用到虚拟机进行各种技术的试验,之前为了省事常用桥接模式,可是我经常变换办公地点,每个办公地点的局域网网段并不一样,所以我采取了仅主机模式网络共享这种方式&#x…

34-Golang中的结构体!!!

Golang中的结构体结构体和结构体变量(实例)的区别和联系结构体变量(实例)在内存中的布局如何声明结构体字段/属性注意事项和细节说明创建结构体实例的四种方式结构体使用细节结构体和结构体变量(实例)的区别和联系 1.结构体是自定义的数据类型,代表一类事物2.结构体…

C++项目——高并发内存池(3)--central cache整体设计

1.central cache的介绍 1.1框架思想 1.1.1哈希映射 centralcache其实也是哈希桶结构的,并且central cache和thread cacha的哈希映射关系是一致的。目的为了,当thread cache某一个哈希桶下没有内存块时,可以利用之前编写的SizeClass::Index…

论文解读 | [CVPR2019] 基于自适应文本区域表示的任意形状场景文本检测

目录 1 研究背景及意义 2 总体设计 3 方法论 3.1 自适应文本区域表示 3.2 文本建议 3.3 建议改进 4 损失函数 5 实验及结果 1 研究背景及意义 现有的场景文本检测方法使用固定点数的多边形来 表示文本区域。例如,水平文本使用2个点(左上/右下)表示文本区域&…

LinkedList正确的遍历方式-附源码分析

1.引子 记得之前面试过一个同学&#xff0c;有这么一个题目&#xff1a; LinkedList<String> list new LinkedList<>();for (int i 0; i < 1000; i) {list.add(i "");}请根据上面的代码&#xff0c;请选择比较恰当的方式遍历这个集合&#xff0c;并…

七天实现一个分布式缓存

目录教程来源目的思路缓存淘汰(失效)算法&#xff1a;FIFO&#xff0c;LFU 和 LRUFIFO(First In First Out)LFU(Least Frequently Used)LRU(Least Recently Used)实现Lru查找功能删除新增/修改测试单机并发缓存主体结构 Group回调 GetterGroup 的定义Group 的 Get 方法HTTP 服务…

【C++】空间配置器

空间配置器&#xff0c;听起来高大上&#xff0c;那它到底是什么东西呢&#xff1f; 1.什么是空间配置器&#xff1f; 空间配置器是STL源码中实现的一个小灶&#xff0c;用来应对STL容器频繁申请小块内存空间的问题。他算是一个小型的内存池&#xff0c;以提升STL容器在空间申…

AI 生成二次元女孩,免费云端部署(仅需5分钟)

首先需要google的colab&#xff0c;免费版本GPU有额度。其次&#xff0c;打开github网站&#xff0c;选择一个进入colab,修改代码 !apt-get -y install -qq aria2 !pip install -q https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.16/xforme…

webstom找不到vue全局组件

我真多服气&#xff0c;引入了自动组件注册 // 自动引入组建import { ElementPlusResolver } from unplugin-vue-components/resolversComponents({directoryAsNamespace: true,resolvers: [ElementPlusResolver()]}),生成了 components.d.ts 但是我在webstom中定义了标签 除非…

2023从0开始学性能(1) —— 性能测试基础【持续更新】

背景 不知道各位大佬有没遇到上面的情况&#xff0c;性能这个东西到底是什么&#xff0c;还是以前的358原则吗&#xff1f;明显并不是适用于现在了。多次想踏入性能测试门槛都以失败告终&#xff0c;这次就以系列的方式来督促自己真正踏进性能测试的门槛。 什么是性能测试 通…

九龙证券|机制改革激发转融券活力 全面注册制释放两融展业新空间

在全面注册制准则规矩正式发布的同时&#xff0c;修订后的转融通事务规矩也应约与商场碰头。2月17日&#xff0c;中证金融发布《中国证券金融公司转融通事务规矩&#xff08;试行&#xff09;&#xff08;2023年修订&#xff09;》等规矩&#xff08;简称“转融通新规”&#x…

操作系统(day12)-- 虚拟内存;页面分配策略

虚拟内存管理 虚拟内存的基本概念 传统存储管理方式的特征、缺点 一次性&#xff1a; 作业必须一次性全部装入内存后才能开始运行。驻留性&#xff1a;作业一旦被装入内存&#xff0c;就会一直驻留在内存中&#xff0c;直至作业运行结束。事实上&#xff0c;在一个时间段内&…