https://docs.ray.io/en/latest/autoscaling.html#kubernetes
1. 安装 kuberctl
pip install kubernetes
要让 kuberctl 能访问 kubernetes 集群,需要将配置文件放在 ~/.kube/config 中
2. 生成 ray head
ray up ray/python/ray/autoscaler/kubernetes/example-full.yaml
这个过程可能会报错,因为 autoscaler 镜像比较大,有 5 个多 G,启动 pod 前需要拉取,另外可以将拉取策略改成 never
ray 部署完成之后,只有 head pod, 当用任务运行时,会再创建 worker,之后空闲会再销毁
3. 运行脚本
使用 wrapper.sh,先将要执行的脚本文件通过 ray rsync_up copy 到 head pod 中,然后再运行
RAY_K8S_YAML='../ray-k8s-cluster.yaml'
CURRENT_DIR=$(pwd)
CURRENT_DIR_NAME=${PWD##*/}
RAY_K8S_TARGET=/run/log/
ray rsync_up $RAY_K8S_YAML $CURRENT_DIR $RAY_K8S_TARGET
ray exec $RAY_K8S_YAML "cd $RAY_K8S_TARGET/$CURRENT_DIR_NAME; bash start.sh; rm -rf $RAY_K8S_TARGET/$CURRENT_DIR_NAME"
客户端机器可以通过 shell 拿到 pod 中脚本运行的日志和返回状态