容器应用使用阿里云文件存储NAS最佳实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 应用程序需要数据, IT方案被创造出来是为了解决商业业务数据的问题。容器问世之时,它最初的目的是应对无状态化服务。随着容器技术的成熟,越来越多的人希望容器化应用可以直接关联数据。不论是传统的还是新型应用,都需要持久化存储。

容器应用需要使用共享文件存储吗

应用程序需要数据, IT方案被创造出来是为了解决商业业务数据的问题。容器问世之时,它最初的目的是应对无状态化服务。随着容器技术的成熟,越来越多的人希望容器化应用可以直接关联数据。不论是传统的还是新型应用,都需要持久化存储。
阿里云文件存储NAS以简单,易用,弹性扩展的特点,自然而然成为容器存储的一个主要选择。

通常来说,共享文件存储存储主要应用在需要长时间运行,多POD间需要共享访问数据,同时还需要进行故障切换的有状态容器业务场景,例如如下的一些场景:

  • 内容管理应用程序像WordPress和Drupal需要扩展到多个实例来获取性能和冗余型,并在多个实例间共享上传数据、插件、模板。
  • 开发工具比如JIRA, Artifactory, Git需要实例之间共享代码和编译数据并实现高可用性。
  • 机器学习框架MXNet和Tensorflow需要通过文件系统接口访问数据,并持久存储允许多个用户共享访问和运行相同的数据集。
  • 共享笔记本系统PAI-Notebook需要持久存储笔记本和用户工作区,并允许多个研究员合作共享访问数据。

可以通过哪些方式将共享文件系统到容器

阿里云文件存储NAS单文件系统默认可以创建两个根目录的挂载地址(可申请更多数量),挂载地址对应的是DNS域名,可以归属于不同的VPC,因此通过不同VPC的挂载地址将文件系统挂载到不同VPC的ECS或者容器应用。

挂载单文件系统到容器

  • 每个POD挂载一个文件系统
    对于不需要数据在多个POD间共享的场景(Deployment无状态服务为主),但又需要持久化存储具备较好的性能和灵活的弹性扩展能力,不同POD间的数据需要完全的隔离以保证数据安全和性能的QOS,我们可以为每个POD挂载一个独立的文件系统。单POD可以独享文件系统的吞吐和IOPS能力。
  • 多个POD挂载一个文件系统
    对于需要在多个POD间共享数据,并且需要POD具备Failover故障恢复能力的场景(Stateful有状态服务为主),我们可以将一个文件系统通过同一挂载地址同时挂载到多个POD上。数据可以被多个POD同时共享访问,单个POD销毁或故障后在其它节点拉起。

挂载文件系统子目录到容器

前面提到,单文件系统默认有两个根路径的挂载地址,但是使用挂载地址+子目录的形式将子目录挂载给单个POD,这样该POD只拥有这个被挂载子目录的权限,无法看到其它子目录的数据。
对于很多微服务化的容器应用,容器POD随着业务规模的变化动态灵活的创建和销毁,为了管理的方便简单,我们可以使用单一文件系统的多目录挂载给不同应用的POD,例如,/application1和/application2,这样application1的POD只能看到自己挂载目录的数据。因为单文件系统的吞吐能力是随存储容量弹性增长,所以使用单一文件系统还有个优势,就是可以通过多目录聚集的容量获得更大的吞吐性能。

什么是静态文件存储卷和动态文件存储卷

静态存储卷是预先创建好PVC和PV,再创建应用时使用对应PV进行存储映射。动态存储卷则只需要预先定义StorageClass,在创建应用的时候动态创建文件系统或者目录后,映射为PV关联给容器使用。例如,当为不同的用户提供不同的nas子目录进行挂载的时候,或者当使用有状态的SatefulSet部署应用,每个pod配置使用不同nas数据卷的时候,推荐使用动态存储卷。

如何选择正确的文件存储规格类型

  • 通用型NAS
    通用型NAS主要特点是容量可以随数据写入或者删除弹性伸缩,吞吐能力也随容量的伸缩弹性变化,通过数据存储容量获得较高的聚合吞吐能力。支持NFS和SMB协议、Quota、ACL、加密,具备较广的企业应用兼容性,同时还支持生命周期管理降低存储成本。通用型NAS在同一个地域内可以跨可用区挂载,配合容器的多AZ实现高可用能力。

