k8s集群模式部署nacos v3.0.1

k8s集群模式部署nacos v3.0.1

写在前面:

本指南是用于集群模式部署Nacos v3.0.1,按照官网的部署指南,大概率会出现容器无法启动的问题(截止20250624),故参考官方指南踩坑总结以下指南。

本环境是在测试环境中部署,其中出入取舍请自斟酌。

本指南为了部署步骤简洁清晰,会将很多集中的配置拆开成单独的步骤,保证有眼睛就能部署成功(所以会看上去很啰嗦,明明可以几个合并一起的非要拆开写,多此一举云云,有经验的童鞋可以自行合并)。

目标:

  • 在k8s中以集群模式部署Nacos v3.0.1(3副本集群)

详情:

  • mysql:v5.7 单机部署

  • nacos:v3.0.1 集群部署

步骤导航

  1. 准备工作目录

  2. 创建ConfigMap

  3. 数据库

    • 创建数据库
    • 初始化数据库
    • 创建数据库Service
  4. nacos数据持久化

    • 创建StorageClass
    • 创建PV
  5. nacos集群

    • 创建nacos集群
    • 创建nacos headless Service
    • 创建nacos Service
    • 创建nacos ingress
  6. 访问工作台

1. 准备工作目录

作用:准备工作目录是用来存放部署时所需的yaml文件。

# 创建yaml文件路径
mkdir -p /data/kubernetes/nacos-fat && cd /data/kubernetes/nacos-fat

2. 创建ConfigMap

主要是包含数据库的一些配置,通过ConfigMap传递给POD。

 vim nacos-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
  namespace: nacos-fat
data:
  mode: cluster
  mysql.db.name: nacos-fat
  mysql.db.host: mysql
  mysql.port: "3306"
  mysql.user: root
  mysql.password: yourSqlPasswd
  mysql.param: "characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false"
  nacos.servers: >-
    nacos3-0.nacos-hs.nacos-fat.svc.cluster.local:8848
    nacos3-1.nacos-hs.nacos-fat.svc.cluster.local:8848
    nacos3-2.nacos-hs.nacos-fat.svc.cluster.local:8848

TIP:

namespace: 本实例中将部署在nacos-fat的命名空间中,可根据实际情况修改

nacos.servers: 包含nacos集群三个副本的dns名称,由headless service管理,名称规则:pod-name.headless-name.namespace.svc.cluster.local

# 创建ConfigMap
kubectl apply -f nacos-cm.yaml

# 检查ConfigMap
kubectl get cm -n nacos-fat

3. 数据库

3.1 创建数据库

nacos支持内置数据库和Mysql,但是使用集群模式部署的话必须使用MySql作为数据库。

vim nacos-mysql.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
  namespace: nacos-fat
  labels:
    name: mysql
spec:
  replicas: 1
  selector:
    name: mysql
  template:
    metadata:
      labels:
        name: mysql
    spec:
      containers:
      - name: mysql
        image: nacos/nacos-mysql:5.7
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "yourSqlPasswd"
        - name: MYSQL_DATABASE
          value: "nacos-fat"
        - name: MYSQL_USER
          value: "nacos"
        - name: MYSQL_PASSWORD
          value: "yourSqlPasswd"
      volumes:
      - name: mysql-data
        hostPath:
          path: /data/nacos-fat/mysql
          type: DirectoryOrCreate

TIP

如果使用官方镜像,默认的数据库MYSQL_DATABASE:nacos-devtest 则不需要进行数据库初始化,此处我的是 nacos-fat,所以需要进行数据库初始化;
密码参数请自行设置;
数据库有高可用的需求请自行解决,此处就一个实例。

# 创建mysql pod
kubectl apply -f nacos-mysql.yaml

# 检查pod
kubectl get pod -n nacos-fat -o wide

3.2 初始化数据库

执行数据库初始化

# 下载初始化语句
wget https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql

# 执行初始化
kubectl exec -i mysql-ctzmj -n nacos-fat -- mysql -uroot -pyourSqlPasswd nacos-fat < mysql-schema.sql

TIP:
请替换pod名,-u -p无空格

3.3 创建数据库Service

用于暴露数据的端口给nacos连接

vim mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值