k8s 安装nacos集群
需求
使用k8s部署nacos集群,nacos的数据主要保存在mysql中,因此nacos运行时不需要考虑持久化问题。
这里使用2.3.2版本
导入mysql数据
github地址:https://github.com/alibaba/nacos/releases
找到2.3.2版本,下载压缩包,得到nacos-server-2.3.2.tar.gz
解压文件,找到文件nacos\conf\mysql-schema.sql
mysql-schema.sql,就是nacos的初始化sql
使用客户端工具DBeaver连接到mysql,创建数据库nacos
CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
新建数据库用户nacos_all并授权
CREATE USER 'nacos_all'@'%' IDENTIFIED BY 'abcd@1234';
GRANT ALL PRIVILEGES ON nacos . * TO 'nacos_all'@'%';
FLUSH PRIVILEGES;
切换到数据库nacos,执行sql文件mysql-schema.sql,执行完成后,会得到相应的数据表。
编写yaml
nacos-server.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | apiVersion: v1 kind: ConfigMap metadata: name: nacos-server-config namespace: middleware data: MODE: cluster MYSQL_SERVICE_DB_NAME: nacos MYSQL_SERVICE_HOST: 192.168.20.131 MYSQL_SERVICE_USER: nacos_all MYSQL_SERVICE_PASSWORD: abcd@1234 MYSQL_SERVICE_PORT: "3306" NACOS_REPLICAS: "3" NACOS_SERVER_PORT: "8848" NACOS_SERVERS: nacos-server-0.nacos-server-svc.middleware.svc.cluster. local :8848 nacos-server-1.nacos-server-svc.middleware.svc.cluster. local :8848 nacos-server-2.nacos-server-svc.middleware.svc.cluster. local :8848 PREFER_HOST_MODE: hostname SPRING_DATASOURCE_PLATFORM: mysql NACOS_AUTH_ENABLE: "false" --- apiVersion: apps /v1 kind: StatefulSet metadata: generation: 15 labels: app: nacos-server managedFields: - apiVersion: apps /v1 operation: Update - apiVersion: apps /v1 manager: kube-controller-manager operation: Update subresource: status name: nacos-server namespace: middleware spec: podManagementPolicy: OrderedReady replicas: 3 revisionHistoryLimit: 10 selector: matchLabels: app: nacos-server serviceName: nacos-server-svc template: metadata: labels: app: nacos-server spec: containers: - envFrom: - configMapRef: name: nacos-server-config image: 'nacos/nacos-server:v2.3.2' imagePullPolicy: IfNotPresent name: nacos-server ports: - containerPort: 8848 name: web protocol: TCP - containerPort: 7848 name: g1 protocol: TCP - containerPort: 9848 name: g2 protocol: TCP - containerPort: 9849 name: g3 protocol: TCP resources: limits: cpu: '0.6' ephemeral-storage: 2Gi requests: cpu: 400m memory: 128Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: nacos-server-svc namespace: middleware spec: ports: - name: web port: 8848 protocol: TCP targetPort: 8848 nodePort: 30788 - name: grbc port: 7848 protocol: TCP targetPort: 7848 - name: g2 port: 9848 protocol: TCP targetPort: 9848 nodePort: 31788 - name: g3 port: 9849 protocol: TCP targetPort: 9849 nodePort: 31789 selector: app: nacos-server type : NodePort |
这里的nacos直接部署在middleware命名空间,注意修改上面的mysql相关参数。
NACOS_AUTH_ENABLE: "false"
这个参数必须要有,如果没有,默认会开启认证
由于java项目都运行在k8s里面,因此内网访问,就不需要开启nacos认证了。
创建命名空间
kubectl create namespace middleware
部署应用
kubectl apply -f nacos-server.yaml
等待几分钟,确保3个pod都是Running状态
访问
访问nacos页面,这里使用的nodeport方式暴露端口
http://172.16.0.13:30733/nacos/
默认用户名和密码,都是nacos
点击左侧的clusterManagement-->Cluster Node List,确保3个节点是UP状态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix