docker容器,性能高,不安全;VM虛擬機,安全性好,性能損耗大;Kata Container輕量級虛擬機的容器,即安全,性能也高。
開源容器項目Kata Containers,旨在將虛擬機(VM)的安全優勢與容器的速度和可管理性統一起來。
Kata Container 是兩個現有的開源項目合並:Intel Clear Containers和Hyper runV。
Intel Clear Container項目的目標是通過英特爾®虛擬化技術(VT)解決容器內部的安全問題,並且能夠將容器作為輕量級虛擬機(VM)啟動,提供了一個可選的運行時間,專注於性能(<100ms啟動時間),可與Kubernetes 和Docker 等常用容器環境互操作。英特爾®Clear Container表明,安全性和性能不必是一個折衷,將硬件隔離的安全性與容器的性能可以兼得。
hyper runV優先於技術無關支持許多不同的CPU架構和管理程序。
安全:提供了隔離性以達到安全,兩個內核不會對擊
使用Docker輕量級的容器時,最大的問題就是會碰到安全性的問題,其中幾個不同的容器可以互相的進行攻擊,如果把這個內核給攻掉了,其他所有容器都會崩潰。如果使用KVM等虛擬化技術,會完美解決安全性的問題,但是會影響速度。
單單就Docker來說,安全性可以概括為兩點:
1. 不會對主機造成影響
2. 不會對其他容器造成影響
所以安全性問題90%以上可以歸結為隔離性問題。而Docker的安全問題本質上就是容器技術的安全性問題,這包括共用內核問題以及Namespace還不夠完善的限制:
1. /proc、/sys等未完全隔離
2. Top, free, iostat等命令展示的信息未隔離
3. Root用戶未隔離
4. /dev設備未隔離
5. 內核模塊未隔離
6. SELinux、time、syslog等所有現有Namespace之外的信息都未隔離
當然,鏡像本身不安全也會導致安全性問題。
系統架構
Kata Containers is Apache 2 licensed software consisting of six components: Agent, Runtime, Proxy, Shim, Kernel and packaging of QEMU 2.11. It is designed to be architecture agnostic, run on multiple hypervisors and plug seamlessly into the containers ecosystem.
Kata Containers Integration with Kubernetes
docker 默認使用 runC 創建容器,所以可以在kata container可以在docker container外面再包一層VM,實現安全性。
k8s 為pods創建服務的傳統方法是采用docker創建容器,由容器提供pods服務,但現在可以通過kata container創建VM,在VM中再創建pods服務,更安全。pods是一個或多個container。
學習資料:https://github.com/kata-containers/documentation
Katacontainers 與 Docker 或者 Kubernetes 進行集成: https://lingxiankong.github.io/2018-07-20-katacontainer-docker-k8s.html
hypervisor指的是一個大概念,硬件虛擬化,包括各種虛擬化方案。虛擬化有哪些分類?