nacosk8s部署_GitHub - fengzhongye/nacos-k8s: 本项目包含一个可构建的Nacos Docker Image,旨在利用StatefulSets在Kubernetes...

本教程介绍了如何在Kubernetes(K8S)环境中利用StatefulSets和NFS部署Nacos集群,包括Nacos Docker镜像、NFS安装、数据库部署及Nacos配置和测试过程。
摘要由CSDN通过智能技术生成

Kubernetes Nacos K8SNacos

本项目包含一个可构建的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文件

配置属性

nacos-pvc-nfs.yaml 或者 nacos-quick-start.yaml 属性列表

名称

是否必填

描述

mysql.master.db.name

数据库主库名称

mysql.master.port

数据库主库端口

mysql.slave.port

数据库从库端口

mysql.master.user

数据库主库用户名

mysql.master.password

数据库主库密码

NACOS_REPLICAS

集群数量,必须和replicas属性保持一致

NACOS_SERVER_PORT

Nacos端口,不填写默认8848

PREFER_HOST_MODE

开启Nacos集群节点域名支持

nfs目录下deployment.yaml 属性列表

名称

是否必填

描述

NFS_SERVER

NFS server地址

NFS_PATH

NFS server配置的共享目录

server

NFS server地址

path

NFS server配置的共享目录

mysql目录下yaml文件 属性列表

名称

是否必填

描述

MYSQL_ROOT_PASSWORD

root密码

MYSQL_DATABASE

数据库名称,从库无需配置

MYSQL_USER

数据用户名,从库无需配置

MYSQL_PASSWORD

数据库用户密码,从库无需配置

MYSQL_REPLICATION_USER

从库复制用户名,主从库配置文件中需要配置相同

MYSQL_REPLICATION_PASSWORD

从库复制用户密码,主从库配置文件中需要配置相同

Nfs:server

如果没有部署nfs,请使用mysql-master-local mysql-slave-local

Nfs:path

如果没有部署nfs,请使用mysql-master-local mysql-slave-local

使用指南

前提要求

本项目的使用,是基于你已经对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

部署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

部署数据库

数据库是以指定节点的方式部署,主库部署在node01节点,从库部署在node02节点.

部署主库

#进入clone下来的工程根目录

cd nacos-k8s

# 在k8s上创建mysql主库

kubectl create -f deploy/mysql/mysql-master-nfs.yml

部署备库

#进入clone下来的工程根目录

cd nacos-k8s

# 在k8s上创建mysql备库

kubectl create -f deploy/mysql/mysql-slave-nfs.yml

部署后查看数据库是否已经正常运行

#查看主库是否正常运行

kubectl get pod

NAME READY STATUS RESTARTS AGE

mysql-master-gf2vd 1/1 Running 0 111m

#查看备库是否正常运行

kubectl get pod

mysql-slave-kf9cb 1/1 Running 0 110m

部署Nacos

获取主库从库在K8S的地址

# 查看主库和从库的cluster ip

kubectl get svc

mysql NodePort 10.105.42.247 3306:31833/TCP 2d23h

mysql-bak NodePort 10.105.35.138 3306:31522/TCP 2d23h

修改配置文件depoly/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

查看是否运行正常

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

Q:如果未搭建NFS,数据库怎么部署?

A:可以使用本地持久方式部署,如下

kubectl create -f nacos-k8s/deploy/mysql/nacos-master-local.yaml

kubectl create -f nacos-k8s/deploy/mysql/nacos-master-local.yaml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值