微服务架构核心组件,Nacos 集群完整部署实践

真成运维 2026-7-28 131 7/28

你好,我是真成。

今天分享一个干货教程,是微服务架构中,必备组件:Nacos。

注意:云原生系列,已经上线两个项目了(含金量很高),运维导航目前已经有 3 个企业级项目。现在加入有大额优惠券领取,领取路径和项目介绍见这篇文章:耗时两月,完成了两个云原生企业级项目教程,40723 字!!

运维导航官网:https://ywdh.qiuyl.com/

本文目录结构如下:

微服务架构核心组件,Nacos 集群完整部署实践

安装 Nacos

Nacos 部署我们可以采用 Operator 方式部署 Nacos 集群,这也是官网推荐方式。本次将安装 Nacos-v3.2.3 目前最新版本。

Nacos 官网文档 K8s 集群部署方式:点击跳转

Nacos Operator 官网部署文档(文档比较旧):点击跳转

微服务架构核心组件,Nacos 集群完整部署实践

安装 Nacos Operator

1)下载 nacos-k8s 源码:https://github.com/nacos-group/nacos-k8s

微服务架构核心组件,Nacos 集群完整部署实践

下载地址:https://github.com/nacos-group/nacos-k8s/releases

微服务架构核心组件,Nacos 集群完整部署实践

上传到服务器解压

yum install -y unzip zip

mkdir -p /opt/platform-tools/operator

tar -xf nacos-k8s-1.0.2.tar.gz

mv nacos-k8s-1.0.2* /opt/platform-tools/operator

cd /opt/platform-tools/operator/nacos-k8s-1.0.2

2)helm 安装 Nacos Operator

./operator:operator 的代码家目录,存放 operator 所有相关信息。

# 默认镜像
nacos/nacos-operator

# 使用镜像
registry.cn-chengdu.aliyuncs.com/qiuyl01/nacos-server:latest
cd /opt/platform-tools/operator/nacos-k8s-1.0.2

kubectl create ns nacos-operator

# helm 安装
helm install nacos-operator ./operator/chart/nacos-operator \
     --namespace nacos-operator \
     --set image.repository=registry.cn-chengdu.aliyuncs.com/qiuyl01/nacos-operator \
     --set image.pullPolicy=IfNotPresent

导入初始化 SQL

1)下载对应版本的初始化 SQL:https://github.com/alibaba/nacos/releases/tag/3.2.3

微服务架构核心组件,Nacos 集群完整部署实践

将这个 SQL 上传到 mysql-8 容器内

docker cp /root/mysql-schema.sql mysql-8:/root/mysql-schema.sql
微服务架构核心组件,Nacos 集群完整部署实践

2)登录 192.168.101.104 安装 MySQL 的节点,创建 nacos_dev 数据库。

进入 mysql-8 容器

docker exec -it mysql-8 bash
mysql -uroot -pmysql.yunwdh.cn

执行 SQL

create database nacos_dev;
use nacos_dev;
source /root/mysql-schema.sql;
-- 查看当前认证插件类型
SELECT user, host, plugin FROM mysql.user;
-- 创建 nacos 用户
CREATE USER 'nacos'@'%' IDENTIFIED BY 'nacos.mysql.yunwdh.cn';
-- 修改 nacos 用户使用 mysql_native_password 方式认证
ALTER USER 'nacos'@'%' IDENTIFIED WITH mysql_native_password BY "nacos.mysql.yunwdh.cn";
-- 开启远程登录权限
GRANT ALL PRIVILEGES ON *.* TO 'nacos'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'nacos'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
微服务架构核心组件,Nacos 集群完整部署实践

运行 Nacos Operator 的 CR

鉴权手册

运行 Nacos 需要开启对应的鉴权模式,本次使用默认鉴权类型。

参考官网文档:点击跳转至鉴权手册

微服务架构核心组件,Nacos 集群完整部署实践
微服务架构核心组件,Nacos 集群完整部署实践

选择 Docker 部署方式,可以获取对应的环境变量参考实例,K8s 部署时也需要这些变量。

微服务架构核心组件,Nacos 集群完整部署实践

各变量解释

微服务架构核心组件,Nacos 集群完整部署实践

生成变量值,安装 Nacos CR 时使用。

1. 自定义生成 NACOS_AUTH_TOKEN 的值,需要通过 base64 转码
$ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
SdzSkqHxpbCX0AiwFsIn4TCgUlB5sgsU
echo -n "SdzSkqHxpbCX0AiwFsIn4TCgUlB5sgsU" | base64
U2R6U2txSHhwYkNYMEFpd0ZzSW40VENnVWxCNXNnc1U=

2. NACOS_AUTH_IDENTITY_KEY # 这个值可以随意填
$ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
2DX2LYupf5fQFgbUP9OO2dqX864CiyrC

3. NACOS_AUTH_IDENTITY_VALUE # 这个值可以随意填
$ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
uwtopQSl5eOTLorjssQXskp5ZDL8AYKu


# 参考
NACOS_AUTH_ENABLE=true
NACOS_AUTH_ADMIN_ENABLE=true
NACOS_AUTH_CONSOLE_ENABLE=true
NACOS_AUTH_SYSTEM_TYPE=nacos
NACOS_AUTH_TOKEN=${custom_base64_token_secret_key}
NACOS_AUTH_IDENTITY_KEY=${custom_server_identity_key}
NACOS_AUTH_IDENTITY_VALUE=${custom_server_identity_value}

安装 Nacos 服务 CR

./operator/nacos-k8s-master/operator/config/samples:存放 CR 样本的目录,可以直接使用里面的 yaml 文件部署

# 默认镜像
nacos/nacos-server:v2.0.3

