K8s部署HDFS时Namenode无法启动,hostname解析报错怎么解决
配置调整步骤
- 确认Namenode对应无头服务正常部署
- 执行命令查询服务是否存在:
kubectl get svc -n <部署HDFS的命名空间> | grep hdfs-namenode - 若服务不存在,修改values.yaml配置,开启Namenode无头服务:将
namenode.service.create设为true,namenode.service.clusterIP设为None,确保服务类型为无头服务。
- 匹配StatefulSet与无头服务绑定关系
- 检查Namenode StatefulSet的
spec.serviceName字段值,必须与上述无头服务的名称完全一致。若不一致,在values.yaml的namenode.statefulset.serviceName字段填写正确的无头服务名称。
- 兜底方案:强制注入hosts解析条目
- 若集群本身DNS存在解析异常,可通过配置hostAliases直接将Namenode的主机名与IP写入Pod的/etc/hosts文件,values.yaml配置示例如下:
namenode: statefulset: hostAliases: - ip: "Namenode Pod对应的集群内IP" hostnames: - "hdfs-namenode-0.hdfs-namenode.<部署命名空间>.svc.cluster.local" - "hdfs-namenode-0"
多Namenode副本场景需要补充所有副本对应的IP与主机名条目
4. 排查集群DNS基础服务
- 执行命令确认CoreDNS服务运行正常:
kubectl get pods -n kube-system | grep coredns,排除集群基础DNS故障导致的解析失败。
所有配置调整完成后,执行helm升级命令生效配置:helm upgrade <你的HDFS release名称> <本地chart路径> -f values.yaml
相关参考截图:

内容的提问来源于stack exchange,提问作者Prasith Prabhu
相关产品推荐
相关产品推荐

