都说用了Kata Containers会对容器安全方案有很大影响,本周就通过实践来看看啥情况,
先安装Kata Containers环境,ubuntu18.04,
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/releases:/x86_64:/master/xUbuntu_$(lsb_release -rs)/ /' >> /etc/apt/sources.list.d/kata-containers.list",
curl -sL https://download.opensuse.org/repositories/home:/katacontainers:/releases:/x86_64:/master/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add -,
sudo apt update,
sudo apt install kata-runtime kata-proxy kata-shim,
安装docker和qemu,sudo apt install docker.io qemu,
更改docker的配置,默认runtime是runc,可以指定kata为runtime,
{
"default-runtime": "runc",
"runtimes": {
"kata": {
"path": "/usr/bin/kata-runtime"
}
}
}
重启docker服务,
sudo systemctl daemon-reload,sudo systemctl restart docker,
下载我做实验最喜欢的docker镜像,
docker pull rastasheep/ubuntu-sshd:14.04,
启动runc的实例,
docker run -d -P --name sshd-runc rastasheep/ubuntu-sshd:14.04,
启动kata的实例,
docker run --runtime=kata -d -P --name sshd-kata rastasheep/ubuntu-sshd:14.04,
查看kata的实例,sudo kata-runtime list,
查看qemu进程,ps ax | grep qemu,
查看docker实例,docker ps,
查看实例进程id,docker inspect -f {{.State.Pid}} sshd-runc,
nsenter通过进程id查看容器实例信息,
网卡信息,sudo nsenter -m -u -i -n -p -t 17379 ifconfig,
操作系统信息,sudo nsenter -m -u -i -n -p -t 17379 uname -a,
进程信息,sudo nsenter -m -u -i -n -p -t 17379 ps -aux,
文件信息,sudo nsenter -m -u -i -n -p -t 17379 ls,
socket信息,sudo nsenter -m -u -i -n -p -t 17379 cat /proc/net/tcp,
通过以上实验证明,
runc的情况下,nsenter都能正常获取到容器实例的信息,
kata的情况下,nsenter基本上都不能正常获取到容器实例的信息(网卡信息除外),
想要正常获取到kata容器实例的各种信息,只能进入容器实例内部获取,
docker exec -it sshd-kata /bin/bash,
本周的实践就到这里,下周实践k8s用kata,欢迎关注。
本文始发于微信公众号(云计算和网络安全技术实践):Kata Containers的实践(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论