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

相关推荐
Linux运维老纪3 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
JunLan~8 小时前
Docker 部署 GLPI(IT 资产管理软件系统)
运维·docker·容器
青草地溪水旁9 小时前
c++ list的front和pop_front的概念和使用案例
c++·容器·list
元气满满的热码式11 小时前
K8S部署DevOps自动化运维平台
运维·kubernetes·devops
LUCIAZZZ12 小时前
基于Docker以KRaft模式快速部署Kafka
java·运维·spring·docker·容器·kafka
IT艺术家-rookie16 小时前
k8s--部署k8s集群--控制平面节点
容器·kubernetes
康世行16 小时前
Windows环境下MaxKB大模型 Docker部署图文指南
windows·docker·容器
Elastic 中国社区官方博客16 小时前
使用 Ollama 和 Kibana 在本地为 RAG 测试 DeepSeek R1
大数据·数据库·人工智能·elasticsearch·ai·云原生·全文检索
Linux运维老纪1 天前
windows部署deepseek之方法(The Method of Deploying DeepSeek on Windows)
linux·人工智能·分布式·云原生·运维开发·devops
Elastic 中国社区官方博客1 天前
Elastic Cloud Serverless 获得主要合规认证
大数据·数据库·elasticsearch·搜索引擎·云原生·serverless·全文检索