基于KubeSphere在K8S发布微服务ruoyi----3.部署基础环境nacos
https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
https://nacos.io/zh-cn/docs/v2/guide/admin/deployment.html
下载安装包
nacos-server-2.1.2.zip 2022.10
https://github.com/alibaba/nacos/releases/download/2.1.2/nacos-server-2.1.2.zip
两个关键配置文件
application.properties
mysql-schema.sql
nacos\conf\application.properties 需要修改的5行
application.properties
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.1.151:31886/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
此处只是测试用,后面需再改成ry-config这个数据库
创建库nacos并导入数据
nacos\conf\mysql-schema.sql
K8S创建字典ry-nacos-conf,key为application.properties
K8S创建服务和POD
nacos/nacos-server:v2.1.2
单机模式启动
子路径挂载文件,以保证容器初始化时该目录其他文件也不会被删除
先填完整路径/home/nacos/conf/application.properties 不能写为/home/nacos/conf
再指定子路径application.properties
如果采用集群化部署,需再挂载子路径文件cluster.conf
nacos的最小集群需要3台服务器的3个IP地址,K8S的POD IP又是可变的,这个如何在K8S中实现?
无法保证pod的IP不变,但可换一种思路,就是保证每个nacos域名不变。只要在K8S中创建有状态的服务,就可以保证每个pod域名不变。
知识扩展:
有状态服务的一个大的特点就是拥有稳定的网络标识,每当一个Pod创建成功,他都会有一个相对应的DNS子域名,其格式是 $(pod 名称). $(所属服务的 DNS 域名),而所属服务的DNS域名则与这个无头服务的名称有关,其格式为 $(服务名称). $(命名空间).svc.cluster.local,我们可以通过对这个域名进行解析来获取其IP地址。
https://blog.csdn.net/weixin_44228698/article/details/123243096
nacos配置集群配置文件参考
来自 <https://nacos.io/zh-cn/docs/v2/guide/admin/cluster-mode-quick-start.html>
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,每行配置成ip:port。(3个或3个以上节点)
cluster.conf配置文件示例
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848
在k8s中使用改成域名格式
ry-nacos-v1-0.ry-nacos.ruoyi.svc.cluster.local:8848
ry-nacos-v1-1.ry-nacos.ruoyi.svc.cluster.local:8848
ry-nacos-v1-2.ry-nacos.ruoyi.svc.cluster.local:8848
修改配置字典
修改集群配置文件
/home/nacos/conf/cluster.conf
取消单机模式
如果k8s拉取镜像失败,可以在节点上用docker拉取试试
docker pull nacos/nacos-server:v2.1.2
正常启动状态截图
如果是集群模式,删除pod后,节点列表在这个3个IP轮流转换(pod重建后生成新的IP)
将服务暴露为nodeport
登录测试
192.168.1.151:30601/nacos
nacos测试正常后需再数据库改成ry-config
application.properties
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.1.151:31886/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456