安装 Azure Managed Lustre CSI 驱动程序

为动态预配或静态预配安装驱动程序一次。 如果已安装,请按照 升级 CSI 驱动程序进行操作。 可以选择在安装之前 验证映像签名 。

Prerequisites

查看 CSI 驱动程序先决条件,包括 Kubernetes 1.29 或更高版本、支持的节点操作系统和体系结构、安装工具、网络访问和节点调度。

对于动态预配,请在安装驱动程序之前配置 控制器标识权限 。

准备集群

这些步骤适用于这两种预配方法。

创建 AKS 群集

如果还没有 AKS 群集,请创建一个。 请参阅 使用 Azure 门户部署 Azure Kubernetes 服务(AKS)群集。

创建虚拟网络对等互连

对于动态预配,请在对等互连之前选择或创建目标虚拟网络和子网。 驱动程序创建文件系统,而不是网络。 遵循Azure Managed Lustre网络先决条件。

Note

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

标识 AKS 节点池使用的虚拟网络和子网。 AKS 创建的虚拟网络位于群集的基础结构资源组中,并显示在 Azure 门户的属性下。 如果你提供了自己的虚拟网络,请改用其资源组。 将虚拟网络与为Azure Managed Lustre选择的虚拟网络对等互连。

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

Tip

由于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,请安装 kubectl。

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

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

安装驱动程序

驱动程序命令使用 kube-system;如果你的 Helm 安装所用命名空间不同,请在所有命令中统一替换为你的驱动程序命名空间。 该脚本使用 kube-system。 在当前 kubectl 上下文选择的同一工作负荷命名空间中创建示例 PVC 和 Pod。

在任一安装方法之后,在创建声明或装载卷之前完成 驱动程序准备情况检查 。

使用 Helm 进行安装

Helm 是推荐的安装方法。 从 Microsoft 容器注册表(MCR)安装已发布的 OCI 图表包:

helm install azurelustre \
   oci://mcr.microsoft.com/microsoft.azuremanagedlustre/azurelustre-csi-driver \
   --namespace kube-system --create-namespace \
   --version 0.6.0 --wait --timeout 30m

图表版本为 0.6.0,不带 v 前缀。 此 Chart 选择 v0.6.0 驱动程序映像系列。 图表版本和驱动程序版本是独立的。

对于Microsoft Entra工作负荷标识,请完成标识设置,然后将--set IsWorkloadIdentityEnabled=Enabled和--set IdentityClientId=<managed-identity-client-id>添加到此命令中。

使用脚本进行安装

或者,安装版本固定的清单:

set -o pipefail
curl -sSL --fail https://raw.githubusercontent.com/kubernetes-sigs/azurelustre-csi-driver/v0.6.0/deploy/install-driver.sh | bash -s v0.6.0

Important

在脚本 URL 和脚本参数中指定 v0.6.0 ,以便命令安装本文中所述的版本。 如果没有参数,安装程序可以安装与 main 分支不同的版本。

有关相应的源和部署清单,请参阅 v0.6.0 版本。

验证安装

Helm 资源名称取决于发布名称,因此命令使用这两种安装方法共享的标签。 它们假定使用 kube-system 命名空间;如果你的安装命名空间不同,请使用你的安装命名空间。

  1. 等待控制器和节点守护程序集准备就绪:

    kubectl get deployment -n kube-system -l app=csi-azurelustre-controller
    kubectl rollout status deployment -n kube-system -l app=csi-azurelustre-controller --timeout=300s
    kubectl rollout status daemonset -n kube-system -l app=csi-azurelustre-node --timeout=1800s
    

    必须有一个控制器 Deployment,其所需副本已就绪且可用。

  2. 确认每个节点 DaemonSet 具有预期的就绪 Pod 数:

    kubectl get daemonset -n kube-system -l app=csi-azurelustre-node -L flavor
    

    必须有两个节点 DaemonSet,并且具有 jammy 和 noble 类型。 当没有符合条件的节点与该 flavor 匹配时,DaemonSet 可以有零个所需的 Pod。 对于每个具有所需 Pod 的 DaemonSet,CURRENT、READY、AVAILABLE 和 UP-TO-DATE 必须等于 DESIRED。

  3. 比较节点列表和 Pod 列表,以确认每个预期的节点都有一个 CSI 节点 Pod:

    kubectl get nodes -L kubernetes.azure.com/os-sku-effective
    kubectl get pods -n kube-system -l app=csi-azurelustre-node -o wide
    

    打算运行 Azure Managed Lustre 工作负载的每个节点都必须出现在 pod 列表的 NODE 列中。 没有 CSI 节点 Pod 的节点无法装载 Azure Managed Lustre,即使所有三个 DaemonSets 都显示为就绪也是如此。

  4. 确认每个 CSI 节点 Pod 已准备就绪,并使用预期的 v0.6.0 映像:

    kubectl get pods -n kube-system -l app=csi-azurelustre-node -o wide
    kubectl get pods -n kube-system -l app=csi-azurelustre-node -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.nodeName}{"\t"}{.spec.containers[?(@.name=="azurelustre")].image}{"\t"}{.spec.initContainers[?(@.name=="lustre-loader")].image}{"\n"}{end}'
    kubectl get pods -n kube-system -l app=csi-azurelustre-controller -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[?(@.name=="azurelustre")].image}{"\n"}{end}'
    

    每个节点 Pod 都必须在 READY 列中显示 4/4,并在 STATUS 列中显示 Running。 第四个 lustre-loader 容器是原生 sidecar,它加载内核模块并检查 LNet 就绪情况。 具有少于四个就绪容器的运行中 Pod 无法提供挂载。 azurelustre和lustre-loader镜像都必须使用 MCR 存储库以及 兼容性表中列出的相应 v0.6.0-jammy 标记或 v0.6.0-noble 标记。 控制器使用 v0.6.0-noble 镜像。

新安装后,继续 执行动态预配 或 静态预配。 对于升级,请在重启工作负载之前继续 验证升级 。