带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.6容器服务与弹性容器实例(五)

简介: 《弹性计算—无处不在的算力》第三章:计算产品和技术3.6容器服务与弹性容器实例(五)

3. 安全沙箱技术

众所周知,虽然内核的namespace cgroup 技术有很强的隔离能力,但是内核是一个很大很复杂的系统,因此基于独立内核的容器技术(如 Docker)是不够安全的,很难从根本上彻底保证云上多租户安全,进而需要更好的隔离。业界主要有四种方法来实现这种隔离,如图3-83 所示。


第一种方法是最简单和直接的,就是把容器放在虚拟机里运行,这种方式不需要对软件栈做改动,只是让同一个用户的容器运行在自己的虚拟机里,但这样除了有额外的开销和不够高效,还有两层的维护复杂度。

第二种方法是MicroVM,仍然使用虚拟化技术来实现安全隔离,但是它的出发点是针对容器场景实现轻量化的虚拟机,并且实现运行时无缝对接容器生态,在保证兼容性的前提下尽量降低运行时和维护开销,并保证原生容器的用户体验。Kata Containers 就是一个MicroVM 方案。首先,对应用来说, 这是一个兼容runC 的容器运行时引擎,可以被Kubernetes 通过containerd/ CRI-O 调用,可以直接运行任何Docker 镜像或OCI 镜像。但与runC 不同的是,它使用了硬件虚拟化技术,直接面对用户应用的不再是宿主机的独立内核,而是一个装在轻量级虚拟机里的内核,即使有未知的安全漏洞导致这个内核被攻击,攻击者仍然无法轻易突破虚拟化技术构建的沙箱。Kata 的思路很不错,但是目前还在迭代完善中。

第三种方法基于进程虚拟化,使用一个特定的内核来提供Linux ABI,直接虚拟化进程的运行环境。Google gVisor 就是这样的进程虚拟化方案,实现了一个新的内核并努力去补齐和兼容Linux 的系统调用。这种方法的问题是很难做到Linux 的全兼容,无法支持部分应用。

第四种方法基于Unikernel/LibOS, 让应用带上自己的内核,好处在于简化的LibOS 有更小的开销和攻击面,但是妨碍它被更广泛应用的问题在于它往往需要修改应用,只适合比较特定的应用场景。

image.png

3-83  多租户隔离方法

综合来看,MicroVM 在兼容性和成熟度上更好,是业界下采用的主流方法。阿154


里巴巴对这些技术方向都进行了研究和探索,并且结合阿里云的

里巴巴对这些技术方向都进行了研究和探索,并且结合阿里云的场景,对相关技术进行了融合和创新,帮助ECI 等阿里云产品在轻量化、启动时间和性能等方面构建起业界领先的竞争力。

4. Virtual Kubelet 技术

Virtual Kubelet 最初是由微软 Azure 发起的开源项目,目标是让公共云的弹性容器实例类产品能与 Kubernetes 更好地集成,实现 Kubernetes Serverless 能力。在实现上, Virtual Kubelet 提供了一种机制,可以与多家不同的供应商集成,如 Azure ACIAWS fargate、华为的 CCI

Virutal Kubelet 启动时会伪装成一个Kubelet 计算节点,即虚拟节点(Virtual Node),向 Kubernetes API Server 发起注册,并持续监听 Pod 变化事件。当Kubernetes Pod 调度到虚拟节点上时,Virtual Kubelet 会调用provider API 接口,将创建请求动态转发给底层的provider API 接口。在阿里云的Serverless Kubernetes 中, Virtual Kubelet Serverless Kubernetes ECI 的连接器。如图 3-84 所示。

image.png

3-84  Virtual Kubelet 起到连接器的作用

5. 弹性伸缩技术

