Kubernetes(k8s)搭建部署nacos集群
一,下载官方k8s项目
这里使用官方提供的k8s文件修改。
|
|
二,创建对应的 NFS StorageClass 和 PV
使用NFS作为PVC持久化。
官方提供了k8s的nfs部署,/nacos-k8s/deploy/nfs/ ,可以直接使用的官方的。
但是生产环境中通常会部署独立的 NFS 服务(比如用 NAS、GlusterFS、CephFS),而不是依赖容器内运行的 NFS Server。所以我这里使用了物理机的提前安装好的NFS服务。
1,StorageClass 定义
|
|
|
|
使用 kubectl apply -f nfs-sc.yaml 来创建它。
2,创建NFS路径
在 NFS 服务器上(172.16.81.129):
|
|
确保这个路径已经在 /etc/exports 中:
|
|
然后重新加载 NFS 配置:
|
|
3,确认 csi-driver 已正确安装
NFS CSI 驱动是实现自动创建 PV(动态供给),不用手动创建。
手动创建可自行参考:Kubernetes(k8s)搭建部署redis cluster集群
查看是否安装命令:
|
|
没有安装的话可以用以下方式安装:
|
|
三,启动yaml 文件修改
修改默认的nacos-pvc-nfs.yaml 配置文件,有些配置不需要,或者需要更改配置。
1,增加namespace
方便以后管理,这里单独创建一个namaspace和其他隔离,不创建也行,会在默认namespace中。
|
|
|
|
使用 kubectl apply -f namespace.yaml 来创建backend-cluster命名空间。
默认配置文件,也需增加
|
|
2,修改 YAML的 serviceAccountName
由于使用的自定义的NFS,需要删除原来的账号配置,否则报错
|
|
改为 删除该行,或者改为默认的:
|
|
3,peer-finder-plugin-install 镜像修改
默认的官方镜像,只有amd版本,没有arm版本,按需修改。
|
|
修改为下面的镜像,支持amd和arm系统。
|
|
4,降低配置和改成软约束(可选)
已经有3个节点以上,配置足够,无需修改。这里测试只有2个node,所以需要修改配置,跑3个nacos。
修改方式一:
降低副本数到2,默认是3个副本
|
|
修改方式二:
不想降低副本,需要3个副本测试集群。
当前 StatefulSet 配置中使用了 pod 反亲和性(PodAntiAffinity):
|
|
意思是:Nacos 的 Pod 必须调度到不同的节点(即 nacos-0、nacos-1、nacos-2 各在不同节点)
可以改成软约束(preferred):
|
|
这样如果能调度到不同节点就尽量不同,如果不能也能调度到相同节点。
如果服务器配置不够,也会无法启动,这里测试降低内存配置,2G改为1G。
|
|
5,开启鉴权和使用外部数据库
数据库这里也是使用外部,不使用k8s内部的数据库,因为实际生产部署,数据库一般使用数据库官方集群部署。
|
|
添加鉴权相关配置:
|
|
3.0+配置4个足矣,3.0以下5个配置
|
|
6,完整配置
修改nacos-pvc-nfs.yaml配置如下
|
|
最后启动kubectl apply -f nacos-pvc-nfs.yaml服务。
查看服务正常启动。
|
|
四,访问 Nacos Web 管理界面
此nacos版本为3.0+,管理界面不在是 ip:8848/nacos,而是直接访问8080端口,所以服务都是暴露8080端口。
版本3.0以下改成8848端口即可。
方式一:本地端口转发(最简单)
执行命令后,你就可以在本地浏览器访问 http://localhost:8080
|
|
适合测试、临时访问,不需要暴露服务到公网。
方式二:添加一个 NodePort 服务(暴露到集群外部)
修改你的服务配置 nacos-service.yaml(你需要手动创建一个非 Headless 的 Service):
|
|
然后部署:
|
|
现在可以通过 任意 Node 的 IP + nodePort 访问 Nacos:
|
|
例如:
|
|
(你可以通过 kubectl get nodes -o wide 查看节点实际 IP)
方式三:Ingress 方式(生产推荐)
创建一个普通 Service(暴露给 Ingress 使用)
|
|
注意:不要用 nacos-headless,Ingress 要用普通 Service 才能转发。
创建 Ingress 资源(以 nginx-ingress 为例)
|
|
应用配置:
|
|
浏览器访问测试,局域网本地配置hosts,如服务器IP为172.16.81.128
|
|
最后浏览器访问,Ingress两种模式访问
|
|
任意node节点都可以访问,测试命令
|
|
更多推荐

所有评论(0)