Kubernetes集群部署Couchbase Server失败(Memcached相关问题)
排查Kind(Podman)集群中Couchbase Server启动失败问题
问题重现
部署配置(couchbase-cluster.yaml)
apiVersion: apps/v1 kind: Deployment metadata: name: couchbase labels: app: couchbase env: dev spec: replicas: 1 selector: matchLabels: app: couchbase env: dev template: metadata: labels: app: couchbase env: dev spec: containers: - name: couchbase image: couchbase/server:enterprise-7.2.5 imagePullPolicy: IfNotPresent ports: - name: first containerPort: 8091 - name: second containerPort: 8092 - name: third containerPort: 8093 - name: forth containerPort: 8094 - name: fifth containerPort: 8085 - name: last containerPort: 11210
Pod状态
执行kubectl apply -f couchbase-cluster.yaml后,Pod显示Running但服务未正常启动:
NAME READY STATUS RESTARTS AGE couchbase-597ddbf7b9-bhwjl 1/1 Running 0 93s
核心错误日志
从memcached.log中发现致命启动错误:
2024-05-18T21:33:21.715214+00:00 WARNING Failed to create audit thread 2024-05-18T21:33:21.715239+00:00 CRITICAL FATAL: Failed to start audit daemon 2024-05-18T21:33:21.715706+00:00 INFO ---------- Closing logfile
该错误引发连锁问题:
- couchbase.log:组件无法连接memcached
- error.log:无法推送TLS配置到memcached,Prometheus配置服务终止
问题分析
核心原因是Couchbase的审计守护进程(audit daemon)需要Linux内核的AUDIT_WRITE权限,而Kubernetes默认容器未分配该权限,导致memcached启动失败,进而整个Couchbase服务无法正常运行。
解决方案
方案1:给容器添加必要权限(推荐)
修改Deployment的容器配置,添加securityContext字段授予AUDIT_WRITE能力:
apiVersion: apps/v1 kind: Deployment metadata: name: couchbase labels: app: couchbase env: dev spec: replicas: 1 selector: matchLabels: app: couchbase env: dev template: metadata: labels: app: couchbase env: dev spec: containers: - name: couchbase image: couchbase/server:enterprise-7.2.5 imagePullPolicy: IfNotPresent securityContext: capabilities: add: ["AUDIT_WRITE"] ports: - name: first containerPort: 8091 - name: second containerPort: 8092 - name: third containerPort: 8093 - name: forth containerPort: 8094 - name: fifth containerPort: 8085 - name: last containerPort: 11210
重新应用配置并重启Pod:
kubectl apply -f couchbase-cluster.yaml kubectl rollout restart deployment couchbase
方案2:临时禁用审计守护进程(仅测试环境)
若为测试场景,可通过启动参数跳过审计守护进程:
containers: - name: couchbase image: couchbase/server:enterprise-7.2.5 command: ["/entrypoint.sh", "--no-audit-daemon"] # 其他配置保持不变
方案3:改用Couchbase官方Operator(生产环境推荐)
Couchbase是有状态应用,官方Operator会自动处理权限、网络、持久化等复杂配置,更适配生产级部署需求。
验证
重启Pod后,检查memcached日志确认无致命错误:
kubectl exec -it <pod-name> -- cat /opt/couchbase/var/lib/couchbase/logs/memcached.log
通过端口转发访问Web UI:
kubectl port-forward <pod-name> 8091:8091
访问http://localhost:8091即可进入集群配置界面。
内容的提问来源于stack exchange,提问作者NSN
相关产品推荐
相关产品推荐

