Kubernetes部署CouchDB集群出现5984端口连接拒绝如何解决?
问题根因及修复方案
1. 核心故障:CouchDB进程未启动
你在couchdb-statefulset.yaml的容器配置中添加了command: [ "/bin/bash", "-ce", "tail -f /dev/null" ],这行配置直接覆盖了官方CouchDB镜像默认的服务启动入口,导致Pod运行后只执行了挂起命令,没有实际启动CouchDB进程,自然访问5984端口会返回连接拒绝。
修复方式:直接删除这行command配置,让镜像使用默认启动命令运行CouchDB服务。
2. 配置错误:ERL_FLAGS环境变量重复定义
你在环境变量中定义了两次ERL_FLAGS,后定义的-setcookie couchsecret会覆盖前面的-name couchdb@$(NODENAME),会导致后续集群节点通信失败。
修复方式:将两个参数合并为同一个ERL_FLAGS配置:
- name: ERL_FLAGS value: "-name couchdb@$(NODENAME) -setcookie couchsecret"
删除原来分开定义的两个ERL_FLAGS配置项。
3. 权限适配:NFS挂载目录权限调整
CouchDB容器默认使用uid为5984的couchdb用户运行,需要对挂载的NFS目录有读写权限,你需要先在NFS服务器(你的配置中为192.168.1.100)上执行以下命令修改目录权限:
chown -R 5984:5984 /var/couchnfs/couchdb-*
否则CouchDB启动时会因为无法写入数据目录异常退出。
4. 效果验证
修改完所有配置后重新应用YAML文件,等待Pod启动完成后执行以下命令验证服务状态:
kubectl exec -it couchdb-0 -- curl http://admin:admin@127.0.0.1:5984
正常返回类似如下结果即代表服务运行正常,之后可继续执行你原有的集群配置命令:
{"couchdb":"Welcome","version":"2.3.1","git_sha":"c298091a4","uuid":"xxxxxx","features":["scheduler"],"vendor":{"name":"The Apache Software Foundation"}}
内容的提问来源于stack exchange,提问作者cksawd
相关产品推荐
相关产品推荐

