将 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 服务的当前版本支持。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 安装了 Azure CLI 工具的终端环境。 请参阅 Azure CLI 入门。
- kubectl,Kubernetes 管理工具,已安装在您的终端环境中。 请参阅 快速入门:使用 Azure CLI部署 Azure Kubernetes 服务(AKS)群集。
- Azure Managed Lustre 部署。 请参阅 Azure Managed 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
在 AKS 中使用“自带 Azure 虚拟网络”功能在 Azure Managed Lustre 虚拟网络中安装 AKS 群集的选项在单独管理网络的应用场景中可能会很有利。 需要在 Azure Managed Lustre 虚拟网络中创建一个额外的子网,大小以满足您的 AKS 网络需求。
在 Azure 托管 Lustre 虚拟网络上预配 AKS 时,网络管理没有特权分离。 AKS 服务主体需要在 Azure 托管的 Lustre 虚拟网络上获得权限。
设置驱动程序
若要为 Kubernetes 启用 Azure Lustre CSI 驱动程序,请执行以下步骤:
可选择性地使用回显 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 群集
打开一个终端会话,访问 Azure CLI 工具并登录到 Azure 帐户:
az login
登录到 Azure 门户。
查找 AKS 群集。 在“概述”窗格中,选择“连接”按钮,然后复制“下载群集凭据”的命令。
在终端会话中,粘贴命令以下载凭据。 该命令类似于:
az aks get-credentials --subscription <AKS_subscription_id> --resource_group <AKS_resource_group_name> --name <name_of_AKS>
如果您的环境中没有 kubectl,请安装它:
az aks install-cli
验证当前上下文是否是刚安装凭据的 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 文件系统创建持久性卷:
从 azurelustre-csi-driver 存储库中的 /docs/examples/ 文件夹中复制以下配置文件。 如果在 安装驱动程序时克隆了存储库,则已经有本地副本可用。
- storageclass_existing_lustre.yaml
- pvc_storageclass.yaml
如果不想克隆整个存储库,可以单独下载每个文件。 打开以下每个链接,复制文件的内容,然后将内容粘贴到具有相同文件名的本地文件中。
在 storageclass_existing_lustre.yaml 文件中,更新 Lustre 群集的内部名称和 Lustre 管理服务 (MGS) IP 地址。
这两个设置都显示在 Azure 门户的 Azure Managed Lustre 文件系统的“客户端连接”窗格中。
进行以下更新:
替换为
EXISTING_LUSTRE_FS_NAME
Azure 托管 Lustre 文件系统中 Lustre 群集的系统分配的内部名称。 内部名称通常是lustrefs
。 内部名称不是在创建文件系统时为其指定的名称。建议的
mount
命令包括以下地址字符串中突出显示的名称。将
EXISTING_LUSTRE_IP_ADDRESS
替换为 MGS IP 地址。
若要创建存储类和永久性卷声明,
kubectl
请运行以下命令:kubectl create -f storageclass_existing_lustre.yaml kubectl create -f pvc_storageclass.yaml
检查安装
如果要检查安装,可以根据需要使用回显 Pod 来确认驱动程序是否正在正常运作。
若要在写入期间查看控制台中的时间戳,请运行以下命令:
将以下代码添加到回显 Pod:
while true; do echo $(date) >> /mnt/lustre/outfile; tail -1 /mnt/lustre/outfile; sleep 1; done
若要在写入期间查看控制台中的时间戳,请运行以下命令
kubectl
命令:`kubectl logs -f lustre-echo-date`