Mirantis Kubernetes Engine 与 NVIDIA GPU Operator#

关于 MKE 与 GPU Operator#

Mirantis Kubernetes Engine (MKE) 使您能够以适合您的方式构建、运行和扩展云原生应用程序。提高开发人员效率和发布频率,同时降低成本。

NVIDIA GPU Operator 使用 Kubernetes 中的 Operator 框架来自动化部署和管理配置 NVIDIA GPU 所需的所有 NVIDIA 软件组件。 这些组件包括用于启用 CUDA 的 NVIDIA GPU 驱动程序、用于 GPU 的 Kubernetes 设备插件、NVIDIA Container Toolkit、使用 GFD 的自动节点标记、基于 DCGM 的监控等。

验证配置矩阵#

Mirantis Kubernetes Engine 已经使用以下组件和版本进行了自我验证

版本

NVIDIA
GPU
Operator
操作系统
系统
容器
运行时

Kubernetes

Helm

NVIDIA GPU

硬件型号

MKE 3.6.2+ 和 3.5.7+

v23.3.1

RHEL 8.7
Ubuntu 20.04, 18.04

Mirantis Container Runtime (MCR) 20.10.15+ 和 23.0.3+

1.21.12+ 和 1.24.6+

Helm v3

NVIDIA HGX H100
NVIDIA H100
NVIDIA A100
Dell PowerEdge R720
Dell CN-QVWT90-70163-2BJ-00LV-A02
2x Intel Xeon E5-2690
24x RAM 8GB
1x SSD 480GB Micron 5300 PRO
1x SSD 960GB Micron 5300 PRO
1x GPU NVIDIA P1001B A100 PCIe AMPERE 40GB
1x RAID 控制器 PERC H710
1x 网卡 FM487

先决条件#

  • 一个正在运行的 MKE 集群,至少包含一个控制平面节点和两个工作节点。 建议的配置是至少三个控制平面节点和至少两个工作节点。

  • 至少一个物理安装了 NVIDIA GPU 的工作节点。 GPU Operator 可以定位 GPU 并相应地标记节点。

  • 一个种子节点,用于连接到 MKE 实例,并在种子节点上安装 Helm 3.x。

  • 种子节点上 MKE 集群的 kubeconfig 文件。 您可以从 MKE Web 界面下载客户端捆绑包来获取该文件。 配置位于 kube.yml 文件中。

    或者,如果 MKE 集群是 Mirantis Container Cloud (MCC) 实例的托管集群,则可以使用 MCC 管理控制台来获取 kubeconfig 文件。 在这种情况下,可以从 MCC Web 界面访问 MKE Web 界面。 您可以直接从 MCC Web 界面获取托管集群的 kubeconfig 文件。

  • 您拥有 MKE 管理员用户名和密码,并且您拥有 MKE 主机 URL。

步骤#

执行以下步骤来准备 MKE 集群

  1. MKE 不会向工作节点应用标签。 确保工作节点已标记

    $ kubectl label node <node-name> node-role.kubernetes.io/worker=''
    

    示例输出

    node/demo-node labeled
    
  2. 为 GPU Operator 创建命名空间

    $ kubectl create ns gpu-operator
    

    示例输出

    namespace/gpu-operator created
    
  3. 将凭据和连接信息存储在环境变量中

    $ export MKE_USERNAME=<mke-username> \
        MKE_PASSWORD=<mke-password> \
        MKE_HOST=<mke-fqdn-or-ip-address>
    
  4. 从 MKE 获取 API 密钥,以便稍后可以进行 API 调用

    $ AUTHTOKEN=$(curl --silent --insecure --data \
        '{"username":"'$MKE_USERNAME'","password":"'$MKE_PASSWORD'"}' \
        https://$MKE_HOST/auth/login | jq --raw-output .auth_token)
    
  5. 下载 MKE 配置文件

    $ curl --silent --insecure -X GET "https://$MKE_HOST/api/ucp/config-toml" \
        -H "accept: application/toml" -H "Authorization: Bearer $AUTHTOKEN"  \
        > mke-config-gpu.toml
    
  6. 编辑 mke-config-gpu.toml 文件并更新值,如下例所示

    priv_attributes_allowed_for_user_accounts = ["hostbindmounts", "privileged", "hostPID"]
         priv_attributes_user_accounts = ["gpu-operator:gpu-operator"]
    priv_attributes_allowed_for_service_accounts = ["hostbindmounts", "privileged",
      "hostIPC", "hostPID"]
    priv_attributes_service_accounts = ["gpu-operator:nvidia-gpu-feature-discovery",
      "gpu-operator:nvidia-driver", "gpu-operator:nvidia-container-toolkit",
      "gpu-operator:nvidia-operator-validator", "gpu-operator:nvidia-device-plugin",
      "gpu-operator:nvidia-dcgm-exporter", "gpu-operator:nvidia-mig-manager"]
    
  7. 上传编辑后的 MKE 配置文件

    $ curl --silent --insecure -X PUT -H "accept: application/toml" \
        -H "Authorization: Bearer $AUTHTOKEN" --upload-file 'mke-config-gpu.toml' \
        https://$MKE_HOST/api/ucp/config-toml
    

MKE 集群已准备就绪,您可以开始使用 Helm 安装 GPU Operator。 有关更多信息,请参阅 (安装 NVIDIA GPU Operator)

验证 MKE 与 GPU Operator#

  • 查看节点和每个节点上的 NVIDIA GPU 数量

    $ kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPUs:.metadata.labels.nvidia\.com/gpu\.count"
    

    示例输出

    NAME        GPUs
    demo-node   4
    ...
    

    类似于上述示例的响应表明 GPU Operator 和操作数正在正确运行。

请参阅 (验证:运行示例 GPU 应用程序) 以验证安装。

获取支持#

有关使用 MKE 的信息,请参阅 MKE 产品文档。