【华为云CCE实战】内网环境下的Nacos集群容器化部署全流程

张开发
2026/4/12 16:15:51 15 分钟阅读

分享文章

【华为云CCE实战】内网环境下的Nacos集群容器化部署全流程
1. 内网环境下的Nacos集群部署挑战在企业级微服务架构中Nacos作为服务注册中心和配置中心扮演着关键角色。但在内网隔离环境下部署Nacos集群就像在没有GPS信号的隧道里组车队——既需要确保每辆车节点都能互相定位又要保持队形稳定。华为云CCE提供的容器化解决方案正好能解决这个典型的企业级难题。我去年为某金融机构实施过类似项目他们的生产环境完全隔离外网连yum安装基础组件都要走内部仓库。这种场景下传统基于Helm的公网部署方案完全失效必须走自定义镜像有状态负载的路线。下面我就把实战中验证过的完整方案拆解给大家包含我踩过的三个关键坑点镜像构建时没考虑时区配置导致日志时间戳混乱初始健康检查配置不当引发集群脑裂网络策略未隔离造成非预期服务发现2. 前期准备打造专属镜像仓库2.1 基础环境搭建首先需要在华为云CCE控制台完成这些准备工作创建至少3个Worker节点的集群奇数节点是分布式系统的黄金法则开通SWR镜像仓库服务建议选择与CCE同region的仓库准备MySQL 5.7实例提前执行nacos-mysql.sql初始化脚本这里有个细节容易忽略MySQL连接参数要测试telnet连通性。我有次部署失败最后发现是安全组没放通3306端口。建议先用临时Pod测试数据库连接kubectl run mysql-test --rm -it --imagemysql:5.7 -- \ mysql -h数据库IP -uroot -pPASSWORD2.2 镜像定制与推送在内网环境需要自行构建Nacos镜像推荐基于官方镜像二次封装。这是经过生产验证的DockerfileFROM nacos/nacos-server:latest # 解决内网时区问题 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 添加健康检查脚本 COPY health-check.sh /home/nacos/bin/ HEALTHCHECK --interval30s --timeout5s \ CMD bash /home/nacos/bin/health-check.sh推送镜像到SWR的关键命令序列docker tag nacos/nacos-server:latest swr.cn-east-3.myhuaweicloud.com/org-name/nacos:v1 # 获取登录凭证注意有效期1小时 docker login -u账号 -p密码 swr.cn-east-3.myhuaweicloud.com docker push swr.cn-east-3.myhuaweicloud.com/org-name/nacos:v13. 有状态负载深度配置3.1 工作负载创建要点在CCE控制台创建StatefulSet时这些参数需要特别注意实例数固定为3不要选自动伸缩容器规格建议4核8G起步JVM内存开销大持久化存储必须挂载/data目录到云硬盘环境变量配置模板PREFER_HOST_MODEhostname SPRING_DATASOURCE_PLATFORMmysql MYSQL_SERVICE_HOST数据库内网IP MYSQL_SERVICE_PORT3306 MYSQL_SERVICE_USERnacos MYSQL_SERVICE_PASSWORD加密密码 JVM_XMS2g JVM_XMX2g3.2 服务发现关键配置创建Headless Service时端口映射要包含这四个8848主服务端口7848集群RPC端口9848gRPC API端口9555Prometheus监控端口建议服务名称格式nacos-hshs代表headless service。这个命名会影响后续的集群节点发现必须保持全集群统一。4. 集群互联实战技巧4.1 节点发现机制Nacos集群需要每个节点知晓其他成员地址。在CCE中StatefulSet的Pod有固定DNS名称pod-name.service-name.namespace.svc.cluster.local对于三节点集群需要拼接如下地址字符串作为NACOS_SERVERS环境变量nacos-0.nacos-hs.default.svc.cluster.local:8848, nacos-1.nacos-hs.default.svc.cluster.local:8848, nacos-2.nacos-hs.default.svc.cluster.local:88484.2 健康检查优化默认的TCP端口检查不够可靠建议使用HTTP接口检查。这是我修改过的健康检查脚本#!/bin/bash curl -s http://127.0.0.1:8848/nacos/v1/ns/health/instance | \ grep -q status:UP exit $?在容器配置中需要增加启动后延迟检查initialDelaySeconds建议设为60秒避免Nacos启动慢导致误判。5. 访问与验证5.1 双模式服务暴露建议同时创建两种ServiceClusterIP供集群内微服务访问NodePort用于管理控制台访问访问验证时重点检查/nacos/v1/ns/service/list服务注册/nacos/v1/cs/configs配置管理/nacos/v1/ns/raft/state集群状态5.2 常见问题排查遇到集群不生效时按这个顺序检查执行kubectl logs pod-name -n namespace看节点日志进入Pod内执行telnet 其他节点IP 7848测试集群通信检查MySQL连接数是否爆满show processlist记得在Nacos控制台的集群管理页面确认所有节点状态为UP。如果出现脑裂情况可以尝试逐个重启Pod先杀从节点最后重启主节点。

更多文章