Kubernetes 开源的弹性伸缩技术是根据HPAHorizontal Pod Autoscaler)的伸缩条件,动态地购买或销毁虚拟机实例,来实现计算节点资源的水平扩缩容的。它的缺点在于弹性伸缩效率受限于虚拟机弹出和接入集群的效率,在虚拟机弹出后还需要启动操作系统,以及Docker Daemon Kubelet 等服务,并最终接入Kubernetes 集群, 整个过程耗时较长。

而阿里云自研的Virtual Kubelet Autoscaler,简称VK-Autoscaler,采取的是完全不同的弹性伸缩方法。它能动态地将扩容请求转到Virtual Kubelet 上,无须启动任何新的计算节点,直接在阿里云海量的资源池之上扩容出新的容器实例,从而更快地满足业务对弹性的诉求。

在一个部署了Virtual Kubelet 的托管版Kubernetes 中,Virtual Kubelet Autoscaler 的工作原理如图3-85 所示。Kubernetes 在调度时,因为没有指定容忍度(Tolerations), 所以不会考虑虚拟节点,而是尝试在已有 ECS 节点中调度。当资源不足时,会报没有满足条件的节点错误事件,VK-Autoscaler 捕获这个事件后,把对应 Pod 重新调度到节点上,Virtual Kubelet 将请求转发给ECI 并完成Pod 的创建。

image.png

3-85  Virtual Kubelet Autoscaler 工作原理

这样做的好处在于可以充分利用每台ECS 的处理能力,最大化地提升ECS ECI 的资源利用率。由于ECI 按秒计费,所以对于有明显的波峰波谷特征的业务,即

通过托管模式Managed Kubernetes 在包年包月的ECS 上运行时的在线业务而言,是性价比很高的解决方案。而在遇到突发的业务流量时,通过Virtual Kubelet Autoscaler 将峰值压力分摊到ECI 实例上,以削峰填谷。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
弹性计算 中间件 大数据
什么是容器计算服务 ACS?
全球首款容器计算服务ACS(Alibaba Cloud Container Compute Service)
1284 2
|
Kubernetes 虚拟化 Docker
容器:现代计算的基础设施
容器:现代计算的基础设施
343 4
Job类日志采集问题之ECI产品采集方式对于弹性扩缩容是如何支持的
Job类日志采集问题之ECI产品采集方式对于弹性扩缩容是如何支持的
|
运维 Kubernetes Serverless
全球首款容器计算产品重磅发布,激活上云用云新范式
2023年10月31日,杭州云栖大会上,阿里云云原生应用平台负责人丁宇宣布,阿里云容器计算服务 ACS 正式发布!ACS 将大幅降低企业和开发者用云门槛,真正将 Serverless 理念大规模落地。
4158 49
|
Kubernetes 安全 调度
深度解读:阿里云全球首发的容器计算服务 ACS 诞生背景、核心技术与应用场景
深度解读:阿里云全球首发的容器计算服务 ACS 诞生背景、核心技术与应用场景
70635 45
|
人工智能 Kubernetes Serverless
全球首款容器计算产品重磅发布,激活上云用云新范式
随着阿里云的Serverless化演进历程进入了快车道,截至2023年10月,阿里云已拥有超过40款Serverless化云产品,并推出全球首款容器计算服务ACS(Alibaba Cloud Container Compute Service,以下简称ACS)。
|
弹性计算 缓存 Kubernetes
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
弹性容器实例是阿里云的云服务器产品,使用弹性容器实例之后,用户无需管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,与阿里云容器服务无缝对接并仅为容器实际运行消耗的资源付费。本文介绍了阿里云弹性容器实例的、功能特性、产品优势及应用场景。
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
|
Kubernetes 网络安全 调度
容器服务ACK常见问题之容器服务ACK的eci调度卡住如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
Kubernetes 监控 测试技术
阿里云容器计算服务ACS功能测试
阿里云容器计算服务ACS功能测试,结合实际测试过程,总结一些使用经验。
阿里云容器计算服务ACS功能测试
|
运维 Kubernetes 容器
容器计算服务 ACS
容器计算服务 ACS
232 1

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版