摘要:前言最近几天完成了在部署顺便写篇文章记录下部署过程,项目地址有兴趣的可以去了解下后续会提交到里面。
前言
最近几天完成了 Nacos 在Kubernetes 部署,顺便写篇文章记录下部署过程,项目地址Nacos-K8s,有兴趣的可以去了解下,后续会提交到Nacos-Group 里面。
Kubernetes Nacos本项目包含一个可构建的Nacos Docker Image,旨在利用StatefulSets在Kubernetes上部署Nacos
已知限制暂时不支持动态增量扩容
必须使用持久卷,本项目实现NFS持久卷的例子,如果使用emptyDirs可能会导致数据丢失
Docker 镜像在build目录中包含了已经打好包的Nacos(基于develop分支,已提PR,目前的release版本都不支持k8s集群)项目包,以及镜像制作文件,镜像基础环境Ubuntu 16.04、Open JDK 1.8(JDK 8u111).目前镜像已经提交到Docker Hub。
项目目录目录 | 描述 |
---|---|
build | 构建Nacos镜像的项目包以及Dockerfile |
deploy | k8s部署yaml文件 |
Initdb | Nacos 集群数据库初始化SQL脚本 |
本项目的使用,是基于你已经对Kubernetes有一定的认知,所以对如何搭建K8S集群,请自行google或者百度
NFS安装方面也不是本文的重点,请自行google或者百度
环境准备机器配置(作者演示使用阿里云ECS)
机器内网IP | 主机名 | 机器配置 |
---|---|---|
172.17.79.3 | k8s-master | CentOS Linux release 7.4.1708 (Core) 单核 内存4G 普通云盘40G |
172.17.79.4 | node01 | CentOS Linux release 7.4.1708 (Core) 单核 内存4G 普通云盘40G |
172.17.79.5 | node02 | CentOS Linux release 7.4.1708 (Core) 单核 内存4G 普通云盘40G |
Kubernetes 版本:1.12.2 (如果你和我一样只使用了三台机器,那么记得开启master节点的部署功能)
NFS 版本:4.1 在k8s-master进行安装Server端,并且指定共享目录,本项目指定的/data/nfs-share
Git
搭建步骤 Clone项目在每台机器上都Clone本工程,演示工程就是导入根目录,所以部署路径都是root/nacos-k8s
git clone https://github.com/paderlol/nacos-k8s.git部署数据库
数据库是以指定节点的方式部署,主库部署在node01节点,从库部署在node02节点.
部署主库
#进入clone下来的工程根目录 cd nacos-k8s # 在k8s上创建mysql主库 kubectl create -f deploy/mysql/mysql.yml
部署备库
#进入clone下来的工程根目录 cd nacos-k8s # 在k8s上创建mysql备库 kubectl create -f deploy/mysql/mysql-bak.yml
注意:如果工程不是导入机器的根目录,那么同样需要修改mysql.yaml和mysql-bak.yaml中挂载路径,因为数据库PVC使用的是本地卷,请注意更改配置中的path路径如下所示
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 20Gi accessModes: - ReadWriteOnce hostPath: path: "/root/nacos-k8s/mysql" --- ....其他配置 --- apiVersion: v1 kind: PersistentVolume metadata: name: mysql-init-pv-volume labels: type: local spec: storageClassName: initdb capacity: storage: 20Gi accessModes: - ReadWriteOnce hostPath: path: "/root/nacos-k8s/initdb"
部署后查看数据库是否已经正常运行
#查看主库是否正常运行 kubectl get pod -l app=mysql NAME READY STATUS RESTARTS AGE mysql-bak-5c5b5bd479-922zv 1/1 Running 0 2d23h #查看备库是否正常运行 kubectl get pod -l app=mysql-bak部署NFS
创建角色 K8S在1.6以后默认开启了RBAC
kubectl create -f deploy/nfs/rbac.yaml
提示:如果你的K8S命名空间不是默认"default",那么在创建RBAC之前先执行以下脚本
# Set the subject of the RBAC objects to the current namespace where the provisioner is being deployed $ NS=$(kubectl config get-contexts|grep -e "^*" |awk "{print $5}") $ NAMESPACE=${NS:-default} $ sed -i"" "s/namespace:.*/namespace: $NAMESPACE/g" ./deploy/nfs/rbac.yaml
创建ServiceAccount 以及部署NFS-Client Provisioner
kubectl create -f deploy/nfs/deployment.yaml
创建NFS StorageClass
kubectl create -f deploy/nfs/class.yaml
查看NFS是否运行正常
kubectl get pod -l app=nfs-client-provisioner部署Nacos
获取主库从库在K8S的地址
# 查看主库和从库的cluster ip kubectl get svc mysql NodePort 10.105.42.2473306:31833/TCP 2d23h mysql-bak NodePort 10.105.35.138 3306:31522/TCP 2d23h
修改配置文件depoly/nacos/nacos-pvc-nfs.yaml,找到如下配置,填入上一步查到的主库和从库地址
db.host.zero: "主库地址" db.name.zero: "nacos_devtest" db.port.zero: "3306" db.host.one: "备库地址" db.name.one: "nacos_devtest" db.port.one: "3306" db.user: "nacos" db.password: "nacos"
创建并运行Nacos集群
kubectl create -f nacos-k8s/deploy/nacos/nacos-pvc-nfs.yaml
查看是否运行正常
kubectl get pod -l app=nacos AME READY STATUS RESTARTS AGE nacos-0 1/1 Running 0 19h nacos-1 1/1 Running 0 19h nacos-2 1/1 Running 0 19h测试 服务注册
curl -X PUT "http://集群地址:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080"服务发现
curl -X GET "http://集群地址:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName"配置推送
curl -X POST "http://集群地址:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"配置获取
curl -X GET "http://集群地址:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"常见问题
Q:如果不想搭建NFS,并且想体验nacos-k8s?
A:可以跳过部署nfs的步骤,最后创建运行nfs时,使用一下以下方式创建
kubectl create -f nacos-k8s/deploy/nacos/nacos-quick-start.yaml
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/33100.html
摘要:前言最近几天完成了在部署顺便写篇文章记录下部署过程,项目地址有兴趣的可以去了解下后续会提交到里面。 前言 最近几天完成了 Nacos 在Kubernetes 部署,顺便写篇文章记录下部署过程,项目地址Nacos-K8s,有兴趣的可以去了解下,后续会提交到Nacos-Group 里面。 Kubernetes Nacos 本项目包含一个可构建的Nacos Docker Image,旨在利用...
摘要:元数据数据如配置和服务描述信息,如服务版本权重容灾策略负载均衡策略鉴权配置各种自定义标签,从作用范围来看,分为服务级别的元信息集群的元信息及实例的元信息。 什么是Nacos? Nacos 是构建以服务为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。 Nacos可以做什么? 1、动态配置服务:支持以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变...
摘要:年月阿里巴巴高级技术专家许真恩慕义发布了首个开源版本,作为的开源实现截止目前已经更新到了的大版本,并且支持大规模生产版本。支持目前几乎所有主流的微服务生态体系。 前言 6月份阿里开源的Nacos出了1.0.1版本,从去年7月份第一个release版本到现在一直在默默关注 官方的版本规划为:Nacos从0.8.0开始支持生产可用,1.0版本可大规模生产可用,2.0版本接入k8s、Spri...
摘要:是一个相对比较新的微服务框架,年才推出的版本虽然时间最短但是相比等框架提供的全套的分布式系统解决方案。提供线程池不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务器雪崩的问题。通过互相注册的方式来进行消息同步和保证高可用。 Spring Cloud 是一个相对比较新的微服务框架,...
阅读 3318·2021-11-08 13:12
阅读 2756·2021-10-15 09:41
阅读 1449·2021-10-08 10:05
阅读 3298·2021-10-08 10:04
阅读 2101·2021-09-29 09:34
阅读 2470·2019-08-30 15:55
阅读 2978·2019-08-30 15:45
阅读 2575·2019-08-29 14:17