Appearance
Nacos配置中心部署
**本文引用的文件** - [nacos.yaml](file://lemes-cloud/src/devops/k8s/service/base/nacos.yaml) - [nacos-pgsql.yaml](file://lemes-cloud/src/devops/k8s/service/base/nacos-pgsql.yaml) - [nacos-1.yaml](file://lemes-cloud/src/devops/k8s/service/base/nacos-1.yaml) - [nacos.yml](file://lemes-cloud/src/devops/docker-compose/nacos.yml) - [config.yaml](file://lemes-cloud/src/devops/k8s/service/base/config.yaml) - [baremetal-nginx-ingress.yaml](file://lemes-cloud/src/devops/k8s/baremetal-nginx-ingress.yaml) - [ingress-real-ip.yaml](file://lemes-cloud/src/devops/k8s/ingress-real-ip.yaml)目录
简介
本文件面向运维工程师,提供DeviceMate项目中Nacos配置中心的完整部署与配置说明。内容涵盖:
- 集群部署架构(StatefulSet、服务发现、集群成员管理)
- 数据库集成(MySQL/PostgreSQL连接池、数据持久化、兼容层)
- 核心配置参数(集群模式、内存优化、网络端口)
- Ingress暴露(域名映射、SSL、负载均衡)
- 健康检查、资源限制、存储卷
- 故障排除建议
项目结构
与Nacos部署直接相关的文件位于lemes-cloud/src/devops目录下,主要包含:
- Kubernetes基础服务编排:service/base下的nacos系列与config.yaml
- Docker Compose单机部署:docker-compose/nacos.yml
- Ingress控制器与配置:baremetal-nginx-ingress.yaml与ingress-real-ip.yaml
图表来源
章节来源
核心组件
- StatefulSet:保证稳定网络标识与有序部署/扩缩容,副本数为3,用于构建Nacos集群。
- Service:ClusterIP或NodePort类型,暴露客户端、RPC与旧版选举端口,供集群内部通信与外部访问。
- ConfigMap:集中存放数据库连接信息、命名空间、分组等配置键值。
- Ingress:将/nacos路径转发到Nacos服务,支持HTTP访问(可结合TLS在上游网关实现)。
- Ingress控制器:baremetal-nginx-ingress.yaml定义了nginx Ingress控制器及其RBAC、Service、Deployment等。
- 数据库兼容:nacos-pgsql.yaml通过initContainer注入JDBC代理,使Nacos以PostgreSQL平台运行。
章节来源
- nacos.yaml:30-118
- nacos-pgsql.yaml:30-136
- nacos-1.yaml:29-115
- config.yaml:6-27
- baremetal-nginx-ingress.yaml:261-403
架构总览
Nacos在Kubernetes中采用StatefulSet进行无头服务下的有状态部署,通过ConfigMap注入数据库连接参数,并由Service统一对外暴露。Ingress负责将/nacos前缀路由至Nacos服务,实现统一入口与可扩展的负载均衡。
图表来源
详细组件分析
StatefulSet与集群成员管理
- 副本数:3,确保高可用与Raft一致性。
- 稳定网络标识:通过serviceName与headless Service,Pod具备稳定的DNS域名,便于集群内节点互相发现。
- 环境变量关键项:
- 集群模式与副本数:MODE=cluster、NACOS_REPLICAS=3
- 服务器端口:NACOS_SERVER_PORT
- 主机名偏好:PREFER_HOST_MODE=hostname
- 集群节点列表:NACOS_SERVERS(按Pod序号与Service FQDN拼接)
- 端口映射:
- 客户端:31000(v2)、8848(v1)
- 客户端RPC:32000(v2)、9848(v1)
- Raft RPC:32001(v2)、9849(v1)
- 兼容旧版选举端口:30000(v2)、7848(v1)
图表来源
章节来源
服务发现与集群成员管理
- Headless Service:ClusterIP=None,配合StatefulSet生成稳定DNS域名,如lemes-nacos-0.lemes-nacos-svc.default.svc.cluster.local。
- 集群成员列表:通过NACOS_SERVERS显式声明所有节点地址,确保启动阶段快速收敛。
- DNS解析:Pod内可通过主机名与端口直接访问其他节点,降低配置复杂度。
章节来源
数据库集成与持久化
- MySQL直连(默认):通过ConfigMap注入数据库主机、端口、用户名、密码与库名,容器环境变量直接消费。
- PostgreSQL兼容:nacos-pgsql.yaml通过initContainer将JDBC代理拷贝到共享卷,容器启动时加载javaagent,将MySQL JDBC URL转换为PostgreSQL URL。
- 连接参数:包含字符集、连接超时、Socket超时、自动重连与时区设置。
- 持久化策略:当前StatefulSet未挂载PVC,数据存储于容器内临时卷。若需持久化,请为每个Pod添加对应PVC与挂载点。
图表来源
章节来源
核心配置参数
- 集群模式:MODE=cluster
- 服务器端口:NACOS_SERVER_PORT(v2默认31000,v1默认8848)
- 主机名偏好:PREFER_HOST_MODE=hostname
- 集群节点列表:NACOS_SERVERS(按Pod序号与Service FQDN拼接)
- 内存优化:requests.cpu/memory与JAVA_OPTS(容器内可调)
- 网络端口:客户端、RPC、Raft及兼容端口均在容器与Service中开放
章节来源
Ingress暴露与域名映射
- 路径映射:/nacos 前缀转发至Service lemes-nacos-svc:31000(v2)或8848(v1)。
- Ingress控制器:使用nginx Ingress控制器,支持NodePort暴露与健康检查。
- 负载均衡:Ingress控制器对后端Service进行轮询LB;生产建议结合TLS与WAF在入口层增强安全。
图表来源
章节来源
健康检查、资源限制与存储卷
- 健康检查:Ingress控制器自带/healthz探针(10254端口),可作为外部健康检查参考。
- 资源限制:容器requests.cpu与memory在StatefulSet中设定,可根据实际负载调整。
- 存储卷:当前未配置PVC;如需持久化,请为每个Pod添加对应PVC与挂载路径。
章节来源
Docker Compose单机部署
- 单实例部署:nacos.yml定义了容器端口映射与环境变量,适合本地开发或测试。
- 环境变量:包含数据库连接、服务器端口、主机名偏好、集群节点列表等。
章节来源
依赖关系分析
- ConfigMap依赖:Nacos容器通过envFrom引用lemes-cm中的数据库连接参数。
- Service依赖:StatefulSet通过serviceName与selector关联到Service,实现稳定的网络标识。
- Ingress依赖:Ingress规则依赖Service名称与端口,确保流量正确转发。
- 数据库依赖:Nacos根据SPRING_DATASOURCE_PLATFORM或DB_URL_0决定连接MySQL或PostgreSQL。
图表来源
章节来源
性能考虑
- 内存与CPU:根据容器requests调整Nacos JVM参数(JAVA_OPTS),避免过度分配导致节点不稳定。
- 端口与网络:确保客户端、RPC与Raft端口均开放且无冲突,避免集群脑裂或节点无法加入。
- 数据库连接池:合理设置连接超时与自动重连,避免在高并发场景下出现连接抖动。
- Ingress性能:启用real-ip与forwarded-for,确保后端日志中获取真实客户端IP;必要时在入口层开启压缩与缓存。
故障排除指南
- 集群无法形成或节点反复重启
- 检查NACOS_SERVERS是否包含所有节点,确认Service FQDN解析正常。
- 查看Pod日志,确认端口占用与权限问题。
- 数据库连接失败
- 校验ConfigMap中的主机、端口、用户名、密码与库名。
- 若使用PostgreSQL兼容模式,确认initContainer已成功拷贝JDBC代理,容器启动参数已加载javaagent。
- Ingress无法访问
- 确认Ingress规则指向正确的Service与端口。
- 检查Ingress控制器健康状态与NodePort可达性。
- 客户端获取配置失败
- 确认命名空间与分组配置一致,检查Nacos控制台登录与权限。
章节来源
结论
本文档提供了DeviceMate项目中Nacos配置中心的完整部署与运维指南,覆盖集群架构、数据库集成、核心参数、Ingress暴露、健康检查与性能优化等方面。建议在生产环境中结合TLS、WAF与监控体系进一步完善安全与可观测性。