文章目录
- 操作步骤
- 1. 拉取仓库代码
- 2. 安装nacos-operator
- 3. 安装nacos-server
- 坑点一
- 坑点二
- nacos-ui页面访问
- 同一集群环境下微服务连接nacos地址配置
- 待办
- 参考文档
操作步骤
1. 拉取仓库代码
(这一步主要用到代码中的相关yml文件,稍加修改用于部署容器,github拉取慢,可以去gitee拉取)
git clone git@github.com:nacos-group/nacos-k8s.git
2. 安装nacos-operator
- 本地安装helm命令(可有可无)
- 安装kubectl命令,并配置好远程集群的配置信息(自行百度)
- 准备好nacos-operator镜像
docker pull docker.rainbond.cc/nacos/nacos-operator:latest
-
修改values中的镜像地址和tag
-
进入nacos-k8s/operator目录,cmd调出黑窗口,执行
helm install nacos-operator ./chart/nacos-operator --namespace logct
如无helm命令,执行如下命令(修改nacos-operator-all.yaml中镜像地址):
kubectl apply -f chart/nacos-operator/nacos-operator-all.yaml()
3. 安装nacos-server
我是安装的cluster-mysql版本
- 下载nacos-server镜像
docker pull docker.rainbond.cc/nacos/nacos-server:latest
- 修改nacos_cluster_mysql.yaml:主要修改nacos-server镜像地址,和mysql的连接信息
- 修改完成之后执行
kubectl get nacos
过程中如果需要频繁修改配置,频繁刷新配置,如果使用apply -f之后刷新不生效,可以先卸载容器,再重新部署
kubectl delete -f config/samples/nacos_cluster_mysql.yaml
kubectl delete -n logct statefulset nacos
理论上这样就结束了,很简单,但是第一个坑点来了
坑点一
nacos启动报错,报“syntax error: unexpected “(””
参照如下issue
https://github.com/nacos-group/nacos-k8s/issues/469
高版本的nacos-server镜像的基础镜像改用alpine, 其使用的sh命令不支持数组,其次alpine中的ping命令其-c参数必须在域名之前
因此,修改yaml
坑点二
高版本nacos修复漏洞,新增了几个环境变量需要配置,不配置则启动报错,报“Error creating bean with name ‘nacosAuthConfig’ defined in URL…”
需要在yml中新增如下env,不加就报错,参照:
https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
但是官方的nacos-operator部署文档中并没有更新此部分内容,官方文档的样例还是在部署1.4.1版本的nacos-server,以至于我事先没有思路的时候还专门再去部署了一遍1.4.1版本的nacos,确实很顺利,但是我客户端使用的是2.1.1的nacos-client,1.x和2.x版本的nacos存在兼容性问题,导致服务拉取不到配置而启动失败。。。
nacos-ui页面访问
视各自公司vpc映射规则而定,把nacos这个service的8848端口映射出来之后,访问
同一集群环境下微服务连接nacos地址配置
连接上图中的节点ip即可,上述域名集群内访问没问题,但是如果是集群外的服务,则不能配置域名,应该配置映射出来的ip。
待办
-
目前nacos服务注册等各项功能正常,且在k8s ui页面查看容器无报错,但是使用kubectl get nacos命令,得到的nacos状态为failed,不知道为什么,后续再看
-
NACOS_AUTH_IDENTITY_KEY和NACOS_AUTH_IDENTITY_VALUE的value格式还没彻底搞明白要怎么写,我上边是把项目中使用加密工具加密后的密码胡乱贴上的,没想到可行,后续再研究研究官方建议是什么格式的
-
nacos-server使用mysql作为持久化存储之后,是否还需要给容器挂载pvc?目前看使用不影响,暂时先不挂。
参考文档
https://gitee.com/nacos_group/nacos-k8s/blob/master/operator/README-CN.md