实用指南:如何在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: 目录前言问题…...
逆向工程实现原理深度解析:Hook技术高效突破百度网盘macOS版系统限制
逆向工程实现原理深度解析:Hook技术高效突破百度网盘macOS版系统限制 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS BaiduNetdiskPlugin-m…...
G-Helper风扇控制完全指南:轻松解决华硕笔记本散热异常问题
G-Helper风扇控制完全指南:轻松解决华硕笔记本散热异常问题 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...
JeecgBoot中AutoPoi模板导出的实战技巧与优化方案
1. JeecgBoot中AutoPoi模板导出的基础实现 第一次接触JeecgBoot的AutoPoi模板导出功能时,我被它的便捷性惊艳到了。相比传统的POI操作,AutoPoi通过模板化的方式让Excel导出变得异常简单。这里先分享下最基本的实现步骤,这也是我项目中最常用的…...
PySimpleGUI V5付费升级初体验:从免费到许可,开发者如何平滑过渡?
1. 当程序突然弹窗要License Key时 那天下午同事跑来找我,说我的工具弹出一个从没见过的窗口,要求输入什么License Key。我第一反应是代码被篡改了?仔细一看才发现是PySimpleGUI自动更新到了V5版本。这个突如其来的变化让我想起很多开源项目商…...
编译原理不再难:借助快马AI生成交互式示例,轻松入门语法分析
编译原理不再难:借助快马AI生成交互式示例,轻松入门语法分析 刚开始学习编译原理时,最让我头疼的就是语法分析这部分。那些抽象的文法规则、递归下降、LL(1)分析等概念,光看理论总觉得云里雾里。直到我尝试用InsCode(快马)平台做…...
别再只杀进程了!挖矿病毒XMRig的完整清除与溯源指南(附config.json钱包地址分析)
深度对抗XMRig挖矿病毒:从清除到溯源的实战手册 发现任务管理器里反复出现的xmrig.exe进程?别急着再次点击"结束任务"——这就像用创可贴处理骨折,治标不治本。作为处理过数百起挖矿事件的安全工程师,我总结了一套从内…...
PyTorch 2.8 GPU算力优化部署教程:RTX 4090D显存利用率提升至92%
PyTorch 2.8 GPU算力优化部署教程:RTX 4090D显存利用率提升至92% 1. 环境准备与快速验证 在开始深度学习项目前,确保你的硬件配置符合以下要求: 显卡:NVIDIA RTX 4090D 24GB显存驱动版本:550.90.07或更高系统内存&a…...
通过精准电源管理延长Apple Silicon Mac电池寿命的解决方案
通过精准电源管理延长Apple Silicon Mac电池寿命的解决方案 【免费下载链接】Battery-Toolkit Control the platform power state of your Apple Silicon Mac. 项目地址: https://gitcode.com/gh_mirrors/ba/Battery-Toolkit 你是否注意到,新买的MacBook Pro…...
手把手教你用HuggingFace+BGE模型搭建本地向量检索系统(附FAISS实战代码)
从零构建基于BGE模型的本地语义搜索系统:代码级实践指南 在信息爆炸的时代,如何快速从海量文本中精准找到相关内容?语义搜索技术正成为解决这一痛点的利器。不同于传统的关键词匹配,语义搜索能理解查询背后的意图,找到…...
如何永久保存微信聊天记录:WeChatMsg本地化解决方案
如何永久保存微信聊天记录:WeChatMsg本地化解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatM…...
