k8s集群部署nacos集群
1、部署 MySQL
k8s集群上部署mysql,注意storageClassName名字,生产环境上不建议用这种方式,推荐独立部署mysql
vim nacos-mysql.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: nacos-mysqlnamespace: nacos
spec:serviceName: nacos-mysqlreplicas: 1selector:matchLabels:app: nacos-mysqltemplate:metadata:labels:app: nacos-mysqlspec:containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalue: "nacos@123"- name: MYSQL_DATABASEvalue: "nacos_config"ports:- containerPort: 3306volumeMounts:- name: mysql-datamountPath: /var/lib/mysqlvolumes:- name: mysql-datapersistentVolumeClaim:claimName: nacos-mysql-pvc---
apiVersion: v1
kind: Service
metadata:name: nacos-mysqlnamespace: nacos
spec:selector:app: nacos-mysqlports:- port: 3306targetPort: 3306---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nacos-mysql-pvcnamespace: nacos
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: nfs-client
2、初始化数据库
我这里用自建的mysql,不使用k8s集群部署mysql的方式
下载nacos初始化SQL
https://github.com/alibaba/nacos/blob/2.4.1/distribution/conf/mysql-schema.sql
登录MySQL创建数据库
mysql -u root -p -e "CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
3、部署 Nacos 集群(3节点)
记得修改mysql数据库连接地址
vim nacos-cluster.yaml
root@opstest001:~/nacos# cat nacos-cluster.yaml
apiVersion: v1
kind: Namespace
metadata:name: nacos---
apiVersion: v1
kind: Service
metadata:name: nacos-headlessnamespace: nacoslabels:app: nacos
spec:ports:- port: 8848name: client- port: 9848name: clusterclusterIP: Noneselector:app: nacos---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: nacos-clusternamespace: nacos
spec:serviceName: nacos-headlessreplicas: 3podManagementPolicy: OrderedReadyselector:matchLabels:app: nacostemplate:metadata:labels:app: nacosspec:affinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 100podAffinityTerm:labelSelector:matchExpressions:- key: appoperator: Invalues:- nacostopologyKey: "kubernetes.io/hostname"containers:- name: nacosimage: registry.cn-hangzhou.aliyuncs.com/iuxt/nacos-server:v2.3.2args:- "/bin/sh"- "-c"- "exec java -Dnacos.standalone=false -Dlogging.path=/dev/stdout -jar /home/nacos/nacos-server.jar"ports:- containerPort: 8848name: client- containerPort: 9848name: clusterenv:- name: PREFER_HOST_MODEvalue: hostname- name: NACOS_SERVER_PORTvalue: "8848"- name: NACOS_APPLICATION_PORTvalue: "8848"- name: SPRING_DATASOURCE_PLATFORMvalue: mysql- name: MYSQL_SERVICE_HOSTvalue: "192.168.2.251"- name: MYSQL_SERVICE_DB_NAMEvalue: "nacos_config"- name: MYSQL_SERVICE_PORTvalue: "3306"- name: MYSQL_SERVICE_USERvalue: "root"- name: MYSQL_SERVICE_PASSWORDvalue: "dbaadmin@123"- name: NACOS_AUTH_ENABLEvalue: "true" # 开启鉴权- name: NACOS_AUTH_IDENTITY_KEYvalue: "nacos" # 身份标识Key(默认值)- name: NACOS_AUTH_IDENTITY_VALUEvalue: "nacos" # 身份标识Value(默认值)- name: NACOS_AUTH_TOKENvalue: "SecretKey012345678901234567890123456789012345678901234567890123456789" # 自定义JWT密钥- name: NACOS_SERVERSvalue: "nacos-cluster-0.nacos-headless.nacos.svc.cluster.local:8848 nacos-cluster-1.nacos-headless.nacos.svc.cluster.local:8848 nacos-cluster-2.nacos-headless.nacos.svc.cluster.local:8848"readinessProbe:httpGet:path: /nacos/v1/console/health/livenessport: 8848initialDelaySeconds: 20periodSeconds: 10livenessProbe:httpGet:path: /nacos/v1/console/health/livenessport: 8848initialDelaySeconds: 60periodSeconds: 20volumeMounts:- name: nacos-datamountPath: /home/nacos/datavolumes:- name: nacos-dataemptyDir: {}
---
apiVersion: v1
kind: Service
metadata:name: nacos-cluster-servicenamespace: nacoslabels:app: nacos
spec:type: ClusterIPselector:app: nacosports:- name: clientport: 8848targetPort: 8848
配置ingress,设置管理地址
root@opstest001:~/nacos# cat nacos-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nacos-ingressnamespace: nacosannotations:nginx.ingress.kubernetes.io/rewrite-target: /nacos/$1nginx.ingress.kubernetes.io/proxy-read-timeout: "600"nginx.ingress.kubernetes.io/proxy-send-timeout: "600"nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec:ingressClassName: nginx # 明确指定使用 nginx IngressClassrules:- host: nacos.cctbb.comhttp:paths:- path: /(.*)pathType: ImplementationSpecificbackend:service:name: nacos-cluster-serviceport:number: 8848
访问
http://nacos.cctbb.com
nacos/nacos