nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录

文章目录

操作步骤

1. 拉取仓库代码

(这一步主要用到代码中的相关yml文件,稍加修改用于部署容器,github拉取慢,可以去gitee拉取)

bash 复制代码
git clone git@github.com:nacos-group/nacos-k8s.git

2. 安装nacos-operator

  1. 本地安装helm命令(可有可无)
  2. 安装kubectl命令,并配置好远程集群的配置信息(自行百度)
  3. 准备好nacos-operator镜像
bash 复制代码
docker pull docker.rainbond.cc/nacos/nacos-operator:latest
  1. 修改values中的镜像地址和tag

  2. 进入nacos-k8s/operator目录,cmd调出黑窗口,执行

bash 复制代码
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版本

  1. 下载nacos-server镜像
bash 复制代码
docker pull docker.rainbond.cc/nacos/nacos-server:latest
  1. 修改nacos_cluster_mysql.yaml:主要修改nacos-server镜像地址,和mysql的连接信息
  2. 修改完成之后执行
bash 复制代码
kubectl get nacos

过程中如果需要频繁修改配置,频繁刷新配置,如果使用apply -f之后刷新不生效,可以先卸载容器,再重新部署

bash 复制代码
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。

待办

  1. 目前nacos服务注册等各项功能正常,且在k8s ui页面查看容器无报错,但是使用kubectl get nacos命令,得到的nacos状态为failed,不知道为什么,后续再看

  2. NACOS_AUTH_IDENTITY_KEY和NACOS_AUTH_IDENTITY_VALUE的value格式还没彻底搞明白要怎么写,我上边是把项目中使用加密工具加密后的密码胡乱贴上的,没想到可行,后续再研究研究官方建议是什么格式的

  3. nacos-server使用mysql作为持久化存储之后,是否还需要给容器挂载pvc?目前看使用不影响,暂时先不挂。

参考文档

https://gitee.com/nacos_group/nacos-k8s/blob/master/operator/README-CN.md

https://www.jianshu.com/p/c34024e6fa27

相关推荐
AAA@峥3 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~4 小时前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs801406 小时前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui7 小时前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘7 小时前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
鸿儒51710 小时前
MR-50国产化GPU docker配置方法
docker·容器·mr
Zhu75811 小时前
在k8s集群部署ApacheHadoop单节点单数据副本
云原生·容器·kubernetes
Akamai中国11 小时前
Akamai收购安全企业浏览器提供商LayerX
人工智能·云原生·云计算·云服务
摇滚侠11 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 51-60
java·云原生·kubernetes