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

在本文中,将学习如何使用 Azure Lustre CSI Driver for Kubernetes,在 Azure Kubernetes 服务 (AKS) 中规划、安装和使用 Azure Managed Lustre。 此驱动程序基于容器支持接口 (CSI) 规范。

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

兼容的 Kubernetes 版本

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

支持 AKS Kubernetes 版本 1.21 及更高版本。 此支持包括创建新 AKS 群集时当前可用的所有版本。

重要

Azure Lustre CSI Driver for Kubernetes 当前仅适用于 AKS 节点池的 Ubuntu Linux OS SKU。

兼容的 Lustre 版本

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

Azure Lustre CSI Driver for Kubernetes 版本 0.1.10 及更高版本受 Azure 托管 Lustre 服务的当前版本支持。

先决条件

规划 AKS 部署

部署 Azure Kubernetes 服务时,多个选项会影响 AKS 和 Azure 托管 Lustre 之间的操作。

确定要用于 AKS 的网络类型

两种网络类型与 Ubuntu Linux OS SKU 兼容:kubenet 和 Azure 容器网络接口 (CNI) 驱动程序。 这两个选项都适用于 Kubernetes 的 Azure Lustre CSI 驱动程序,但在设置虚拟网络和 AKS 时,它们有不同的要求需要了解。 有关确定正确选择的详细信息,请参阅 Azure Kubernetes 服务(AKS)中应用程序的 网络概念。

确定 AKS 和 Azure Managed Lustre 互连的网络体系结构

Azure Managed Lustre 在专用虚拟网络中运行。 AKS 实例必须与 Azure 托管 Lustre 虚拟网络建立网络连接。 可通过两种常见方法在 Azure 托管 Lustre 和 AKS 之间配置网络:

  • 在自己的虚拟网络中安装 AKS,并创建与 Azure Managed Lustre 虚拟网络的虚拟网络对等互连。
  • 使用 AKS 中的“自带 Azure 虚拟网络” 选项,在 Azure Managed Lustre 虚拟网络的新子网中安装 AKS。

注意

不建议在 Azure 托管 Lustre 所在的同一子网中安装 AKS。

对等互连 AKS 和 Azure 托管 Lustre 虚拟网络

两个虚拟网络的对等互连选项的优点是将网络管理分为不同的特权角色。 对等互连还可以提供额外的灵活性,因为可以跨 Azure 订阅或区域进行实现。 虚拟网络对等互连需要两个网络之间的协调,以避免选择冲突的 IP 网络空间。

显示两个虚拟网络(一个用于 Azure Managed Lustre,一个用于 AKS)的图表,其中使用对等互连箭头连接。

在 Azure Managed Lustre 虚拟网络中的子网中安装 AKS

在 AKS 中使用“自带 Azure 虚拟网络”功能在 Azure Managed Lustre 虚拟网络中安装 AKS 群集的选项在单独管理网络的应用场景中可能会很有利。 需要在 Azure Managed Lustre 虚拟网络中创建一个额外的子网,大小以满足您的 AKS 网络需求。

在 Azure 托管 Lustre 虚拟网络上预配 AKS 时,网络管理没有特权分离。 AKS 服务主体需要在 Azure 托管的 Lustre 虚拟网络上获得权限。

显示具有两个子网(一个用于 Lustre 文件系统,一个用于 AKS)的 Azure Managed Lustre 虚拟网络的图表。

设置驱动程序

若要为 Kubernetes 启用 Azure Lustre CSI 驱动程序,请执行以下步骤:

  1. 创建 Azure 托管 Lustre 文件系统群集

  2. 创建 AKS 群集

  3. 创建虚拟网络对等互连

  4. 安装驱动程序

  5. 创建和配置永久性卷

  6. 可选择性地使用回显 Pod 检查安装,以确认驱动程序是否正常工作。

以下各节更详细地描述了每个任务。

创建 Azure 托管 Lustre 文件系统群集

如果尚未创建 Azure 托管 Lustre 文件系统群集,请立即创建群集。 有关说明,请参阅 使用 Azure 门户创建 Azure 托管 Lustre 文件系统。 目前,驱动程序只能与现有的 Azure 托管 Lustre 文件系统一起使用。

创建 AKS 群集

如果尚未创建 AKS 群集,请创建群集部署。 请参阅 使用 Azure 门户部署 Azure Kubernetes 服务(AKS)群集。

