Kata Containers作为沙箱容器,如何实现安全运行?

摘要:以沙箱的方式运行容器:安全容器Kata Containers,Kata Containers,安全容器,gVisor,Kata Containers 的本质,就是一个轻量化虚拟机,Gvisor与Kata区别对比,配置docker使用kata
目录一.系统环境二.前言三.Kata Containers 简介四.Gvisor与Kata区别对比五.配置docker使用kata作为runtime5.1 安装docker5.2 安装kata5.2.1 在线安装(不推荐,下载非常慢)5.2.2 使用rpm包离线安装(推荐)5.3 配置docker支持kata作为runtime5.4 docker使用kata作为runtime创建容器六.配置containerd使用kata作为runtime6.1 安装containerd6.2 安装kata6.3 配置containerd支持kata作为runtime6.4 containerd使用kata作为runtime创建容器七.在k8s环境里,配置containerd作为高级别runtime,containerd使用kata作为低级别runtime7.1 把ubuntuk8sclient节点加入k8s集群7.2 配置kubelet使其支持Kata7.3 创建容器运行时类(Runtime Class)7.4 使用kata创建pod八.总结 一.系统环境 本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 Kata软件版本 containerd软件版本 CPU架构 Ubuntu 18.04.5 LTS Docker version 20.10.14 v1.22.2 1.11.5 1.6.4 x86_64 Kubernetes集群架构:k8scludes1作为master节点,k8scludes2,k8scludes3作为worker节点。 服务器 操作系统版本 CPU架构 进程 功能描述 k8scludes1/192.168.110.128 Ubuntu 18.04.5 LTS x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点 k8scludes2/192.168.110.129 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 k8scludes3/192.168.110.130 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 二.前言 容器技术因其轻量级、可移植和易于管理的特点而受到广泛欢迎。然而,传统容器技术在安全方面存在一定的缺陷。为了解决这些问题,安全容器技术应运而生。本文将重点介绍一种名为 Kata Containers 的安全容器解决方案。另外一种安全容器为gVisor,相关详细操作请查看博客《以沙箱的方式运行容器:安全容器gvisor》。 安全容器是一种运行时技术,为容器应用提供一个完整的操作系统执行环境,但将应用的执行与宿主机操作系统隔离开,避免应用直接访问主机资源,从而可以在容器主机之间或容器之间提供额外的保护。 以沙箱的方式运行容器的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Ubuntu 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/17632858.html。 三.Kata Containers 简介 Kata源自希腊文Καταπστευμα(ka-ta-PI-stev-ma),原意是值得信任的人,kata container正是解容器安全的问题而诞生的。传统的容器是基于namespace和cgroup进行隔离,在带来轻量简洁的同时,也带来了安全的隐患。事实上容器虽然提供一个与系统中的其它进程资源相隔离的执行环境,但是与宿主机系统是共享内核的,一旦容器里的应用逃逸到内核,后果不堪设想,尤其是在多租户的场景下。Kata就是在这样的背景下应运而生,kata很好的权衡了传统虚拟机的隔离性、安全性与容器的简洁、轻量。这一点和firecracker很相似,都是轻量的虚拟机。但是他们的本质的区别在于:kata虽然是基于虚机,但是其表现的却跟容器是一样的,可以像使用容器一样使用kata;而firecracker虽然具备容器的轻量、极简性,但是其依然是虚机,一种比QEMU更轻量的VMM,暂时不能兼容容器生态。
阅读全文