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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 《弹性计算—无处不在的算力》第三章:计算产品和技术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 实例上,以削峰填谷。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
1月前
|
Kubernetes 开发者 Docker
基于容器技术的微服务架构
基于容器技术的微服务架构
33 0
|
1天前
|
运维 Kubernetes Docker
这是一项颠覆性技术 - 容器
这是一项颠覆性技术 - 容器
|
10天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
27天前
|
Kubernetes API 调度
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
60 0
|
30天前
|
弹性计算 缓存 Kubernetes
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
弹性容器实例是阿里云的云服务器产品,使用弹性容器实例之后,用户无需管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,与阿里云容器服务无缝对接并仅为容器实际运行消耗的资源付费。本文介绍了阿里云弹性容器实例的、功能特性、产品优势及应用场景。
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
|
1月前
|
运维 监控 Devops
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
在数字化转型的浪潮中,企业的IT基础设施和软件交付模式正经历着深刻的变革。传统的运维方式已难以满足快速迭代、灵活扩展的现代业务需求。本文将探讨如何通过容器技术实现高效的自动化运维体系,重点分析持续集成(CI)与持续部署(CD)的实践方法及其对企业运维效率的影响。通过引入微服务架构、容器编排、DevOps文化等概念,我们旨在为读者提供一套全面的自动化运维解决方案,以支持业务的敏捷性和可扩展性。
|
1月前
|
Kubernetes 网络安全 调度
容器服务ACK常见问题之容器服务ACK的eci调度卡住如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
边缘计算 Kubernetes 负载均衡
容器编排技术在云计算中的应用
随着云计算技术的飞速发展,容器编排技术作为一种重要的部署和管理工具,正在逐渐成为云计算领域的热门话题。本文将介绍容器编排技术在云计算中的应用,探讨其在提高应用程序部署效率、资源利用率以及系统可靠性方面的优势,并分析其未来发展趋势。
|
1月前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
107 0

相关产品

  • 容器计算服务