目前的容器技术仍然有许多广为人知的安全挑战,其中一个主要的问题是,从单一共享内核获得效率和性能意味着容器逃逸可能成为一个漏洞。
所以在 2015 年,几乎在同一个星期,Intel OTC (Open Source Technology Center) 和国内的 HyperHQ 团队同时开源了两个基于虚拟化技术的容器实现,分别叫做 Intel Clear Container 和 runV 项目。而在 2017 年,借着 Kubernetes 的东风,这两个相似的容器运行时项目在中立基金会的撮合下最终合并,就成了现在大家耳熟能详的 Kata Containers 项目。 由于 Kata Containers 的本质就是一个精简后的轻量级虚拟机,所以它的特点,就是“像虚拟机一样安全,像容器一样敏捷”。
2018 年,Google 公司则发布了一个名叫 gVisor 的项目。gVisor 项目给容器进程配置一个用 Go 语言实现的、运行在用户态的、极小的“独立内核”。这个内核对容器进程暴露 Linux 内核 ABI,扮演着“Guest Kernel”的角色,从而达到了将容器和宿主机隔离开的目的。
KataContainers
首先,我们来看 KataContainers。它的工作原理可以用如下所示的示意图来描述。

Kata Containers 的本质,就是一个轻量化虚拟机。所以当你启动一个 Kata Containers 之后,你其实就会看到一个正常的虚拟机在运行。这也就意味着,一个标准的虚拟机管理程序(Virtual Machine Manager, VMM)是运行 Kata Containers 必备的一个组件。在我们上面图中,使用的 VMM 就是 Qemu。
Docker使用KataContainers
安装参考链接:https://github.com/kata-containers/documentation/tree/master/install/docker
首先节点需要支持以下四种任意一种cpu虚拟化技术:
- Intel VT-x technology
- ARM Hyp mode
- IBM Power Systems
- IBM Z manframes
如果部署在VMware虚拟机中,需要在宿主机开启嵌套虚拟化的功能,开启步骤见链接:https://blog.51cto.com/11434894/2389180?source=dra
安装kataContainer:
ARCH=$(arch)
BRANCH="${BRANCH:-master}"
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/xUbuntu_$(lsb_release -rs)/ /' > /etc/apt/sources.list.d/kata-containers.list"
curl -sL http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add -
sudo -E apt-get update
sudo -E apt-get -y install kata-runtime kata-proxy kata-shim
设置docker配置文件:
cat > /etc/docker/daemon.json << EOF
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOF
systemctl daemon-reload
systemctl restart docker
运行一个容器,可以看到显示的内核版本和宿主机是不一样的:
root@cr7-ubuntu:~# docker run busybox uname -a
Kubernetes使用kataContainer
配置containerd使用kataContainer:
cat > /etc/containerd/config.toml << EOF
disabled_plu

本文介绍了KataContainers和gVisor两种容器技术,KataContainers通过轻量化虚拟机提供安全保障,gVisor则利用用户态内核隔离容器。文章详细讲述了这两种技术的工作原理及如何在Docker和Kubernetes环境中进行配置。
最低0.47元/天 解锁文章
376

被折叠的 条评论
为什么被折叠?



