二、gVisor架构
gVisor的架构主要由以下三个组件构成:
- Runsc(Runtime Sandbox):一种运行时引擎,负责创建和销毁容器,是gVisor与容器生命周期管理交互的接口。
- Sentry:核心组件,负责处理容器内的系统调用。Sentry运行在用户空间,模拟Linux内核的行为,处理来自容器内部的系统调用请求。
- Gofer:负责文件系统的操作代理。所有的IO请求都会通过Gofer转发到宿主机上,从而实现文件系统操作的隔离和控制。
用户可通过Docker或containerd等容器引擎创建基于runsc的容器。容器进程的系统调用会被Sentry拦截处理,需要宿主机文件系统支持的操作会通过Gofer代理转发。
三、gVisor使用前置条件
内核要求:Linux 4.14.77+
Docker版本要求:Docker version 17.09.0及以上
系统架构要求: x86_64 和 ARM64
四、Docker中使用gVisor
1、安装runsc
下载最新版本runsc二进制文件,放到 PATH 环境变量目录下,如 /usr/local/bin
set -e
ARCH=$(uname -m)
URL=https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}
wget ${URL}/runsc ${URL}/runsc.sha512 \
${URL}/containerd-shim-runsc-v1 ${URL}/containerd-shim-runsc-v1.sha512
sha512sum -c runsc.sha512 \
-c containerd-shim-runsc-v1.sha512
rm -f *.sha512
chmod a+rx runsc containerd-shim-runsc-v1
mv runsc containerd-shim-runsc-v1 /usr/local/bin
方法一:
2、配置Docker daemon
编辑dockerd配置文件(如/etc/docker/daemon.json),新增以下配置:
{
"runtimes": {
"runsc": {
"path": "/usr/local/bin/runsc"
}
}
}
方法二:
2、执行install命令
/usr/local/bin/runsc install
3、重启dockerd使配置生效
systemctl restart docker
4、运行容器时指定 --runtime=runsc 参数,切换到gVisor runsc运行时
docker run --runtime=runsc --rm hello-world
验证
使用gvisor创建的容器,内核版本已经变为4.4
未使用gvisor创建的容器,内核版本已经变为3.10,与宿主机内核版本一致
五、containerd中使用gVisor
containerd通过插件形式支持runsc,需先安装配置runsc插件。
1、安装gVisor containerd shim
下载containerd-shim-runsc-v1并放到/usr/local/bin/目录。
2、生成containerd配置
containerd config default > /etc/containerd/config.toml
3、在 config.toml 的 [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes] 段添加:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
runtime_type = "io.containerd.runsc.v1"
4、重启containerd
sudo systemctl restart containerd
在 Pod 或容器运行时,将 runtimeClassName 指定为 runsc 即可。
六、Kubernetes结合gVisor使用
1、安装gvisor,可参考前面 在Docker中使用gVisor 的步骤
2、创建 RuntimeClass,指定gvisor作为runtime handler。
runtimeclass.yaml
apiVersion: node.k8s.io/v1
kind: RuntimeClass
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/11a79d6a67c5aed9a2372edc968eb7fe.png)
![img](https://img-blog.csdnimg.cn/img_convert/f32d1e48b2e50f27e47124135abbe2c3.png)
![img](https://img-blog.csdnimg.cn/img_convert/496e6eaba431d20d2167b4945bc1d032.png)
![img](https://img-blog.csdnimg.cn/img_convert/b841efd6def15af542dbae0c5e406abc.png)
![img](https://img-blog.csdnimg.cn/img_convert/9f562e65ac3236daa2f3ff53d8be9783.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**