本文使用k8s部署mysql并连接,不建议生产环境使用!!!,建议mysql单独部署在服务器或者使用云数据库并做好集群及备份

部署mysql

参考文章:GitHub - nacos-group/nacos-k8s: This project contains a Nacos Docker image meant to facilitate the deployment of Nacos on Kubernetes using StatefulSets.

首先安装mysql5.7,这里有nacos提供了连接需要的镜像 参考nacos-k8s/mysql-local.yaml at master · nacos-group/nacos-k8s · GitHub

我修改命名空间为nacos,方便后续服务浏览更加方便,有需要的可以下载:nacos-mysql.yaml

部署nacos

参考nacos-k8s/nacos-no-pvc-ingress.yaml at master · nacos-group/nacos-k8s · GitHub

关注几个要修改的点

dataconfig里的数据连接需要改为自己的地址

 

由于部署单节点nacos,所以replicas、NACOS_REPLICAS 的值需要改为1,NACOS_SERVERS的value需要改为nacos-0.nacos-headless.nacos.svc.cluster.local:8848 

另外ingress由于各自环境不同,域名不同,强烈建议手动操作

我修改命名空间为nacos,方便后续服务浏览更加方便

输入地址:http://xxxxx/nacos即可访问,

注意如果使用的是k3s,则自带traefik,不需要手动安装ingress

可以导入配置后,重启mysql和nacos,发现数据还在,即持久化完成

知识普及和槽点

1、nacos/nacos-server:latest这个镜像里本身就带了nacos的数据库和表,所以如果使用其他的镜像mysql需要自己导入数据库,在GitHub - nacos-group/nacos-k8s: This project contains a Nacos Docker image meant to facilitate the deployment of Nacos on Kubernetes using StatefulSets.中有对应sql文件

2、StatefulSets 中连接地址nacos-0.nacos-headless.nacos.svc.cluster.local:8848。由于StatefulSets的特性,导致其生成pod命名时固定的,比如nacos,随着replicas的加大,依次生成nacos-0,nacos-1,nacos-2........,而nacos-headless是服务名,nacos,是命名空间8848是端口号,svc.cluster.local固定名称,可自行百度

3、如果使用多个节点的集群模式,可能会导致出现mysql找不到、database not select的情况,这种情况大多建立在搭建的k3s集群内部通信问题,或者各个节点生成的pod地址互相访问等问题,有个暂时规避的办法,使用nodepod对外暴漏端口,让nacos访问外部地址

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