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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介:   在大会前夕,高可用架构采访了本届 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 公有云容器服务【编者的话】是将容器部署到本地,还是云上,这是所有公司都会考虑的问题,这两者各有什么利弊呢,让我们逐一看看。
2136 0
|
8天前
|
Docker 容器
Docker cp 将宿主机上的文件复制到容器中
Docker cp 将宿主机上的文件复制到容器中
10 0
|
4天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
6天前
|
监控 Ubuntu Docker
如何在Docker容器启动时自动运行脚本
【8月更文挑战第13天】在Docker容器启动时自动运行脚本可通过以下方式实现:1) 使用`ENTRYPOINT`或`CMD`指令在Dockerfile中直接指定启动脚本,如`ENTRYPOINT ["/startup.sh"]`;2) 启动容器时通过`--entrypoint`参数指定脚本路径;3) 利用supervisor等进程管理工具自动启动与监控脚本,确保其稳定运行。确保脚本具有执行权限并正确设置依赖资源路径。
|
14天前
|
Shell 云计算 Docker
零基础到容器技术大神,一键解锁Docker实战秘籍!从零搭建,见证你的技术飞跃,让代码在云端翩翩起舞!
【8月更文挑战第5天】在云计算与微服务当道的今天,容器技术如汹涌浪潮般席卷IT领域。对新手而言,它或许充满神秘,但无须担忧,让我们一同揭开它的面纱。容器是一种轻量级软件打包技术,允许应用及其依赖被打包,在独立的虚拟环境中运行。Docker作为容器界的明星,简化了容器的创建与管理。从安装Docker开始,运行首个容器,深入容器内部执行命令,直至构建自定义镜像,我们将逐步掌握这项关键技术。这不仅是一场技术之旅,更是思维方式的革新,让我们携手探索未来。
56 6
|
16天前
|
运维 Ubuntu Shell
Docker命令宝典:解锁容器化技术的无限可能,从镜像管理到容器操作,全面解析与实战指南!
【8月更文挑战第3天】Docker简化了应用的部署与运行,掌握其基本命令对开发者和运维人员至关重要。通过`docker images`可查看本地镜像;使用`docker pull`拉取如最新版Ubuntu镜像;`docker rmi`用于删除不再需要的镜像。运行容器可通过`docker run`命令,结合`-it`等选项提供交互式环境。`docker ps`显示运行中的容器,加上`-a`则列出所有容器。`docker stop`和`docker start`分别用于停止和重启容器,而`docker rm`则删除容器。
44 5
|
20天前
|
弹性计算 Linux Docker
云服务器 ECS产品使用问题之如何进入Docker容器修改孵蛋时间
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
20天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之原PolarDB-X集群无法连接且Docker容器已经被删除,如何恢复数据
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
23天前
|
Shell 应用服务中间件 nginx
docker 服务,镜像,容器命令总结
docker 服务,镜像,容器命令总结
111 4