前 言
k3s作为轻量级的Kubernetes发行版,运行容器是基本功能。VM的管理原本是IaaS平台的基本能力,随着Kubernetes的不断发展,VM也可以纳入其管理体系。结合Container和VM的各自优势,又发展出轻量级VM的理念,兼具容器的轻量特性,又有VM的隔离安全性,这其中kata-container是时下比较受关注的开源项目。那么轻量级的k3s和轻量级VM碰撞,又有怎样的效果,结合两者进行实践,谨以此文进行说明。
请注意,本文部署时使用的主要软件版本是:
k8s v1.17.2+k3s.1,kata-containers v1.9.3。
环境准备
kata-containers既可以在纯Docker上运行,也可以运行在Kubernetes中,但本文只关注Kubernetes场景。kubelet本身可以支持多种满足CRI接口的runtime,包括CRI-O和CRI-Containerd,Kubernetes的RuntimeClaas可以配置Pod使用那种运行时,创建容器时对应的runtime调用runc创建容器,创建VM时调用kata-runtime创建VM。kata-runtime支持多种形式的轻量VM,kata-qemu是默认支持选项,另外也可以使用firecracker(另一种MicroVM)。整体调用关系如下图所示:
无论哪种VM,KVM的支持是需要的,现在主流的MicroVM技术都