Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
在 Azure Kubernetes 服务(AKS)中创建和管理群集时,应用程序通常需要存储。 请确保了解 Pod 性能需求和访问方法,以便为应用程序选择最佳存储。 AKS 节点大小可能会影响存储选择。 规划备份和测试附加存储的还原过程的方法。
本最佳做法文章重点介绍群集作员的存储注意事项。 本文内容:
- 可用的存储类型。
- 如何正确调整 AKS 节点的大小,以确保存储性能。
- 动态资源分配与静态资源分配之间的差异。
- 备份和保护数据卷的方法。
最佳实践指南
了解应用程序的需求,以选取合适的存储。 对生产工作负荷使用高性能、支持 SSD 的存储。 如果需要多个并发连接,请规划基于网络的存储。
应用程序通常需要不同类型的存储和存储速度。 通过提出以下问题来确定最合适的存储类型。
- 应用程序是否需要连接到单个 Pod 的存储?
- 应用程序是否需要跨多个 Pod 共享的存储?
- 存储是否为对数据进行只读访问?
- 存储是否会用于写入大量结构化数据?
下表概述了可用的存储类型及其功能:
用例 | 存储卷插件 | 读/写一次 | 只读多个 | 读/写许多内容 | Windows Server 容器支持 |
---|---|---|---|---|---|
共享配置 | Azure Files | 是的 | 是的 | 是的 | 是的 |
结构化应用数据 | Azure 磁盘 | 是的 | 否 | 否 | 是的 |
非结构化数据、文件系统操作 | BlobFuse | 是的 | 是的 | 是的 | 否 |
AKS 向由 Azure 磁盘或 Azure 文件存储支持的卷提供主要的两类安全存储。 两者都使用默认的 Azure 存储服务加密(SSE),用于加密静态数据。 无法在 AKS 节点级别使用 Azure 磁盘加密来加密磁盘。 在节点上没有对 Azure 文件存储共享的装载个数限制。
Azure 文件和 Azure 磁盘在标准层和高级性能层中均可用:
-
高级 磁盘
- 由高性能固态磁盘(SSD)提供支持。
- 推荐用于所有生产任务。
-
标准 磁盘
- 由常规旋转硬盘(HDD)提供支持。
- 适用于存档或不经常访问的数据。
虽然 Azure 磁盘 CSI 驱动程序的默认存储层是高级 SSD,但自定义 StorageClass 可以使用高级 SSD、标准 SSD 或标准 HDD。
了解应用程序性能需求和访问模式,以选择适当的存储层。 有关托管磁盘大小和性能层的详细信息,请参阅 Azure 托管磁盘概述。
使用 Kubernetes 存储类定义所需的存储类型。 然后,在 Pod 或部署配置规范中引用该存储类。 存储类定义协同工作,以创建适当的存储并将其连接到 Pod。
有关详细信息,请参阅 AKS 中的存储类。
最佳实践指南
每个节点大小都支持最大数量的磁盘。 不同大小的节点提供不同数量的本地存储和网络带宽。 适当计划你的应用程序需求,以便部署适当规模的节点。
AKS 节点以各种 Azure VM 类型和大小运行。 每种虚拟机大小都提供:
- 数量不同的核心资源,例如 CPU 和内存。
- 可附加的最大磁盘数。
存储性能在不同虚拟机 (VM) 规格之间会有所不同,具体体现在最大本地磁盘和附加磁盘的 IOPS(每秒输入/输出操作次数)上。
如果应用程序需要 Azure 磁盘作为其存储解决方案,请制定适当的节点 VM 大小。 在决定 VM 大小时,存储功能和 CPU 和内存量起着主要作用。
例如,虽然 Standard_B2ms 和 Standard_DS2_v2 VM 大小都包括类似的 CPU 和内存资源,但其潜在的存储性能不同:
节点类型和大小 | vCPU | 内存 (GiB) | 最大数据磁盘数 | 最大未缓存磁盘 IOPS | 最大未缓存吞吐量 (MBps) |
---|---|---|---|---|---|
Standard_B2ms | 2 | 8 | 4 | 1,920 | 22.5 |
Standard_DS2_v2 | 2 | 7 | 8 | 6,400 | 96 |
在此示例中, Standard_DS2_v2 提供的磁盘数是附加磁盘的两倍,IOPS 和磁盘吞吐量是 IOPS 和磁盘吞吐量的三到四倍。 如果您只比较核心计算资源和成本,那么可能会选择存储性能较差且有一些限制的Standard_B2ms VM 规格。
请与应用程序开发团队协作,了解其存储容量和性能需求。 为 AKS 节点选择适当的 VM 大小,以满足或超出其性能需求。 定期比较基准应用程序,根据需要调整 VM 大小。
Nota
默认情况下,根据所选 VM SKU 和 vCPU 计数分配托管磁盘的磁盘大小和性能。 仅当不支持临时 OS 磁盘且未指定默认 OS 磁盘大小时,才在新的群集或节点池上使用默认 OS 磁盘大小调整。 有关详细信息,请参阅默认 OS 磁盘大小调整。
有关可用 VM 大小的详细信息,请参阅 Azure 中 Linux 虚拟机的大小。
最佳实践指南
若要减少管理开销并实现扩展性,请避免静态创建和分配持久卷。 使用动态预配。 在存储类中,定义适当的回收策略,以在删除 Pod 后尽量减少不需要的存储成本。
若要将存储附加到 Pod,请使用持久卷。 可以手动或动态创建永久性卷。 创建永久性卷会手动增加管理开销,并限制缩放能力。 相反,动态预配永久性卷以简化存储管理,并允许应用程序根据需要扩展和缩放。
永久性卷声明(PVC)允许根据需要动态创建存储。 基础 Azure 磁盘在 Pod 请求它们时创建。 在 Pod 定义中,请求创建卷并将其附加到指定的装载路径。
有关如何动态创建和使用卷的概念,请参阅 永久性卷声明。
若要查看这些卷的作用,请参阅如何通过 Azure 磁盘 或 Azure 文件 动态创建和使用持久卷。
作为存储类定义的一部分,请设置适当的 reclaimPolicy。 此 reclaimPolicy 控制删除 Pod 时基础 Azure 存储资源的行为。 可以删除或保留基础存储资源以供将来的 Pod 使用。 设置 reclaimPolicy 以保留或删除。
了解应用程序需求,并定期检查保留的存储,以最大程度地减少未使用和计费的存储量。
有关存储类选项的详细信息,请参阅 存储回收策略。
最佳实践指南
使用适合存储类型的工具(例如 Velero 或 Azure 备份)备份数据。 验证这些备份的完整性和安全性。
当应用程序存储和使用永久存储在磁盘或文件中的数据时,需要定期备份或创建数据的快照。 Azure 磁盘可以使用内置快照技术。 在执行快照操作之前,您的应用程序可能需要将数据刷新写入磁盘。 Velero 可以备份永久性卷资源以及其他群集资源和配置。 如果无法 从应用程序中删除状态,请备份持久性卷中的数据,并定期测试还原操作,以验证数据完整性和所需的过程。
了解不同数据备份方法的局限性,以及是否需要在快照之前将数据静止。 数据备份不一定允许还原群集部署的应用程序环境。 有关这些方案的详细信息,请参阅 AKS 中业务连续性和灾难恢复的最佳做法。
本文重点介绍 AKS 中的存储最佳做法。 有关 Kubernetes 中的存储基础知识的详细信息,请参阅 AKS 中应用程序的存储概念。