将静态预配与 Azure Managed Lustre CSI 驱动程序配合使用

通过使用静态预配,可以将现有Azure Managed Lustre文件系统与 AKS 群集配合使用。 手动创建必要的 Kubernetes 资源。 此方法涉及创建引用现有 Lustre 群集并指定 MGS IP 地址的存储类。 对于有现有的 Lustre 基础架构的方案,请使用此方法。

静态预配的先决条件

创建用于静态预配的 Azure 托管 Lustre 文件系统群集

如果尚未创建Azure Managed Lustre文件系统群集,请立即创建群集。 有关说明,请参阅 使用 Azure 门户创建 Azure 托管 Lustre 文件系统。 静态预配需要现有的 Azure 托管 Lustre 文件系统。

安装用于静态预配的驱动程序

为任一预配方法完成共享 群集准备 和 驱动程序安装 步骤一次。 如果已安装驱动程序,请按照 升级 CSI 驱动程序 而不是安装第二个副本进行操作。

在创建持久卷声明或装载卷之前完成 驱动程序准备情况检查。 在当前 kubectl 上下文选择的同一工作负荷命名空间中创建示例 PVC 和 Pod。

为静态预配创建并配置持久卷

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

  1. 从 v0.6.0 azurelustre-csi-driver 源中的 /docs/examples/ 文件夹中复制以下配置文件。

    • storageclass_existing_lustre.yaml
    • pvc_storageclass.yaml

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

  2. 在Azure门户中,打开Azure Managed Lustre文件系统并选择“客户端连接”。 复制 MGS IP 地址。 在 storageclass_existing_lustre.yaml 中,将整个 ${EXISTING_LUSTRE_IP_ADDRESS} 占位符替换为该地址。

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

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

创建用于静态预配的 Pod

创建一个使用 PVC 来挂载 Azure 托管的 Lustre 文件系统的 Pod。 此示例适用于安装了驱动程序的 Linux amd64 节点;在支持的 ARM 节点上使用与 ARM 兼容的映像。

请创建一个名为 pod_echo_date.yaml 的文件,并复制以下 YAML 内容到其中:

apiVersion: v1
kind: Pod
metadata:
  name: lustre-echo-date
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    name: lustre-echo-date
    command:
      - "/bin/sh"
      - "-c"
      - "while true; do echo $(date) >> /mnt/lustre/outfile; sleep 1; done"
    volumeMounts:
    - name: lustre-storage
      mountPath: /mnt/lustre
  volumes:
  - name: lustre-storage
    persistentVolumeClaim:
      claimName: pvc-lustre

将 Pod 应用到 AKS 群集:

kubectl apply -f pod_echo_date.yaml

验证静态预配

等待示例 Pod 准备就绪,然后检查其装载:

kubectl wait --for=condition=Ready pod/lustre-echo-date --timeout=10m &&
kubectl exec -it lustre-echo-date -- df -h

您应该能看到 Azure 托管 Lustre 文件系统已装载在 /mnt/lustre。

确认新时间戳继续显示在装载的文件中。

kubectl exec lustre-echo-date -- tail -f /mnt/lustre/outfile

确认出现新时间戳后按 Ctrl+C。

清理静态资源

完成该示例后,在 VOLUME 列中查找其 PV 名称:

kubectl get pvc pvc-lustre -o wide

将 <pv-name> 替换为该名称,然后删除示例 Pod、PVC、PV 和 StorageClass:

kubectl delete pod lustre-echo-date
kubectl delete pvc pvc-lustre
kubectl delete pv <pv-name>
kubectl delete storageclass sc.azurelustre.csi.azure.com

Important

此步骤仅删除 Kubernetes 资源。 Azure Managed Lustre文件系统本身仍然存在,可以重复使用。

Troubleshooting

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

有关常见的驱动程序安装、节点调度和升级问题,请参阅 CSI 驱动程序故障排除。

静态预配的常见问题包括:

  • AKS 与 Azure Managed Lustre 之间的网络连接问题 - 验证虚拟网络对等互连或子网配置。
  • 配置不正确 - 仔细检查存储类配置中的 MGS IP 地址。
  • Pod 计划问题 - 验证节点的有效 OS SKU 是否为 Ubuntu2204 或 Ubuntu2404。 也检查节点架构和污点。
  • 网络设置权限问题 - 验证 AKS 控制平面标识是否对 AKS 子网具有适当的权限。 静态预配不需要控制器创建Azure Managed Lustre文件系统。

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