将 Azure 托管 Lustre CSI 驱动程序与 Azure Kubernetes 服务 配合使用

通过使用 Azure Lustre CSI Driver for Kubernetes,可以将Azure Managed Lustre用作Azure Kubernetes 服务 (AKS)中运行的工作负荷的持久性存储。 此驱动程序基于容器存储接口 (CSI) 规范。

可以使用 Azure Lustre CSI Driver for Kubernetes,从 AKS 中部署的 Kubernetes 容器访问 Azure Managed Lustre 存储,将其作为持久性存储卷。

支持的 Kubernetes 和 AKS 版本

适用于 Kubernetes 的 Azure Lustre CSI 驱动程序与 AKS兼容。 目前不支持其他 Kubernetes 安装。

版本 0.6.0 需要 Kubernetes 1.29 或更高版本,因为节点插件使用原生 sidecar 容器。

Important

版本 0.6.0 为 Ubuntu 22.04(Ubuntu2204)和 Ubuntu 24.04 (Ubuntu2404) 节点池提供映像。 不支持 Windows 节点池。

Azure Lustre CSI Driver for Kubernetes 与 Azure Managed Lustre 兼容。 目前不支持其他 Lustre 安装。

Azure Lustre CSI 驱动程序版本

这些文章介绍了 v0.6.0 版本。 请使用带版本号的发布版本,而不是 main 分支进行生产部署。

版本 0.6.0 对 Ubuntu 22.04(Jammy)和 Ubuntu 24.04(Noble)使用单独的节点映像。 Helm 图表和脚本安装程序都部署了这两个节点 DaemonSet。 Kubernetes 通过使用 kubernetes.azure.com/os-sku-effective 节点标签来调度相应的驱动程序 pod。 Jammy 节点镜像支持 amd64;Noble 支持 amd64 和 arm64。

控制器使用 Noble 映像,该映像支持 amd64 和 arm64。

驱动程序版本 图像 AKS 节点 OS SKU 支持的 k8s 版本 Lustre 客户端版本 动态预配
v0.6.0 (Jammy) mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.6.0-jammy Ubuntu2204 1.29+ 2.15.8 ✅
v0.6.0 (Noble) mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.6.0-noble Ubuntu2404 1.29+ 2.17.0 ✅
v0.4.0 (Jammy) mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.4.0-jammy Ubuntu2204; 1.21+ 2.15.7 ✅
v0.4.0 (高贵) mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.4.0-noble Ubuntu2404 1.21+ 2.16.1 ✅
v0.3.1 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.3.1 Ubuntu Linux 1.21+ 2.15.7 ✅
v0.3.0 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.3.0 Ubuntu Linux 1.21+ 2.15.5 ✅
v0.2.0 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.2.0 Ubuntu Linux 1.21+ 2.15.5 ❌
v0.1.18 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.18 Ubuntu Linux 1.21+ 2.15.5 ❌
v0.1.17 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.17 Ubuntu Linux 1.21+ 2.15.5 ❌
v0.1.15 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.15 Ubuntu Linux 1.21+ 2.15.4 ❌
v0.1.14 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.14 Ubuntu Linux 1.21+ 2.15.3 ❌
v0.1.13 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.13 Ubuntu Linux 1.21+ 2.15.4 ❌
v0.1.12 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.12 Ubuntu Linux 1.21+ 2.15.3 ❌
v0.1.11 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.11 Ubuntu Linux 1.21+ 2.15.1 ❌
v0.1.10 mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:v0.1.10 Ubuntu Linux 1.21+ 2.15.2 ❌

有关所有驱动程序版本及其更改日志的完整列表,请参阅 Azure Lustre CSI 驱动程序版本页。

Note

除了表中显示的 Kubernetes 版本要求外,版本 0.6.0 还要求 AKS 节点池报告 kubernetes.azure.com/os-sku-effective 标签。