# 使用镜像
registry.cn-chengdu.aliyuncs.com/qiuyl01/nacos-server:v3.2.3

注意:需要修改 名称空间、镜像、MySQL 连接信息、环境变量值

cd /opt/platform-tools/operator/nacos-k8s-1.0.2

# 备份 nacos_cluster_mysql.yaml
cp ./operator/config/samples/nacos_cluster_mysql.yaml ./operator/config/samples/nacos_cluster_mysql.yaml.bak

kubectl create ns nacos

# 部署Naocs集群,注意修改:名称空间、镜像、环境变量
cat > ./operator/config/samples/nacos_cluster_mysql.yaml << EOF
apiVersion: nacos.io/v1alpha1
kind: Nacos
metadata:
  name: nacos
  namespace: nacos # 修改名称空间
spec:
  type: cluster
  # image: nacos/nacos-server:v2.0.3
  image: registry.cn-chengdu.aliyuncs.com/qiuyl01/nacos-server:v3.2.3 # 使用Nacos最新版本
  replicas: 3
  env:
  - name: NACOS_AUTH_ENABLE
    value: "true"
  - name: NACOS_AUTH_ADMIN_ENABLE
    value: "true"
  - name: NACOS_AUTH_CONSOLE_ENABLE
    value: "true"
  - name: NACOS_AUTH_SYSTEM_TYPE
    value: nacos
  - name: NACOS_AUTH_TOKEN
    value: U2R6U2txSHhwYkNYMEFpd0ZzSW40VENnVWxCNXNnc1U=
  - name: NACOS_AUTH_IDENTITY_KEY
    value: 2DX2LYupf5fQFgbUP9OO2dqX864CiyrC
  - name: NACOS_AUTH_IDENTITY_VALUE
    value: uwtopQSl5eOTLorjssQXskp5ZDL8AYKu
  resources:
    requests:
      cpu: 100m
      memory: 512Mi
    limits:
      cpu: 1
      memory: 2Gi
  database:
    type: mysql
    mysqlHost: 192.168.101.104
    mysqlDb: nacos_dev
    mysqlUser: nacos
    mysqlPort: "3305"
    mysqlPassword: "nacos.mysql.yunwdh.cn"
  config: | # 自定义配置
    management.endpoints.web.exposure.include=* # 开发所有监控端点
EOF

# 创建Nacos集群
kubectl apply -f  ./operator/config/samples/nacos_cluster_mysql.yaml

访问 Nacos

Nacos 端口介绍

  1. 8848 端口:基于HTTP 协议,为了兼容 Nacos1.x 旧版客户端的连接端口。
  2. 9848 端口:基于 HTTP/2 协议的 gRPC,用于 Nacos 2.x 以及当前最新版本都是使用的该端口进行的通讯,实现服务注册 / 发现、配置监听、长连接推送、实例心跳上报。在实际配置过程中,我们还是配置 8848 端口,因为程序的 SDK 会自动与在8848 + 1000得到 9848 端口。
  3. 7848 端口:基于 JRaft 分布式一致性算法,用于 Nacos 集群 Raft 选举、数据同步,仅集群内部互通。
  4. 8080 端口:目前只有 Nacos-3.x 采用,主要用于将 Web 控制台端口独立和 8848 分离。3.x 之前版本是通过 http://ip:8848/nacos 访问的 UI 页面。

Nacos Operator 版本和 Nacos 版本有点不一致。比如:目前最新版本的 Nacos UI 访问端口为 8080,然而 CR 创建的 Nacos,名为 nacos-healess 的 Service,没有开启 8080 端口。

微服务架构核心组件,Nacos 集群完整部署实践

所以这里我们需要手动创建一个 Nacos Servcie

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nacos
    component: nacos
    middleware: nacos
  name: nacos
  namespace: nacos
spec:
  ports:
    - name: client
      port: 8848
      protocol: TCP
      targetPort: 8848
    - name: rpc
      port: 7848
      protocol: TCP
      targetPort: 7848
    - name: new-rpc
      port: 9848
      protocol: TCP
      targetPort: 9848
    - name: ui
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: nacos
    component: nacos
    middleware: nacos
  type: ClusterIP
微服务架构核心组件,Nacos 集群完整部署实践

创建 Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nacos-dev.yunwdh.cn
  namespace: nacos
spec:
  ingressClassName: nginx
  rules:
    - host: nacos-dev.yunwdh.cn
      http:
        paths:
          - backend:
              service:
                name: nacos
                port:
                  number: 8080
            path: /
            pathType: Prefix
微服务架构核心组件,Nacos 集群完整部署实践

配置域名解析

微服务架构核心组件,Nacos 集群完整部署实践

浏览器访问 nacos-dev.yunwdh.cn,这里设置初始化密码为 nacos

微服务架构核心组件,Nacos 集群完整部署实践

登录账号 nacos/nacos

微服务架构核心组件,Nacos 集群完整部署实践
微服务架构核心组件,Nacos 集群完整部署实践

点击右上角可以切回旧版控制台页面

微服务架构核心组件,Nacos 集群完整部署实践

删除 CR 和 Nacos Operator

kubectl delete -f  ./operator/config/samples/nacos_cluster_mysql.yaml

helm delete nacos-operator -n nacos-operator

注意:云原生系列,已经上线两个项目了(含金量很高),运维导航目前已经有 3 个企业级项目。现在加入有大额优惠券领取,领取路径和项目介绍见这篇文章:耗时两月,完成了两个云原生企业级项目教程,40723 字!!

运维导航官网:https://ywdh.qiuyl.com/

END

这篇文章有用吗?

点击星号为它评分!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

- THE END -

真成运维

7月28日16:14

最后修改:2026年7月28日
0

非特殊说明,本博所有文章均为博主原创。