一、nacos简介
nacos官网地址
简单易用
动态配置管理、服务发现和动态的一站式解决方案,20多种开箱即用的以服务为中心的架构特性,基本符合生产要求的轻量级易用控制台。
更适应云架构
无缝支持 Kubernetes 和 Spring Cloud,在主流公共云上更容易部署和运行(例如阿里云和 AWS ),多租户和多环境支持。
生产等级
脱胎于历经阿里巴巴10年生产验证的内部产品,支持具有数百万服务的大规模场景,具备企业级SLA的开源产品。
丰富的应用场景
支持限流、大促销预案和异地多活,直接支持或稍作扩展即可支持大量有用的互联网应用场景
流量调度和服务治理。
二、部署
部署基本环境
kubernetes版本v1.26.3-aliyun.1 edge版本
nacos版本v1.26.3-aliyun.1
内核 3.10.0
部署nfs
# 创建角色
kubectl create -f deploy/nfs/rbac.yaml# 变更配置 deploy/nfs/deployment.yaml29 env:30 - name: PROVISIONER_NAME31 value: fuseim.pri/ifs32 - name: NFS_SERVER33 value: # nfs-server地址 # 变更nfsserver的IP地址34 - name: NFS_PATH35 value: /data/nfs-share # 挂载的路径36 volumes:37 - name: nfs-client-root38 nfs:39 server: # nfs-server地址 # 变更nfsserver的IP地址40 path: /data/nfs-share # 挂载的路径# 创建 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
部署MySQL
# 变更配置 deploy/mysql/mysql-nfs.yaml34 - name: mysql-data35 nfs:36 server: # nfs-server地址 # 根据nfs的serverIP地址37 path: /data/mysql # 挂载的路径# 创建数据库
kubectl create -f deploy/mysql/mysql-nfs.yaml# 验证数据库是否正常工作
kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-gf2vd 1/1 Running 0 111m
执行数据库初始化语句
数据库初始化语句位置 https://github.com/alibaba/nacos/blob/develop/distribution/conf/mysql-schema.sql
变更MySQL配置
# deploy/nacos/nacos-pvc-nfs.yaml # 这里也可以使用默认配置
data:mysql.host: "数据库地址"mysql.db.name: "数据库名称"mysql.port: "端口"mysql.user: "用户名"mysql.password: "密码"
存储要求
152 spec:153 accessModes: [ "ReadWriteMany" ]154 resources:155 requests:156 storage: 20Gi # 这里存储需要满足至少20G
创建 Nacos
kubectl create -f deploy/nacos/nacos-pvc-nfs.yaml
pvc和pv关联
# 部署后观察pod状态是Pending 这里需要进行存储关联
]# kubectl get pod -l app=nacos
NAME READY STATUS RESTARTS AGE
nacos-0 0/1 Pending 0 8s
nacos-1 0/1 Pending 0 8s
nacos-2 0/1 Pending 0 8s# 创建pv
cat nacos-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: nacos00-pv #这里和上面对应好创建三个
spec:capacity:storage: 50GivolumeMode: FilesystemaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: RetainstorageClassName: managed-nfs-storagenfs:path: /data/k8s/变量 # 这里三个节点需要使用三个文件夹server: # nfs-server地址# 变更三次,创建三个pv
kubectl create -f nacos-pv.yaml# 查看pvc和pv的关联情况如果这里没有关联成功 Pod也不会成功
]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-nacos-0 Bound nacos00-pv 50Gi RWX managed-nfs-storage 3m15s
data-nacos-1 Bound nacos01-pv 50Gi RWX managed-nfs-storage 3m15s
data-nacos-2 Bound nacos02-pv 50Gi RWX managed-nfs-storage 3m15s
]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nacos00-pv 50Gi RWX Retain Bound default/data-nacos-0 managed-nfs-storage 4m24s
nacos01-pv 50Gi RWX Retain Bound default/data-nacos-1 managed-nfs-storage 4m11s
nacos02-pv 50Gi RWX Retain Bound default/data-nacos-2 managed-nfs-storage 4m4s# 查看nacos的pod
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
对外暴漏nacos
# nacos-nodeport-service.yaml
apiVersion: v1
kind: Service
metadata:name: nacos-nodeport
spec:type: NodePortports:- name: httpport: 8848 # 可以选择其他端口targetPort: 8848nodePort: 30000 # 选择一个合适的 NodePortselector:app: nacos # 创建nodePort
kubectl create -f nacos-nodeport-service.yaml# kubectl get svc # 查看svc
nacos-nodeport NodePort 10.245.209.147 <none> 8848:30000/TCP 3s
三、访问nacos
访问 http://宿主机IP地址:30000