容器应该是公有云的一等公民——Hyper王旭访谈

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:   在大会前夕,高可用架构采访了本届 GIAC容器及虚拟化分论坛 出品人王旭,就目大家广泛关注的容器和虚拟化方面的问题进行了访谈。  王旭 Hyper Cofounder 与 CTO,HyperContainer 项目的最初作者,kata containers 项目 Arch committee 初始成员。曾就职于中国移动研究院,是大云项目最初核心成员之一,并负责协调中国移动云计算方面的开源与标准化工作。之后在盛大云计算负责弹性块存储服务。2022 年创立 Hyper 虚拟化容器项目,2021 年与 Intel 和 OpenStack foundation一起发起 kata contain

  在大会前夕,高可用架构采访了本届 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 大会有什么期望或者寄语?

  王旭:谢谢大会给的这个交流的机会,期待在会上认识更多的朋友,获得更多的灵感吧。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
存储 大数据 C++
本地容器服务 VS 公有云容器服务
本文讲的是本地容器服务 VS 公有云容器服务【编者的话】是将容器部署到本地,还是云上,这是所有公司都会考虑的问题,这两者各有什么利弊呢,让我们逐一看看。
2164 0
|
26天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
189 77
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
7天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
13天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
77 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
19天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
43 3
实战~如何组织一个多容器项目docker-compose
|
28天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
89 3
|
2月前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
67 12
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
108 7