实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?
文/云原生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-release2.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 containerd4、配置 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.toml4.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:latest5.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 安全容器?
文/云原生SIG本篇文章我们将详细介绍怎么轻松在 Anolis OS 上使用 Kata Containers 安全容器,我们将介绍 Kata Container 社区于 2022 年 10 月 10 日最新发行的 Kata3.0.0 的安装部署方式,3.0.0 版本包含了基于袋鼠 RunD 开源的最新 Rust Kata runtime …...
如何锁定Word文档部分文字不被修改
我们知道,想要保护Word文档的内容无法随意更改,可以设置“限制编辑”的保护模式。 那如果实际工作中,只需要固定的一部分内容不能编辑,可以实现吗?答案是肯定的,今天就来说说如何设置Word文档部分文字可修…...
聊聊8万8的私董会,很扎心
聊聊8万8的私董会,很扎心 道几句真心话,很扎心,但也很现实。 如果你喜欢刷抖音,这种感觉应该会更加明显。 股市哀鸿遍野,实体一地鸡毛,我们办公室楼下的门面换了一波又一波。 别说那些不起眼的小生意&a…...
卷积网络与全连接网络的区别
问题卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络。全连接神经网络是具有多层感知器的的网络&a…...
【5000左右电脑配置清单】预算不高于5000,不带显示器的电脑配置清单推荐
由于本人是学生党经济有限,预算不高于5000元配一套电脑主机,说实话5000左右的电脑配置已经很好了,今天站长整理了几款配置给大家参考参考,更多电脑配置还请继续关注西安SEO优化站点! 配置1: <CPU> I5…...
在 4G 内存的机器上,申请 8G 内存会怎么样?
在 4GB 物理内存的机器上,申请 8G 内存会怎么样? 这个问题在没有前置条件下,就说出答案就是耍流氓。这个问题要考虑三个前置条件: 操作系统是 32 位的,还是 64 位的?申请完 8G 内存后会不会被使用&#x…...
JavaSE学习day9 集合(基础班结束)
1.ArrayList 集合和数组的优势对比: 长度可变 添加数据的时候不需要考虑索引,默认将数据添加到末尾 不能存基本数据类型。只能通过包装。 1.1ArrayList类概述 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 Ar…...
Python爬虫进阶 - win和linux下selenium使用代理
目录 Windows selenium配置 下载地址 Chrome Chromedriver 版本对应关系 实践测试 操作元素 浏览器操作 获取元素信息 鼠标操作 实战demo selenium添加代理 Linux selenium配置 检查服务器环境 下载安装第三方库(最简单版) 实践测试 代码…...
力扣-从不订购的客户
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:183. 从不订购的客户二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果总结前言…...
速来!掘金数据时代2022年度隐私计算评选活动火热报名中!
开放隐私计算 开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神,专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播,愿成为中国 “隐私计算最后一公里的服务区”。183篇原创内容公众号…...
Springboot @Test 给Controller接口 写 单元测试
前言 最近有小伙伴问到怎么给 controller的接口写单元测试。 单元测试是开发必不可少的一个环节。 既然有人问到了,那我觉得可能不止一个人不会,那就按照惯例,出手。 正文 内容: 主要是get 和 post 两种请求方式的接口 的 单元测…...
ISO 6721-1~12 ,塑料-电动机械性能的测定,2022更新
ISO 6721-1 :2019 Plastics - Determination of dynamic mechanical properties - Part 1: General principles ISO 6721-1 :2019 塑料 - 电动机械性能的测定. 第1部分:一般原理 ISO 6721-2 :2019 Plastics — Determination of dynamic mechanical properties — Part 2:…...
vue3.2中使用swiper缩略图轮播教程
介绍 在vue3 中使用 swiper 实现缩略图的轮播图效果,具体如下图所示: 使用 切换到项目终端 ,输入命令 npm install swiper --save , 进行安装在 main.js里,引入 swiper.css并使用,具体代码如下;import {createApp } from vue import App from ./App.vue import router…...
边玩边学,13个 Python 小游戏真有趣啊(含源码)
经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游…...
MySQL数据文件迁移(不关闭SELinux)
背景 日常实施中可能会出现在部署MySQL时未更改数据默认存储路径(默认:/var/lib/mysql),然而一般分配服务器的人只会给系统分区分配50G的空间,这导致后续空间不够用的情况,也就出现了需要迁移数据的问题。…...
uboot / linux添加/去除 版本号LOCALVERSION
背景 偶然的机会,在insmod驱动模块的时候,遇到报错: 查找原因,说是当前系统内核版本和模块编译使用版本不同! 使用如下命令查看当前系统内核版本: uname -r 使用modinfo命令(嵌入式设备没有此…...
2023北京养老展,北京养老展会,北京养老产业展览会
CBIAIE第十届中国(北京)国际老年产业博览会,8月28-30日在北京亦创国际会展中心举办; 预期效果:中国(北京)国际老年产业博览会China (Beijing) International Aged industry Expo(CB…...
华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】
使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12201821.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 分糖果 小明从糖果…...
带你彻底了解浮点型数据的存储
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰浮点型在内存的存储 🤔提示:数据类型的存储范围 &a…...
【牛客刷题专栏】0x0C:JZ4 二维数组中的查找(C语言编程题)
前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录前言问题…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