创建虚拟网络对等互连

注意

如果在 Azure Managed Lustre 虚拟网络上的子网中安装了 AKS,请跳过此网络对等互连步骤。

AKS 虚拟网络是在 AKS 群集资源组的单独资源组中创建的。 通过前往 Azure 门户中的 AKS 群集,前往“属性”,然后查找基础结构资源组,可以查找此资源组的名称。 此资源组包含需要与 Azure 托管 Lustre 虚拟网络配对的虚拟网络。 它匹配模式>。

要将 AKS 虚拟网络与 Azure Managed Lustre 虚拟网络进行对等互连,请参阅虚拟网络对等互连

提示

由于MC_资源组和虚拟网络的命名,因此多个 AKS 部署中的网络名称可能相似或相同。 设置对等互连时,请小心选择想要选择的 AKS 网络。

连接到 AKS 群集

  1. 打开一个终端会话,访问 Azure CLI 工具并登录到 Azure 帐户:

    az login
    
  2. 登录到 Azure 门户

  3. 查找 AKS 群集。 在“概述”窗格中,选择“连接”按钮,然后复制“下载群集凭据”的命令。

  4. 在终端会话中,粘贴命令以下载凭据。 该命令类似于:

    az aks get-credentials --subscription <AKS_subscription_id> --resource_group <AKS_resource_group_name> --name <name_of_AKS>
    
  5. 如果您的环境中没有 kubectl,请安装它:

    az aks install-cli
    
  6. 验证当前上下文是否是刚安装凭据的 AKS 群集,以及是否可以连接到该群集:

    kubectl config current-context
    kubectl get deployments --all-namespaces=true
    

安装驱动程序

若要安装适用于 Kubernetes 的 Azure Lustre CSI 驱动程序,请运行以下命令:

curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/azurelustre-csi-driver/main/deploy/install-driver.sh | bash

若要获取本地安装的示例命令,请参阅 在 Kubernetes 群集上安装 Azure Lustre CSI 驱动程序

创建和配置永久性卷

要为现有 Azure Managed Lustre 文件系统创建持久性卷:

  1. 从 azurelustre-csi-driver 存储库中的 /docs/examples/ 文件夹中复制以下配置文件。 如果在 安装驱动程序时克隆了存储库,则已经有本地副本可用。

    • storageclass_existing_lustre.yaml
    • pvc_storageclass.yaml

    如果不想克隆整个存储库,可以单独下载每个文件。 打开以下每个链接,复制文件的内容,然后将内容粘贴到具有相同文件名的本地文件中。

  2. storageclass_existing_lustre.yaml 文件中,更新 Lustre 群集的内部名称和 Lustre 管理服务 (MGS) IP 地址。

    storageclass_existing_lustre.yaml 文件的屏幕截图,其中突出显示了要替换的值。

    这两个设置都显示在 Azure 门户的 Azure Managed Lustre 文件系统的“客户端连接”窗格中。

    Azure 门户中客户端连接窗格的屏幕截图。mount 命令中的 MGS IP 地址和“lustrefs”名称将突出显示。

    进行以下更新:

    • 替换为 EXISTING_LUSTRE_FS_NAME Azure 托管 Lustre 文件系统中 Lustre 群集的系统分配的内部名称。 内部名称通常是 lustrefs。 内部名称不是在创建文件系统时为其指定的名称。

      建议的 mount 命令包括以下地址字符串中突出显示的名称。

      客户端连接窗格上示例地址字符串的屏幕截图。Lustre 群集的内部名称突出显示。

    • EXISTING_LUSTRE_IP_ADDRESS 替换为 MGS IP 地址。

  3. 若要创建存储类和永久性卷声明, kubectl 请运行以下命令:

    kubectl create -f storageclass_existing_lustre.yaml
    kubectl create -f pvc_storageclass.yaml
    

检查安装

如果要检查安装,可以根据需要使用回显 Pod 来确认驱动程序是否正在正常运作。

若要在写入期间查看控制台中的时间戳,请运行以下命令:

  1. 将以下代码添加到回显 Pod:

    while true; do echo $(date) >> /mnt/lustre/outfile; tail -1 /mnt/lustre/outfile; sleep 1; done
    
  2. 若要在写入期间查看控制台中的时间戳,请运行以下命令 kubectl 命令:

    `kubectl logs -f lustre-echo-date`