在Kubernetes集群部署Horovod Helm Chart时遇SSH认证及初始化故障
解决方案
1. 处理Chart弃用与未知字段报错
- 官方
stable/horovod仓库已停止维护,建议切换到Horovod官方提供的部署资源,或直接编写Kubernetes YAML文件部署,避免依赖弃用的Chart。 - 未知字段
spec.template.spec.selector是由于新版Kubernetes API禁止在Pod模板中定义该字段,需检查Chart模板文件,删除该字段配置;若使用自定义values.yaml,确认是否误添加了该字段。
2. Worker Pod就绪探针权限拒绝修复
Worker Pod状态Running但Ready为0/1,是因为就绪探针执行ssh localhost ls时权限不足或SSH服务未正确配置:
- 进入目标Worker Pod:
kubectl exec -it mnist-horovod-0 -- /bin/bash - 检查并启动SSH服务:
service ssh status service ssh start - 修正SSH密钥目录及文件权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys - 若使用Chart部署,需修改模板中的容器初始化脚本,确保容器启动时自动生成SSH密钥对并启动SSH服务,避免手动操作。
3. Master Pod Init容器CrashLoopBackOff解决
Init容器wait-workers无法SSH连接Worker,核心原因是Worker的SSH服务未就绪或密钥认证失败:
- 先完成上述Worker Pod的修复,确保Worker本地SSH可正常登录。
- 验证Master与Worker的SSH密钥一致性:进入Master的Init容器(若能进入),查看
~/.ssh/id_rsa.pub,对比Worker Pod中~/.ssh/authorized_keys的内容,确保两者匹配。 - 调整Init容器的重试策略:修改Chart的values.yaml,增加
backoffLimit(重试次数)和timeoutSeconds(超时时间),避免因Worker启动缓慢导致的连接失败。 - 测试Worker的网络可达性:在Master Init容器中执行
ssh <Worker-Pod-IP> ls,确认网络连通性,若不通需检查集群网络策略或Pod的NetworkPolicy配置。
内容的提问来源于stack exchange,提问作者Mehrshad shakeri
相关产品推荐
相关产品推荐

