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 rdma-shared-device-plugin lol-iot/rdma-shared-device-plugin \
--install \
--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