先决条件

  • 拥有有效订阅的 Azure 帐户。 创建试用帐户。
  • 安装了 Azure CLI 工具的终端环境。 请参阅 Azure CLI 入门。
  • kubectl,Kubernetes 管理工具,已安装在您的终端环境中。 请参阅 快速入门:使用 Azure CLI部署 Azure Kubernetes 服务(AKS)群集。
  • cluster-admin 安装或替换驱动程序及其集群作用域资源的权限。
  • 对于推荐的 Helm 安装方法,请使用 Helm 3 3.8.0 或更高版本。
  • Bash 和 curl 用于脚本安装方法;git 用于脚本卸载过程。
  • 满足 兼容性要求的 AKS 群集。
  • 对于静态预配,使用现有的 Azure Managed Lustre 部署。 动态预配创建文件系统。 请参阅 Azure Managed Lustre 文档。
  • AKS 群集与 Azure 托管 Lustre 虚拟网络之间的网络连接。 有关配置选项,请参阅AKS 使用 Azure Managed Lustre 的网络体系结构规划。
  • 需要足够的子网 IP 地址,以及Azure Managed Lustre 网络先决条件中所述的入站和出站访问权限。 新的专用子网需要显式出站连接,例如 NAT 网关。
  • 可从安装计算机访问用于 Helm 的 mcr.microsoft.com 或用于脚本的 raw.githubusercontent.com;还可访问用于卸载脚本源代码检出的 github.com。 AKS 节点需要访问 MCR、packages.microsoft.com以及其节点映像的 OS 包存储库。
  • 控制器部署的适当节点,以及 Lustre 工作负载的合格节点。 有关带有自定义污点的节点,请参阅 节点池指南。

预配方法

Azure Lustre CSI 驱动程序支持两种预配方法:

动态预配(v0.3.0+ 中可用)

动态预配允许 CSI 驱动程序在创建持久卷声明(PVC)时按需自动创建 Azure Managed Lustre 文件系统。

Note

动态预配从 Azure Lustre CSI 驱动程序版本 0.3.0 开始提供。 有关详细信息,请参阅 v0.3.0 发行说明。

有关完整分步说明,请参阅将动态预配与 Azure Managed Lustre CSI 驱动程序配合使用。

静态预配

静态预配使用现有的 Azure 托管 Lustre 文件系统。 此方法涉及:

  • 创建引用现有 Lustre 群集的存储类
  • 指定 Lustre MGS IP 地址
  • 适用于已有 Lustre 基础设施的场景

有关完整分步说明,请参阅将静态预配与 Azure Managed Lustre CSI 驱动程序配合使用。

安装 CSI 驱动程序

为任一预配方法安装驱动程序一次。 有关共享群集准备、Helm 或脚本安装以及准备情况检查,请参阅安装 Azure Managed Lustre CSI 驱动程序。

升级 CSI 驱动程序

有关维护规划、工作负载和挂载前检查、安装、验证和恢复,请参阅升级或卸载 Azure Managed Lustre CSI 驱动程序。

卸载驱动

停止所有使用 Lustre 的工作负载,并确认在删除驱动程序之前不再有任何 Lustre 挂载残留。 有关 Helm 和脚本卸载过程,请参阅 卸载驱动程序。

Troubleshooting

若要排查 Azure Lustre CSI 驱动程序的问题,请参阅 GitHub 存储库中的 v0.6.0 CSI 驱动程序故障排除指南。

常见问题包括:

  • 网络连接问题 - 检查 AKS 与 Azure Managed Lustre 之间的虚拟网络对等连接或子网配置。
  • 配置不正确 - 验证存储类中的 MGS IP 地址。
  • Pod 计划问题 - 验证节点的有效 OS SKU 为 Ubuntu2204 或 Ubuntu2404。 也检查节点架构和污点。
  • AKS 节点上没有 v0.6.0 节点 pod - 验证 kubernetes.azure.com/os-sku-effective 标签是否存在并由 Jammy 或 Noble DaemonSet 匹配。
  • DaemonSet 具有零个所需的 Pod - 如果没有符合条件的节点与该规格匹配,则预期会出现此条件。 确认每个预期工作负荷节点都有一个 CSI 节点 Pod。
  • 升级滚动发布超时 - 在重试之前检查 DaemonSet 状态、受影响的 Pod 事件以及 lustre-loader 和 azurelustre 这两个容器日志。
  • 使用旧 Lustre 客户端的就绪 Pod - 将加载的内核模块版本与 验证升级中的预期版本进行比较。
  • Helm 所有权错误 - 遵循 卸载/重新安装过程,而不是覆盖现有的脚本管理资源进行安装。
  • 镜像拉取或 Lustre 客户端安装失败 - 验证节点到 packages.microsoft.com 和 mcr.microsoft.com 的出站连接。
  • 动态预配期间的权限问题 - 检查 CSI 控制器使用的身份是否符合 动态预配权限要求。

有关特定于预配的问题,请参阅 动态预配故障排除 或 静态预配故障排除。

有关其他故障排除资源,请参阅: