将 Azure 托管 Lustre CSI 驱动程序与 Azure Kubernetes 服务

本文介绍如何在 Azure Kubernetes 服务 (AKS) 中规划、安装和使用 Azure Managed Lustre Kubernetes 容器支持接口驱动程序 (Azure Managed Lustre CSI 驱动程序)

关于适用于 AKS 的 Azure 托管 Lustre CSI 驱动程序

使用适用于 AKS 的 CSI) 驱动程序 (Azure 托管 Lustre 容器支持接口,可以从部署在 Azure Kubernetes 服务 (AKS) 中的 Kubernetes 容器访问 Azure 托管 Lustre 存储作为永久性存储卷。

兼容的 Kubernetes 版本

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

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

重要

Azure 托管 Lustre CSI 驱动程序目前仅适用于 AKS 节点池的 Ubuntu Linux OS SKU。

兼容的 Lustre 版本

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

Azure 托管 Lustre 服务的当前版本支持 Azure Managed Lustre CSI 驱动程序 0.1.10 和更高版本。

先决条件

规划 AKS 部署

部署影响 AKS 和 Azure Managed Lustre 之间操作的Azure Kubernetes 服务时,有几个选项。

确定用于 AKS 的网络类型

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

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

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

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

注意

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

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

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

显示两个 VNet 的关系图,一个用于 Azure 托管 Lustre,一个用于 AKS,其中 VNet 对等互连箭头连接它们。

将 AKS 安装到 Azure 托管 Lustre 虚拟网络上的子网中

使用 AKS 中的“ 自带网络 ”功能将 AKS 群集安装到 Azure 托管 Lustre 虚拟网络中的选项在需要单独管理网络的情况下可能很有用。 需要在 Azure 托管 Lustre 虚拟网络中创建满足 AKS 网络要求的额外子网。

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

显示 Azure 托管 Lustre VNet 的示意图,其中包含两个子网,一个用于 Lustre 文件系统,一个用于 AKS。

安装概述

若要启用 Azure Managed Lustre CSI Driver for Kubernetes,请执行以下步骤:

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

  2. 创建 AKS Kubernetes 群集

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

  4. 安装 Azure Managed Lustre CSI Driver for Kubernetes

  5. 创建并配置永久性卷

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

以下部分更详细地介绍了每个任务。

创建 Azure 托管 Lustre 文件系统

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

创建 AKS 群集

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

创建虚拟网络对等互连

注意

如果将 AKS 安装到 Azure 托管 Lustre 虚拟网络上的子网中,请跳过此网络对等互连步骤。

AKS 虚拟网络是在 AKS 群集资源组的单独资源组中创建的。 若要查找此资源组的名称,请在 Azure 门户中转到 AKS 群集,选择 “属性” 边栏选项卡并查找 “基础结构 ”资源组。 此资源组包含需要与 Azure 托管 Lustre 虚拟网络配对的虚拟网络。 它与 模式MC_<aks-rg-name>_<aks-cluster-name>_<region> 匹配。

咨询虚拟网络对等互连,将 AKS 虚拟网络与 Azure 管理 Lustre 虚拟网络对等互连。

提示

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

连接到 AKS 群集

通过执行以下步骤连接到Azure Kubernetes 服务群集:

  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
    

安装 CSI 驱动程序

若要安装 CSI 驱动程序,请运行以下命令:

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

有关本地安装命令示例,请参阅 在 Kubernetes 群集上安装 Azure Lustre CSI 驱动程序

创建和配置永久性卷

若要为现有的 Azure 托管 Lustre 文件系统创建永久性卷,请执行以下步骤:

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

    • storageclass_existing_lustre.yaml
    • pvc_storageclass.yaml

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

  2. storageclass_existing_lustre.yaml 文件中,更新 Lustre 群集的内部名称和 MSG IP 地址。

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

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

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

    进行以下更新:

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

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

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

    • 将 替换为 EXISTING_LUSTRE_IP_ADDRESSMSG 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`
    

后续步骤