RDMA Shared Device Plugin
RDMA Shared Device Plugin
Reference
kubelet에 디바이스 리소스의 존재를 알리고, Host의 RDMA 디바이스(Ex. /dev/infiniband/{issm,rdma_cm,umad,uverbs})를 Pod에서 사용할 수 있도록 하는 플러그인입니다.
설치
helm repo add lol-iot https://lol-iot.github.io/helm-charts
helm repo update lol-iot \
&& helm search repo lol-iot/rdma-shared-device-plugin -l | head -n 10
helm pull lol-iot/rdma-shared-device-plugin --version 1.5.3
helm show values lol-iot/rdma-shared-device-plugin --version 1.5.3 \
  > rdma-searched-device-plugin-1.5.3.yaml
helm template rdma-shared-device-plugin lol-iot/rdma-shared-device-plugin \
    --version 1.5.3 \
    -n kube-system \
    -f rdma-searched-device-plugin-values.yaml \
    > rdma-shared-device-plugin.yaml
helm upgrade -i rdma-shared-device-plugin lol-iot/rdma-shared-device-plugin \
    --history-max 5 \
    --version 1.5.3 \
    -n kube-system \
    -f rdma-searched-device-plugin-values.yaml
Plugin 설정
config:
  periodicUpdateInterval: 300
  configList:
    - resourcePrefix: mellanox
      resourceName: hca_a
      rdmaHcaMax: 1000
      devices:
        - ib0
        - ib1
- periodicUpdateInterval: 호스트 장치 변경사항 업데이트 주기입니다.- 0 으로 설정하면 업데이트가 비활성화됩니다.
- 설정하지 않으면 기본값인 60 초로 설정됩니다.
 
- configList- resourcePrifix- Optional
- 기본값으로 rdma가 사용됩니다.
 
- resourceName- resourcePrifix내에서 유일한 이름이어야합니다.
 
- rdmaHcaMax: 디바이스에 의해 제공되는 RDMA 리소스의 최대 값입니다.
- selectors: 디바이스를 선택하는 데 사용되는 필터입니다.- Optional
- 선언되지 않은 필드는 무시됩니다.
- 선언된 필드들은 AND 조건으로 사용되고, 필드의 값들은 OR 조건으로 사용됩니다. e.g., vendor "15b3" && deviceID "1017" && (ifName "ib3" || ifName "ib4")
- vendors: 벤더를 Hex 코드로 표현한 문자열입니다.- cat /sys/class/net/<ifName>/device/vendor
 
- deviceIDs: 디바이스 ID를 Hex 코드로 표현한 문자열입니다.- cat /sys/class/net/<ifName>/device/device
 
- drivers- readlink -f /sys/class/net/<ifName>/device/driver
 
- ifNames- ls /sys/class/net/
 
- linkTypes- ip link show dev <ifName>
 
 
- devices:- selectors에- ifNames만 있는 경우와 동일합니다.- Optional
 
 
장치 사용하기
apiVersion: v1
kind: Pod
spec:
  containers:
    - resources:
        limits:
          <resourcePrefix>/<resourceName>: "1"
ls -l /dev/infiniband /sys/class/infiniband /sys/class/net