通过使用静态预配,可以将现有Azure Managed Lustre文件系统与 AKS 群集配合使用。 手动创建必要的 Kubernetes 资源。 此方法涉及创建引用现有 Lustre 群集并指定 MGS IP 地址的存储类。 对于有现有的 Lustre 基础架构的方案,请使用此方法。
静态预配的先决条件
- 现有的 Azure Managed Lustre 文件系统。 有关创建文件系统的信息,请参阅使用 Azure 门户创建Azure Managed Lustre文件系统。
- Azure Managed Lustre 文件系统的 MGS IP 地址。
- 拥有有效订阅的 Azure 帐户。 创建试用帐户。
- 安装了 Azure CLI 工具的终端环境。 请参阅 Azure CLI 入门。
- kubectl,Kubernetes 管理工具,已安装在您的终端环境中。
- 满足 v0.6.0 兼容性要求的 AKS 群集,包括支持的节点操作系统、体系结构和
kubernetes.azure.com/os-sku-effective标签。 - CSI 驱动程序先决条件中的工具、网络访问和节点调度要求
- AKS 群集与 Azure 托管 Lustre 虚拟网络之间的网络连接。 有关配置选项,请参阅AKS 使用 Azure Managed Lustre 的网络体系结构规划。
创建用于静态预配的 Azure 托管 Lustre 文件系统群集
如果尚未创建Azure Managed Lustre文件系统群集,请立即创建群集。 有关说明,请参阅 使用 Azure 门户创建 Azure 托管 Lustre 文件系统。 静态预配需要现有的 Azure 托管 Lustre 文件系统。
安装用于静态预配的驱动程序
为任一预配方法完成共享 群集准备 和 驱动程序安装 步骤一次。 如果已安装驱动程序,请按照 升级 CSI 驱动程序 而不是安装第二个副本进行操作。
在创建持久卷声明或装载卷之前完成 驱动程序准备情况检查。 在当前 kubectl 上下文选择的同一工作负荷命名空间中创建示例 PVC 和 Pod。
为静态预配创建并配置持久卷
要为现有 Azure Managed Lustre 文件系统创建持久性卷:
从 v0.6.0 azurelustre-csi-driver 源中的 /docs/examples/ 文件夹中复制以下配置文件。
- storageclass_existing_lustre.yaml
- pvc_storageclass.yaml
如果不想克隆整个存储库,可以单独下载每个文件。 打开以下每个链接,复制文件的内容,然后将内容粘贴到具有相同文件名的本地文件中。
在Azure门户中,打开Azure Managed Lustre文件系统并选择“客户端连接”。 复制 MGS IP 地址。 在 storageclass_existing_lustre.yaml 中,将整个
${EXISTING_LUSTRE_IP_ADDRESS}占位符替换为该地址。若要创建存储类和永久性卷声明,
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文件系统。
有关其他故障排除资源,请参阅: