如何通过KubeRay Helm Chart配置Ray Head节点高可用模式?
配置KubeRay Helm Chart实现Ray Head节点高可用(基于外部Valkey/Redis集群)
要解决Ray Head节点宕机导致作业失败的问题,需通过**GCS容错(GCS Fault Tolerance)**实现Head节点的Active-Standby高可用,结合你已有的Valkey/Redis集群,具体配置步骤如下:
1. 版本兼容性确认
你当前使用的KubeRay 1.3.0和Ray 2.43.0完全支持GCS容错功能(Ray 2.3+、KubeRay 1.0+即可启用),无需升级版本。
2. 修改Helm Values配置
在你的Argo CD Application的Helm Values中,对head节点添加gcsFaultToleranceOptions配置,并设置Head副本数为2(Active-Standby模式要求)。修改后的完整Head配置如下:
head: replicas: 2 # 必须设置为2,启用Active-Standby高可用 serviceAccountName: hm-ray-cluster-service-account autoscalerOptions: upscalingMode: Default idleTimeoutSeconds: 300 resources: requests: cpu: 1000m memory: 8Gi limits: cpu: 4000m memory: 128Gi # 新增GCS容错配置 gcsFaultToleranceOptions: enabled: true # Valkey/Redis集群地址,集群模式用redis-cluster://,单节点用redis:// redisAddress: "redis-cluster://valkey-cluster-0.valkey-cluster:6379,valkey-cluster-1.valkey-cluster:6379" # 如果Valkey/Redis有密码,可通过Secret引用或直接设置(不建议明文) # redisPassword: "{{ .Values.valkey.password }}" # 状态持久化到Redis的频率(默认30秒) persistFrequency: "30s" # Head故障后的恢复超时时间(默认120秒) recoveryTimeout: "120s"
3. 关键配置项说明
replicas: 2:Ray Head HA采用Active-Standby架构,必须设置2个副本,KubeRay会自动管理主备切换。gcsFaultToleranceOptions.enabled: true:开启GCS状态持久化与恢复功能。redisAddress:填写你的Valkey/Redis集群访问地址,集群模式使用redis-cluster://前缀,多个节点用逗号分隔;单节点使用redis://前缀。redisPassword:若你的Valkey/Redis集群启用了密码认证,可通过Helm变量引用K8s Secret中的密码,避免明文配置。persistFrequency:控制Ray集群状态(作业元数据、任务状态等)持久化到Redis的频率,频率越高恢复数据越完整,但会增加Redis负载。recoveryTimeout:Head节点故障后,Standby节点完成状态恢复的超时时间,超时则恢复失败。
4. 额外注意事项
- 网络连通性:确保Ray Head节点所在的K8s命名空间能访问Valkey/Redis集群,若有网络策略需放行对应端口(默认6379)。
- 作业层面的恢复:GCS容错仅能恢复集群状态,常规Ray作业需自行实现Checkpoint机制,否则Head恢复后未完成的作业无法继续执行,需重新提交。
- 验证部署:部署完成后,查看Head节点的Pod日志,搜索
GCS fault tolerance enabled关键字,确认GCS已成功连接到Valkey/Redis集群;主动删除Active Head Pod,观察Standby Pod是否自动切换为Active,且集群状态正常。
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

