云原生趋势下,应用容器化比例正在快速增长,Kubernetes 也已成为云原生时代新的基础设施。

据 Forrester 预测,到 2022 年, 全球企业及组织在生产环境运行容器化应用。观察今天的容器和 Kubernetes 的应用现状,我们可以看到两个普遍的现象。首先,在云上托管 Kubernetes 已经成为企业上云及运行容器的优先选择。另外,用户使用容器的方式也在改变,从无状态应用 到 核心企业应用 到 数据智能应用,越来越多的企业使用容器来部署生产级别、复杂度高和高性能计算的有状态应用。比如 Web 服务、内容资料库、数据库,甚至 DevOps、AI/大数据应用等。

云原生时代,我们如何解决海量容器的编排和存储?又该如何提升容器存储的性能和稳定性?

容器应用趋势下的存储能力演变

随着基础设施从物理机到虚拟机,到以 Kubernetes 为代表的容器环境,甚至到 Serverless 的逐渐演进,今天的计算和应用正在面临巨大的变化,最明显的就是从过去应用在虚拟机里边去独占一个 CPU 内存分区,到今天在 Serverless 里演变成在函数层面去为用户提供服务。

在这样的技术体系下,存储的能力同样需要随之改变,主要体现在以下几个方面:

1.高密

虚拟机时代,一个虚拟机就对应一个完整的存储空间,可以用其去存储单个应用所需要的所有数据相关的访问和存储需求。但今天在 K8s 在 serverless 环境里的存储是共享的,一个容器需要去访问的是一个巨大的存储资源池,带来的代价就是存储的密度是非常大的,同时访问同一个存储能力的要求也变得更高。

2.弹性

当我们创建一个物理机或者虚拟机时,常会在一个比较稳定的周期之内访问和使用存储介质。但今天在容器环境里,前端计算服务的弹性伸缩变化是非常快的,可能需要瞬间从数十台到几百台,因此也需要非常高的弹性存储能力。

3.数据隔离

在 K8s 和 Serverless 里,很难做到内存和存储资源的独占,因为容器环境下存储资源、计算资源,甚至于操作系统以及一些依赖的基础包都是共享的。那这个时候就需要在基础架构层面实现一种安全的隔离,同样在上层的应用层面,也需要通过完善的安全策略和手段去实现数据隔离,这同样是非常大的变化和挑战。

容器环境下,企业需要怎样的存储能力?

块存储、文件存储、对象存储是现在比较常见的容器存储解决方案,那么在容器环境下,企业需要怎样的文件存储能力呢?

1. 应用兼容

我们很难快速让企业整体的应用方式发生转变。很多场景下,企业使用存储的方式会是共享或者分布式存储集群。这时,存储对于应用的兼容能力就非常重要,能不能在容器环境和非容器环境下保持一致,让应用的改造尽可能变得更少,甚至于不需要改造,这是一个迫切重要满足的诉求。

2. 极致弹性

容器部署的一大特点需要随着业务的峰值和波谷,满足快速的弹性需求。而当上层的计算发生弹性之后,底下的存储也需要有能力快速跟进,而不是用耗费大量时间去做底层数据的同步。

3. 共享

在大数据、高性能计算等场景下,应用的数据集是非常庞大的,量级动辄就是 TB、十几个 TB 的级别,有些场景甚至可以达到上百 TB。这种规格的数据如果无法共享,而是需要去在弹性的容器环境下通过拷贝传输完同步,这对于成本的压力、对于时效性的损失,都是很难保障的。

4. 安全可靠

不管底层的基础架构如何改变,是物理机、虚拟机、K8s 的容器还是 Serverless,无论怎么去抽象,业务应用最根本的诉求一定是安全,应用间不能相互污染。因此存储就必须在数据共享能力之上,为数据安全提供保障。

5. 优化成本

企业对于成本优化的追求,在所有的应用场景里几乎都是孜孜不倦的。即使是在最核心的应用场景里,我们依然需要去控制成本。因为今天业务的增长和变化是非常迅速的,数据的增速也是飞快的。怎么在数据快速增长的同时里兼顾成本的优化,也是对存储非常大的一个挑战。

阿里云容器网络文件系统 CNFS

针对容器中使用文件存储的优势和挑战,阿里云推出了容器网络文件系统 CNFS,内置在阿里云托管的 Kubernetes 服务 ACK 中。CNFS 通过将阿里云的文件存储抽象为一个 K8s 对象(CRD)进行独立管理,包括创建、删除、描述、挂载,监控及扩容等运维操作,使用户可以在享受容器使用文件存储带来的便捷的同时,提高文件存储的性能和数据安全,并提供容器一致的声明式管理。

CNFS 在弹性伸缩、性能优化、可访问性、可观测性、数据保护、声明式等方面针对容器存储进行了深度优化,使其与同类方案相比具有以下明显优势:

在存储类型方面,CNFS支持文件存储和对象存储,目前支持阿里云的NAS、CPFS、OSS云产品

支持 Kubernetes 兼容的声明式生命周期管理,可以一站式管理容器和存储

支持 PV 的在线扩容、自动扩容,针对容器弹性伸缩特性优化

支持更好的和 Kubernetes 结合的数据保护,包括 PV 快照、回收站、删除保护、数据加密、数据灾备等

支持应用级别的应用一致性快照,自动分析应用配置和存储依赖,一键备份、一键还原

支持 PV 级别监控

支持更好的访问控制,提高共享文件系统的权限安全,包括目录级 Quota、ACL

提供性能优化,针对文件存储的小文件读写,提供微秒级性能优化

成本优化,提供低频介质及转换策略,降低存储成本

典型使用场景及最佳实践