在大会前夕,高可用架构采访了本届 GIAC容器及虚拟化分论坛 出品人王旭,就目大家广泛关注的容器和虚拟化方面的问题进行了访谈。
王旭 Hyper Cofounder 与 CTO,HyperContainer 项目的最初作者,kata containers 项目 Arch committee 初始成员。曾就职于中国移动研究院,是大云项目最初核心成员之一,并负责协调中国移动云计算方面的开源与标准化工作。之后在盛大云计算负责弹性块存储服务。2022 年创立 Hyper 虚拟化容器项目,2021 年与 Intel 和 OpenStack foundation一起发起 kata containers 项目。同时也是一位 Linux, 云计算、大数据等领域的作/译者。
高可用架构:你们当初是如何想到要做 HyperContainer 这样一个项目的?到后来的 Kata Container,它们是什么样的关系? 可否简单给大家解释下,虚拟化容器和虚拟机以及容器有什么关系和差异?
王旭:首先说缘起,当 Docker 开始崛起的时候,很多人都意识到,这并非传统意义上的容器(Linux Container),而是代表了一种新的应用封装方式——将应用所依赖的所有用户态内容完整打包,从而使之具有极强的自完备性。正如 Docker 的座右铭“Build, Ship, Run” 所谕示的,这是一个自完备的运维流程,摆脱了应用部署对操作系统环境的依赖,也极大降低了 DevOps 的复杂度。这一方面让运维的工作被极大简化,因而收到追捧,另一方面对传统运维又有很强的颠覆性,从而带来一系列震动。
毫无疑问,作为一种应用容器技术,Docker 所代表的是未来的方向,而同时,云是另一个“大势所趋”,所以自然地,在云上运行容器也将是众望所归的。让容器成为一等公民跑上云,这之中还缺少的一环就是隔离性,容器和宿主机之间的交互界面是操作系统 ABI,这一方面非常通用化,另一方面却使得攻击面过宽(Linux 有超过300个系统调用),从而使得人们无法承担这之中的安全风险。加固容器固然是一种思路,但本身从方法论上来说有一定困难,我们尝试了另一种思路——用虚机来做一种容器,只要在另一方面优化到足够的性能,就可以起到隔离的容器的效果,这就是 HyperContainer。
与 Hyper 同时,intel 在同一个星期(2021年5月)也发布了他们的类似项目 clear container,从此两个项目彼此独立发展了两年,在这两年中,彼此借鉴了一些对方的长处,clear container 甚至在后来使用了 hypercontainer 的虚机中的 agent —— hyperstart。最终,在2022年年底的 KubeCon 上,我们宣布把两个项目合二为一,成为 KataContainers,也方便用户采纳虚拟化容器技术。
在这里,虚拟化容器是使用虚拟机技术来承载的容器,并未像传统虚机一样运行完整的操作系统。从系统管理员看,它们是虚拟机,而从应用来看,它们就是普通的容器。
高可用架构:Google 前一段时间发布了 gVistor,也是基于虚拟化技术的容器,它和 Kata Container 是竞争对手吗?二者的特性以及架构上有什么异同?
王旭:先说异同,gVisor 并不完全是基于虚拟化技术的容器,它也可以不基于虚拟化技术。它的机制是利用 syscall 拦截、独立 kernel 进行 syscall 处理、过滤,并将部分 syscall 交给宿主机执行。也就是说,gVisor 作为一个容器,它向应用提供的接口是 Linux ABI (gVisor 独立实现了大约2/3的 syscall,尽量和 linux 内核兼容),而向宿主方面,则会有六十多个 Linux syscall。也就是说它的核心是 syscall 的翻译、处理和转移执行。相对于 Kata Containers
gVisor 在资源管理的动态性上有先天优势,因为它的内存管理是交给宿主来完成的。
Kata Containers 在对 image 的兼容性、通用性方面有先天优势,因为 gVisor 并没有一个真的 Linux 内核。
对于 syscall 比较多的应用,比如 IO 繁重的应用,gVisor 的 syscall 捕获工作方式会带来一定的开销,具体开销的大小由使用的捕获方式决定。
可以看到,两种技术侧重点并不重叠,但 gVisor 带来的好处是让更多的人认识到,容器的隔离性开始有了更多成熟的解决方案,容器可以开始成为多租户环境的一等公民了。因此,我们是非常乐于见到更多的隔离容器技术出现的,所以,在gVisor 官方博客中,我给了这些祝福语——Hyper 非常高兴看到 gVisor 这样全新的提高容器隔离性的方法。行业需要一个强大的安全容器技术生态系统,我们期待通过与 gVisor 的合作让安全容器成为主流。
高可用架构:KubeCon Europe 2022 刚刚结束,你觉得有哪些新的亮点可以和大家分享的?
王旭:KubeCon 中,实际上我们用了很多时间来和 gVisor 团队、Kubernetes Node 团队进行了面对面的沟通,更多了解彼此的优势、期望,这些已经在上面的回答中提现了。这次峰会中,我们看到容器环境的隔离性得到了前所未有的重视,也看到 Kubernetes 作为一个平台,对定制化、插件化的支持日臻完善,Kubernetes 正在成为一个更加成熟和完善可依赖的生态系统。
高可用架构:Serverless 是云计算领域的一个新热点,你如何看待 Serverless 以及它和容器的关系?如果 Serverless 逐渐普及,容器变成 Serverless 后面的支撑,对开发者透明,对容器会有什么影响?
王旭:简单地说,就我所见,Serverless 是大家追求的一种学历证服务端应用的部署方式,service without server,从 PaaS 到 Serverless 是一脉相承的。而目前所见,对 Serverless 支持最好的技术就是容器——轻便快速,且开发部署方便,目前又有很好的平台支持。
容器技术应该说不会完全走向幕后,就像是虚机乃至物理机的使用都不会就此消失一样,然而,走向幕后并不意味着黯然落幕,正如泛在计算的先贤 Mark Weiser 在 1991 年展望 21 世纪的计算技术时所说——“The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it.” (那些消失不见的技术才是最卓越的技术,因为他们已经深深融入到我们的消费社区日常生活之中,以至于我们无法从中寻出踪迹。)
高可用架构:容器刚出现时,有容器和虚拟机之争。到现在,容器本身已经吸纳了虚拟化技术,下一步会如何发展?容器以及 Kubernetes 技术的发展是否会动摇以传统虚拟机技术为基础的公有云的地位?
王旭:我个人认为,以容器为一等公民的公有云应用将逐渐扩大,并成为公有云的主流技术之一,但是,是以直接的容器运行方式,还是以 serverless 的方式,乃至其他方式展现给用户,仍然要看整个产业发展的情况而定。而当前容器技术和虚拟化技术,乃至更多的隔离技术将会逐渐融合、互相影响,最终构成完成的容器图谱(spectrum),更好的适应不同的场景。
高可用架构:最近看到发布了 Hyper Pi hyper.sh/pi/, 能否简单介绍一下这个服务?它相当于一个公有的 Kubernetes 服务?和现有的公有 Kubernetes 服务有什么区别?看起来是用户不需要关心 node,是否可以理解成所有用户共享一个多租户的 Kubernetes 集群?
王旭:我们把 Hyper Pi 叫做 Serverless Kubernetes,取的是 Serverless 最初和 lambda 一起被提出的时候的愿意—— service without server,也就是说,用户使用服务,但不需要拥有(租赁)并管理服务器,正如你描述的那样,用户不关心 node,只使用服务就可以了。目前 Pi 提供的是一个 Kubernetes API 的以 Pod/Service 为核心的子集,不过将来会逐步拓展。
相对于最初的 hyper.sh,Pi 一方面转而提供目前已经更加成熟的 Kubernetes API,操作也以 Pod 为中心,允许用户在同一个 Pod 之中运行多个 container;另一方面,随着我们对运行时技术的改进,我们不再自己维护 IDC 中的物理机,转而将平台建在了 Google Cloud 之上,未来还会拓展到其他云上。这一改变让我们的服务具有更好的弹性、更能利用上已有云服务商的网络接入条件,而对于在各大公有云上存储数据的用户来说,这也加速了他们的访问。
最后,所有用户共享多租户的 Kubernetes 集群,这没有错,确实如此,而且实际上原来的 hyper.sh 虽然提供的 docker API,实际上也是由多租户的 Kubernetes (我们称之为 Hypernetes)来驱动的。
高可用架构:以你自己的工作以及创业的经验来看,以开源方式创业有什么优缺点或者差异?有什么经验想给大家分享?
王旭:开源创业在很大程度上只是创业的一种方式,既然是创业,技术、产品、市场都需要考虑,都需要付出,大家并没有太大差别,开源并不比其他有什么显著的优越性或特别的地方。如果说有什么差异性的话,开源的圈子里,大家更加透明一些,不管是招人、了解项目还是社交圈子,都彼此更容易深入了解一些,从而在技术圈更容易交流一些,作为硬币的另一面,因为比较透明,所以,商业方面就需要多费脑筋想出差异化和特别之处了。
高可用架构:对 GIAC 大会有什么期望或者寄语?
王旭:谢谢大会给的这个交流的机会,期待在会上认识更多的朋友,获得更多的灵感吧。