k8s nacos 集群部署流程

0 查看原文 ↗

一、核心配置解析

  1. Headless Service (nacos-headless)

    • 类型为 ClusterIP: None,用于为 StatefulSet 提供稳定的 DNS 记录(如 nacos-0.nacos-headless.default.svc.cluster.local)。
    • 暴露 4 个端口:
      • 8848:Nacos 客户端访问端口
      • 9848/9849:Nacos 2.0+ 的 gRPC 通信端口
      • 7848:兼容 1.4.x 版本的选举端口
  2. ConfigMap (nacos-cm)

    • 存储 MySQL 数据库配置(地址、库名、凭据等),供 StatefulSet 通过环境变量引用。
    • 注意:需提前确保 MySQL 服务可用,且数据库 nacos_devtest 已初始化(建议执行 Nacos 的 MySQL 初始化脚本)。
  3. StatefulSet (nacos)

    • 副本数:3 个 Pod,通过 podAntiAffinity 确保分散在不同节点(提升高可用性)。
    • 资源请求:每个 Pod 请求 2GB 内存和 0.5 CPU。
    • 环境变量:
      • NACOS_SERVERS 明确指定集群节点地址(必须与 Headless Service 的 DNS 格式匹配)。
      • PREFER_HOST_MODE: hostname 确保节点以主机名注册到集群。

二、Rancher 操作步骤

  1. 创建 ConfigMap
  1. 创建 Headless Service
  1. 部署 StatefulSet
  1. 验证部署

三、常见问题与调优建议

  1. MySQL 连接问题

    • 若出现数据库连接失败,检查:
      • MySQL 服务是否允许集群内访问。
      • ConfigMap 中的密码是否含特殊字符(需转义)。
    • 建议:在 MySQL 中为 Nacos 创建专用用户并限制权限。
  2. 集群启动顺序

    • StatefulSet Pod 按顺序启动(nacos-0 → nacos-1 → nacos-2),首次启动需等待 nacos-0 完全就绪。
    • 可增加 initialDelaySecondslivenessProbe 避免健康检查过早失败。
  3. 资源不足

    • 若 Pod 频繁重启,需调整 resources.limits(例如内存设为 4Gi)。
    • 监控工具建议:通过 Rancher 的 Monitoring 查看 Pod 资源使用率。
  4. 版本兼容性

    • 若从 Nacos 1.4.x 升级,需保留 7848 端口;纯 2.0+ 环境可移除该端口。

四、扩展配置(可选)

通过以上步骤,可在 Rancher 中快速部署高可用的 Nacos 集群。部署后建议通过 Nacos 控制台(http://<Pod-IP>:8848/nacos)验证节点列表和配置管理功能。

💬 评论