总结:简介:这几天完成了一次部署,写了一篇文章记录部署过程。 如果您对项目地址感兴趣,可以稍后查找并提交。
简介
最近,我完成了 Nacos 在 Kubernetes 上的部署。 对了,我会写一篇文章来记录一下实现过程。 项目地址为Nacos-K8s。 如果您有兴趣,请查看一下。 后来发送到Nacos-Group。
Kubernetes Nacos
该项目包含一个可构建的 Nacos Docker 镜像,旨在使用 StatefulSets 将 Nacos 部署到 Kubernetes。
已知限制
目前不支持动态增量扩展。
您必须使用持久卷。 该项目实现了一个 NFS 持久卷示例。 使用emptyDirs可能会导致数据丢失
Docker镜像
b>
构建目录包含打包好的Nacos(开发者已经根据分支提交了PR,当前release版本不支持k8s集群)项目包、镜像制作文件。 基本镜像环境为Ubuntu 16.04,Open JDK 1.8(JDK 8u111)。 当前镜像正在发送到 Docker Hub。
项目目录
目录 | 描述 |
---|---|
build | 构建Nacos镜像和Dockerfile的项目包 |
deploy | k8s部署yaml文件 |
Initdb | Nacos集群数据库初始化SQL脚本 |
使用指南前提条件
该项目的使用是基于已经使用 Kube 的基础上。由于对rnetes有一些了解,关于如何搭建K8S集群的信息请自行参考谷歌或百度。
安装NFS不是本文的重点。 请自行Google或百度参考。
环境准备
机器配置(笔者使用阿里云ECS进行演示)
机器配置内网IP | 主机名 | 机器配置 |
---|---|---|
172.17.79.3 | k8s[ k4]master | CentOS Linux Release 7.4 .1708(核心)单核内存4G普通云盘40G |
172.17.79.4 | node01 | CentOS Linux Release 7.4 .1708(核心)单核内存4G普通云盘40G |
172.17.79.5 | node02 | CentOS Linux Release 7.4 .1708(核心)单核内存4G普通云盘40G |
Kubernetes版本:1.12 .2(如果你像我一样只使用3台机器,那么不要忘记启用主节点部署功能)
NFS版本:4.1在k8s-master上安装服务器端并指定共享目录。 该项目是 /data/nfs-share
Git
构建说明克隆项目
在每台计算机上克隆此项目。 demo工程导入根目录,因此部署路径为root/nacos-k8s。
git clone https://github.com/paderlol/nacos-k8s.git
部署数据库
指定数据库的节点被部署。 主库部署在node01节点上,从库部署在node02节点上。
部署主库
#进入克隆项目根目录 cd nacos[k4 ]k8s # 在k8s上创建mysql主库 kubectl create -fdeploy/mysql/ mysql.yml
部署备库
#进入克隆项目根目录 cd nacos -k8s # 在k8s上创建mysql备库 kubectl create - fdeploy/mysql/mysql-bak.yml
注意:项目导入到机器根目录下,如果没有,也是一样的。 数据库PVC使用本地卷,因此需要更改mysql.yaml和mysql-bak.yaml的挂载路径。 请注意,配置中的path路径将更改为:
api版本:v1kind:持久卷元数据:名称:mysql-pv-卷标:类型:localspec:storageClassName:手动容量:存储:20Gi accessModes:- ReadWriteOnce hostPath:路径:“ /root/nacos[k4 ]k8s/mysql"---....其他配置 -- ]-apiVersion: v1kind: Per持久卷元数据:名称:mysql-init-pv- 卷标签:类型:localspec:storageClassName:initdb 容量:存储:20Gi 访问模式:- ReadWriteOnce 主机路径:路径:“/root/nacos-k8s /initdb"
部署完成后,检查数据库是否运行正常。
#检查主库是否运行成功 kubectl get pod -l app=mysqlNAME READY STATUS RESTARTS AGEmysql -bak -5c5b5bd479-922zv 1 /1 Running 0 2d23h# Check如果备库运行成功 kubectl get pod -l app=mysql-bak
部署 NFS
创建角色 K8S 从 1.6 开始默认启用 RBAC
kubectl create -fdeploy/nfs/rbac.yaml
提示:K8S 名称如果空间不是默认的“default”,请在创建 RBAC 之前运行以下脚本。
# 将 RBAC 对象的主题设置为当前 将其设置为 $NS=$(kubectl config get -context|grep -e "^*" |a 的命名空间wk "{print $5}")$ NAMESPACE=${NS:-default}$ sed -i"" "s/命名空间:.*/命名空间: $NAMESPACE/g" ./deploy/nfs/rbac .yaml
创建 ServiceAccount 并部署 NFS-Client Provisioner
kubectl create -fdeploy/nfs/deployment.yaml
NFS 创建 StorageClass
kubectl create -fdeploy/nfs/class.yaml
检查NFS是否运行成功
kubectl get pod -l app=nfs[ k4 ]client-provisioner
部署Nacos
获取主从库的K8S地址
# 显示主从库集群 ipkubectl get svcmysql NodePort 10.105.42.247 3306:31833/TCP 2d23hmysql-bak NodePort 10.105.3522/TCP 2d23h
配置修改文件depoli/nacos/ nacos[k4 ]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=nacosAME READY STATUS RESTARTS AGEnacos-0 1/1 Running 0 19hnacos- 1 1/1 Running 0 19hnacos [k4 ]2 1/1 运行 0 19h
测试服务注册
curl -X PUT " http://集群地址:8848 / nacos/ v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080"
服务发现
curl [ k4]X GET "http:// /集群地址:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName"
配置推送
curl - X POST "http://cluster地址: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"
常见问题
问:如果我不想构建NFS,但想体验nacos-k8s怎么办?常见问题解答
p>
答:部署 nfs 的步骤是可选的,当您最终创建并运行 nfs 时,请使用以下方法:
kubectl。创建 -f nacos-k8s/deploy/nacos/nacos-quick -start.yaml
评论前必须登录!
注册