应用场景:Linux/Windows企业应用、WEB内容管理、数据库备份、主目录

  • 极速型NAS
    极速型NAS主要特点是提供低时延高IOPS的读写能力,适用于大量小文件,元数据密集型操作的应用场景,可提供百微秒级的时延和200K的IOPS能力。极速型NAS支持NFS协议、快照和加密,建议和容器POD部署在同一个可用分区以获得更低的时延。

应用场景:时延敏感型企业应用、CI/CD开发测试环境、PHP网站、日志存储、轻量级数据库

  • CPFS
    并行文件存储CPFS是专为高性能计算和AI训练设计的高性能并行文件存储,主要针对大容量、高吞吐和高IOPS的高性能计算业务,可提供上百GB/s的吞吐能力。目前阿里云的EHPC镜像,基因容器镜像和AI容器镜像都和CPFS进行了深度集成。

应用场景:HPC高性能计算、AI训练、基因分析、影视渲染、EDA仿真、油气勘探、气象分析

如何备份容器存储的数据

文件系统快照

阿里云文件存储NAS极速型规格支持文件系统快照,可以针对容器挂载的文件系统进行快照保护,快照可配置灵活的策略周期性的创建副本数据,如果发生容器数据人为误删除或者文件系统误删除,都可以通过快照回滚来恢复数据。

文系统备份服务

阿里云文件存储NAS通用型规格支持文件系统备份服务,可以配置备份服务针对容器挂载的文件系统进行备份保护,备份任务周期性的降数据副本保存到备份库。如果你不小心删除数据,需要从备份恢复,你可以恢复备份现有文件系统中的一个目录或一个新的文件系统。

如何加密容器的数据

阿里云文件存储NAS支持数据存储加密功能,当前已经支持使用KMS托管密钥进行数据加密。可以在为容器创建文件系统时选择使能加密功能,KMS服务会默认创建一个托管密钥,并使用该密钥对存储数据进行加密。

通过文件存储生命周期管理降低容器存储成本

阿里云文件存储NAS支持低频存储类型,可以配置生命周期管理策略,将指定时间内没有读写访问的数据自动迁移到低频NAS里存储,最低成本可降低90%,如果后续需要访问这些数据,用户可以直接读写访问,后台透明将数据取回,应用无感知。例如,像基因测序、大数据分析等应用场景,用户生产的大部分数据都不会频繁访问,但是需要长期存储。基于生命周期管理的低频NAS就可以很好的帮助用户解决存储成本和应用访问接口一致的问题。
生命周期管理的配置也非常简单,只需要对需要挂载到容器的文件系统或者子目录启用该功能,并且配置对应策略即可。

如何监控容器存储的状态

阿里云文件存储NAS支持接入阿里云监控服务,可以对文件系统的吞吐、IOPS/元数据OPS和时延进行监控统计,同时可以配置阀值告警。

  • IOPS
    统计了单文件系统总的IOPS性能,如果你使用的是通用型NAS,并且监控到IOPS已经达到了规格上限,则可以考虑拆分为多个文件系统或者更换使用极速型NAS。
  • 吞吐
    统计了所有访问该文件系统的客户端读写带宽总和,如果监控到使用的通用型NAS吞吐达到了上限,可以考虑更换使用CPFS文件存储或者提交吞吐配额提升申请。
  • 时延
    该项统计了文件存储后端的IO读写时延,但并不包含计算节点到文件存储的网络时延,因此对时延数据的分析还要综合考虑跨可用区的因素和VPC网络是否存在异常。
相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
相关文章
|
20天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
1月前
|
专有云 Serverless 持续交付
亚太唯一,阿里云再度入选Gartner®容器管理魔力象限领导者
Gartner正式发布 2024《容器管理魔力象限》报告,阿里云再度成为中国唯一一家入选「领导者象限」的科技公司。
|
1月前
|
运维 Kubernetes 监控
提升运维效率:容器化技术在现代IT基础设施中的应用
本文将探讨容器化技术如何优化企业的IT基础设施,提高部署效率和资源利用率。我们将深入分析容器技术的优势、实现步骤以及在实际运维中的应用场景。通过实例展示,帮助读者更好地理解并应用这一前沿技术,助力企业实现高效运维。
|
3天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
10天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
10天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
12天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
18天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
54 1
|
5天前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
1月前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
105 2
下一篇
无影云桌面