mpi operator
- 计算 Replica 及 Slot 数
- 创建 ConfigMap
- hostfile
1 | [mpiJobName]-worker-i slots=[8] |
[mpiJobName]-worker-i i.e. ${POD_NAME} of statefulset’s pod
kubexec.sh
1 |
|
- 创建 Statefulset
Container Command: Sleep
- 创建 Launcher (Job)
Statefulset ready 后,创建 Launcher (Job)
设置 env OMPI_MCA_plm_rsh_agent 为 kubexec.sh
即使用 kubectl exec ${POD_NAME} -- /bin/sh -c "$*"
作为 ssh_agent
所以 openmpi 是有个潜在要求的,要么是支持 IPoIB,or 要有 IP 网络,纯 IB 网络不行
当然 SDP (Socket Direct Protocol) 能加速 Socket 又是另外一个话题了
1 | # server side |
Running ssh, scp over SDP
lsmod | grep sdp
sdpnetstat -S
设置 env OMPI_MCA_orte_default_hostfile 为 hostfile
Container Command: mpirun
综上,mpi-operator 使用 kube-dns 获得 pod ip,mpirun 使用 kubectl exec
远程登录 container