• K8S上部署nacos


    一、Clone项目

    git clone https://github.com/nacos-group/nacos-k8s.git
    

    二、自定义部署

    • 在高级使用中,Nacos在K8S拥有自动扩容缩容和数据持久特性
    • 请注意如果需要使用这部分功能请使用PVC持久卷,Nacos的自动扩容缩容需要依赖持久卷,以及数据持久化也是一样
    • 本例中使用的是NFS来使用PVC

    2.1、创建角色

    [root@master01 ~]# cd nacos-k8s/
    [root@master01 nacos-k8s]# kubectl create -f deploy/nfs/rbac.yaml
    

    2.2、如果的K8S命名空间不是default,请在部署RBAC之前执行以下脚本:

    # 将RBAC对象的主题设置为部署provisioner的当前命名空间
    [root@master01 nacos-k8s]#  NS=$(kubectl config get-contexts|grep -e "^*" |awk '{print $5}')
    [root@master01 nacos-k8s]#  NAMESPACE=${NS:-default}  ## default 改成你要部署的ns的name
    [root@master01 nacos-k8s]#  sed -i "s/namespace:.*/namespace: $NAMESPACE/g" ./deploy/nfs/rbac.yaml
    
    # 然后再创建角色
    [root@master01 nacos-k8s]# kubectl create -f deploy/nfs/rbac.yaml
    

    2.3、创建 ServiceAccount 和部署 NFS-Client Provisioner

    • 更改deployment.yaml的NFS的IP
    • 提前部署好NFS环境
    • yum install nfs-utils rpcbind -y
    • https://www.cnblogs.com/hsyw/p/13610960.html
    [root@master01 nacos-k8s]# kubectl create -f deploy/nfs/deployment.yaml  
    

    2.4、创建 NFS StorageClass

    [root@master01 nacos-k8s]# kubectl create -f deploy/nfs/class.yaml
    

    2.5、验证NFS部署成功

    [root@master01 nacos-k8s]# kubectl get pod -l app=nfs-client-provisioner
    

    三、部署数据库

    3.1、部署MySQL

    • 同样要改NFS
    • mysql -u nacos -pnacos
    [root@master01 ~]# cd nacos-k8s
    [root@master01 nacos-k8s]# kubectl create -f deploy/mysql/mysql-nfs.yaml
    

    3.2、初始化数据库

    数据库初始化语句位置  https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
    

    四、部署Nacos

    4.1、修改 deploy/nacos/nacos-pvc-nfs.yaml

    data:
      mysql.db.name: "数据库名称"
      mysql.port: "端口"
      mysql.user: "用户名"
      mysql.password: "密码"
    

    4.2、创建 Nacos

    kubectl create -f deploy/nacos/nacos-pvc-nfs.yaml
    

    4.3、验证Nacos节点启动成功

    [root@master01 nacos-k8s]# kubectl get pod -l app=nacos
    NAME      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
    

    访问后台管理ui 界面

    nacos 部署方式中支持部署ingress,浏览器访问 http://nacos-web.nacos-demo.com/nacos/index.html ,默认用户名密码nacos acos进行管理后台的访问

    注:访问ingress 需要对 nacos-web.nacos-demo.com 进行dns解析,解析ip 为 slave 节点ip,您的集群需要提前安装ingress controller

    扩容测试

    • 在扩容前,使用 kubectl exec获取在pod中的Nacos集群配置文件信息
    for i in 0 1; do echo nacos-$i; kubectl exec nacos-$i cat conf/cluster.conf; done
    

    StatefulSet控制器根据其序数索引为每个Pod提供唯一的主机名。 主机名采用 - 的形式。 因为nacos StatefulSet的副本字段设置为2,所以当前集群文件中只有两个Nacos节点地址

    • 使用kubectl scale 对Nacos动态扩容
    kubectl scale sts nacos --replicas=3
    
    • 在扩容后,使用 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 GET "http://localhost:8848/nacos/v1/ns/raft/state"; done
    

    到这里你可以发现新节点已经正常加入Nacos集群当中

    例子部署环境

    • 机器配置
    内网IP 主机名 配置
    172.17.79.3 k8s-master CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G
    172.17.79.4 node01 CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G
    172.17.79.5 node02 CentOS 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镜像源码
    deploy K8s 部署文件

    配置属性

    • nacos-pvc-nfs.yaml or nacos-quick-start.yaml or nacos-no-pvc.yaml
    名称 必要 描述
    mysql.host N 自建数据库地址 issue #124
    mysql.db.name Y 数据库名称
    mysql.port N 端口
    mysql.user Y 用户名
    mysql.password Y 密码
    NACOS_REPLICAS N 确定执行Nacos启动节点数量,如果不适用动态扩容插件,就必须配置这个属性,否则使用扩容插件后不会生效
    NACOS_SERVER_PORT N Nacos 端口 为peer_finder插件提供端口
    NACOS_APPLICATION_PORT N Nacos 端口
    PREFER_HOST_MODE Y 启动Nacos集群按域名解析
    • nfs deployment.yaml
    名称 必要 描述
    NFS_SERVER Y NFS 服务端地址
    NFS_PATH Y NFS 共享目录
    server Y NFS 服务端地址
    path Y NFS 共享目录
    • mysql
    名称 必要 描述
    MYSQL_ROOT_PASSWORD N ROOT 密码
    MYSQL_DATABASE Y 数据库名称
    MYSQL_USER Y 数据库用户名
    MYSQL_PASSWORD Y 数据库密码
    Nfs:server N NFS 服务端地址,如果使用本地部署不需要配置
    Nfs:path N NFS 共享目录,如果使用本地部署不需要配置

    官网:https://github.com/nacos-group/nacos-k8s/blob/master/README-CN.md

  • 相关阅读:
    开题
    kafka介绍原理
    xxl-job
    多线程使用
    基础
    linux命令
    oracle id 自增
    feign调用远程服务 并传输媒体类型
    复杂sql mybatis查询
    开源easyExcel应用
  • 原文地址:https://www.cnblogs.com/hsyw/p/15187680.html
Copyright © 2020-2023  润新知