在ACK中添加eRDMA机型的节点

本文介绍如何将eRDMA机型的节点加入ACK中。

使用限制

  • 仅1.24及以上版本的ACK集群支持eRDMA实例节点的添加,且如果节点为GPU节点时,仅支持470.xx.xx以上的NVIDIA驱动版本。

  • ACK支持全部eRDMA机型节点加入集群。支持eRDMA的ECS实例类型,请参见:

前提条件

  • 已在节点上安装eRDMA

    • 通过OS镜像预安装

      在集群中添加支持eRDMA的节点时,可以使用阿里云官方提供的已经部署好eRDMA驱动的OS镜像。其Image Id为m-2ze71xexpolzv031di8z。该镜像需要您前往Cloud Market购买(不计费)。

    • 手动安装

      如果您希望手动在实例上安装eRDMA软件栈,流程如下:

      1. 在GPU实例上配置eRDMA

      2. 安装后,通过手动添加节点的方式将该实例添加到集群中,请参见添加已有节点

  • 已创建eRDMA网卡,并与目标ECS实例绑定。详细信息,请参见创建辅助弹性网卡

添加支持eRDMA的节点至ACK集群

手动添加

  1. 将节点的OS镜像设置为前提条件中获取到的OS镜像。

  2. 手动添加节点

自动添加

  1. 新建节点池,OS镜像为前提条件中获取到的OS镜像。

  2. 自动添加节点

相关操作

节点安装eRDMA依赖

您如果想要使用eRDMA节点,例如在eRDMA节点上部署应用,则必须安装eRDMA Device Plugin。

  1. 准备test.yaml文件。

    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: rdma-devices
      namespace: kube-system
    data:
      config.json: |
        {
            "mode" : "hca"
        }
    ---
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: rdma-sriov-dp-ds
      namespace: kube-system
      labels:
        app: rdma-device-plugin
    spec:
      selector:
        matchLabels:
          app: rdma-device-plugin
      template:
        metadata:
          labels:
            app: rdma-device-plugin
            name: rdma-sriov-dp-ds
        spec:
          hostNetwork: true
          nodeSelector:
            aliyun.accelerator/erdma: "true"
          tolerations:
          - key: CriticalAddonsOnly
            operator: Exists
          containers:
          - image: registry-cn-beijing.ack.aliyuncs.com/acs/k8s-rdma-sriov-dev-plugin:v1.0.0-b3dcbc5-aliyun
            name: k8s-rdma-sriov-dp-ds
            imagePullPolicy: Always
            resources:
              limits:
                memory: "300Mi"
                cpu: "300m"
              requests:
                memory: "300Mi"
                cpu: "300m"
            securityContext:
              privileged: true
            volumeMounts:
              - name: device-plugin
                mountPath: /var/lib/kubelet/device-plugins
              - name: config
                mountPath: /k8s-rdma-sriov-dev-plugin
          volumes:
            - name: device-plugin
              hostPath:
                path: /var/lib/kubelet/device-plugins
            - name: config
              configMap:
                name: rdma-devices
                items:
                - key: config.json
                  path: config.json
  2. 执行如下命令,部署eRDMA Device Plugin。

    kubectl apply -f test.yaml

    预期输出:

    configmap/rdma-devices created
    daemonset.apps/rdma-sriov-dp-ds created

    预期输出表明,eRDMA Device Plugin部署成功。

容器安装eRDMA依赖

如需在容器中使用eRDMA功能,需要安装eRDMA的用户态驱动程序包,具体操作,请参见步骤二:在Docker内安装eRDMA驱动程序包

说明

建议您将容器内安装eRDMA依赖的操作集成并写入您所使用eRDMA业务镜像的Dockerfile中,可以在多个环境下确保一致性和可重复性,简化部署流程,提升开发和运维效率。Dockerfile具体制作过程,请参见Dockerfile编写教程