深圳网站设计哪家比较好,网站建设实训报告模版,html5网站制作培训,建设网点查询转载自 Kubernetes Nacos
本项目包含一个可构建的Nacos Docker Image#xff0c;旨在利用StatefulSets在Kubernetes上部署Nacos
快速开始
Clone 项目
git clone https://github.com/nacos-group/nacos-k8s.git简单例子如果你使用简单方式快速启动,请注意这是没有使用持久化…转载自 Kubernetes Nacos
本项目包含一个可构建的Nacos Docker Image旨在利用StatefulSets在Kubernetes上部署Nacos
快速开始
Clone 项目
git clone https://github.com/nacos-group/nacos-k8s.git简单例子如果你使用简单方式快速启动,请注意这是没有使用持久化卷的,可能存在数据丢失风险: cd nacos-k8s
chmod x quick-startup.sh
./quick-startup.sh测试 服务注册curl -X PUT http://cluster-ip:8848/nacos/v1/ns/instance?serviceNamenacos.naming.serviceNameip20.18.7.10port8080服务发现curl -X GET http://cluster-ip:8848/nacos/v1/ns/instance/list?serviceNamenacos.naming.serviceName发布配置curl -X POST http://cluster-ip:8848/nacos/v1/cs/configs?dataIdnacos.cfg.dataIdgrouptestcontenthelloWorld获取配置curl -X GET http://cluster-ip:8848/nacos/v1/cs/configs?dataIdnacos.cfg.dataIdgrouptest高级使用 在高级使用中,Nacos在K8S拥有自动扩容缩容和数据持久特性,请注意如果需要使用这部分功能请使用PVC持久卷,Nacos的自动扩容缩容需要依赖持久卷,以及数据持久化也是一样,本例中使用的是NFS来使用PVC. 部署 NFS
创建角色
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 appnfs-client-provisioner部署数据库
部署主库cd nacos-k8skubectl create -f deploy/mysql/mysql-master-nfs.yaml部署从库cd nacos-k8s kubectl create -f deploy/mysql/mysql-slave-nfs.yaml验证数据库是否正常工作
# master
kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-master-gf2vd 1/1 Running 0 111m# slave
kubectl get pod
mysql-slave-kf9cb 1/1 Running 0 110m部署Nacos
修改 deploy/nacos/nacos-pvc-nfs.yaml
data:mysql.master.db.name: 主库名称mysql.master.port: 主库端口mysql.slave.port: 从库端口mysql.master.user: 主库用户名mysql.master.password: 主库密码创建 Nacos
kubectl create -f nacos-k8s/deploy/nacos/nacos-pvc-nfs.yaml验证Nacos节点启动成功
kubectl get pod -l appnacosNAME 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扩容测试
在扩容前使用 kubectl exec获取在pod中的Nacos集群配置文件信息
for i in 0 1; do echo nacos-$i; kubectl exec nacos-$i cat conf/cluster.conf; doneStatefulSet控制器根据其序数索引为每个Pod提供唯一的主机名。 主机名采用 - 的形式。 因为nacos StatefulSet的副本字段设置为2所以当前集群文件中只有两个Nacos节点地址 使用kubectl scale 对Nacos动态扩容
kubectl scale sts nacos --replicas3在扩容后使用 kubectl exec获取在pod中的Nacos集群配置文件信息
for i in 0 1 2; do echo nacos-$i; kubectl exec nacos-$i cat conf/cluster.conf; done使用 kubectl exec执行Nacos API 在每台节点上获取当前Leader是否一致
for i in 0 1 2; do echo nacos-$i; kubectl exec nacos-$i curl -X GET http://localhost:8848/nacos/v1/ns/raft/state; done到这里你可以发现新节点已经正常加入Nacos集群当中
例子部署环境
机器配置
内网IP主机名配置172.17.79.3k8s-masterCentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G172.17.79.4node01CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G172.17.79.5node02CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G
Kubernetes 版本1.12.2 如果你和我一样只使用了三台机器那么记得开启master节点的部署功能NFS 版本4.1 在k8s-master进行安装Server端并且指定共享目录本项目指定的**/data/nfs-share**Git
限制
必须要使用持久卷否则会出现数据丢失的情况
项目目录
目录描述plugin帮助Nacos集群进行动态扩容的插件Docker镜像源码deployK8s 部署文件
配置属性
nacos-pvc-nfs.yaml or nacos-quick-start.yaml
名称必要描述mysql.master.db.nameY主库名称mysql.master.portN主库端口mysql.slave.portN从库端口mysql.master.userY主库用户名mysql.master.passwordY主库密码NACOS_REPLICASN确定执行Nacos启动节点数量,如果不适用动态扩容插件,就必须配置这个属性否则使用扩容插件后不会生效NACOS_SERVER_PORTNNacos 端口PREFER_HOST_MODEY启动Nacos集群按域名解析
nfs deployment.yaml
名称必要描述NFS_SERVERYNFS 服务端地址NFS_PATHYNFS 共享目录serverYNFS 服务端地址pathYNFS 共享目录
mysql
名称必要描述MYSQL_ROOT_PASSWORDNROOT 密码MYSQL_DATABASEY数据库名称MYSQL_USERY数据库用户名MYSQL_PASSWORDY数据库密码MYSQL_REPLICATION_USERY数据库复制用户MYSQL_REPLICATION_PASSWORDY数据库复制用户密码Nfs:serverNNFS 服务端地址如果使用本地部署不需要配置Nfs:pathNNFS 共享目录如果使用本地部署不需要配置