镜像仓库地址:https://hub.docker.com/r/nacos/nacos-server
配置文件
- ClusterIP-Service:暴露 8848 端口,用于 pod 间访问
- headless-Service:暴露 8848 端口,service 访问
- ConfigMap:定义的环境变量,这里主要定义 nacos 数据库具体参数
- StatefulSet:在这里定义 nacos 主要配置,包括存储大小,存储方式,参数引用等
- Ingress:通过域名暴露服务
---
apiVersion: v1
kind: Service
metadata:
name: nacos-headless
labels:
app: nacos
spec:
ports:
- port: 8848
name: server
targetPort: 8848
selector:
app: nacos
---
apiVersion: v1
kind: Service
metadata:
name: nacos
labels:
app: nacos
spec:
ports:
- port: 8848
name: server
targetPort: 8848
selector:
app: nacos
type: ClusterIP
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nacos-cm
data:
MYSQL_SERVICE_HOST: "mysql-primary-headless.mysql.svc.cluster.local"
MYSQL_SERVICE_DB_NAME: "nacos"
MYSQL_SERVICE_USER: "root"
MYSQL_SERVICE_PASSWORD: "xxxxxxx"
MODE: "standalone"
SPRING_DATASOURCE_PLATFORM: "mysql"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nacos
spec:
serviceName: nacos-headless
replicas: 1
selector:
matchLabels:
app: nacos
template:
metadata:
labels:
app: nacos
spec:
containers:
- name: nacos
imagePullPolicy: Always
image: nacos/nacos-server
ports:
- containerPort: 8848
name: client
env:
- name: MYSQL_SERVICE_HOST
valueFrom:
configMapKeyRef:
name: nacos-cm
key: MYSQL_SERVICE_HOST
- name: MYSQL_SERVICE_DB_NAME
valueFrom:
configMapKeyRef:
name: nacos-cm
key: MYSQL_SERVICE_DB_NAME
- name: MYSQL_SERVICE_USER
valueFrom:
configMapKeyRef:
name: nacos-cm
key: MYSQL_SERVICE_USER
- name: MYSQL_SERVICE_PASSWORD
valueFrom:
configMapKeyRef:
name: nacos-cm
key: MYSQL_SERVICE_PASSWORD
- name: MODE
valueFrom:
configMapKeyRef:
name: nacos-cm
key: MODE
- name: SPRING_DATASOURCE_PLATFORM
valueFrom:
configMapKeyRef:
name: nacos-cm
key: SPRING_DATASOURCE_PLATFORM
volumeMounts:
- name: datadir
mountPath: /home/nacos/data
- name: logdir
mountPath: /home/nacos/logs
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes: [ "ReadWriteMany" ]
resources:
requests:
storage: 5Gi
storageClassName: nfs-client
volumeMode: Filesystem
- metadata:
name: logdir
spec:
accessModes: [ "ReadWriteMany" ]
resources:
requests:
storage: 2Gi
storageClassName: nfs-client
volumeMode: Filesystem
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nacos
spec:
ingressClassName: nginx
rules:
- host: nacos.gd-njc.com
http:
paths:
- backend:
service:
name: nacos
port:
number: 8848
path: /
pathType: ImplementationSpecific
SPRING_DATASOURCE_PLATFORM :若不填,则默认创建内部数据库,若需使用外部数据库,填 mysql
部署命令
kubectl apply -f .
报错
Unknown column ‘encrypted_data_key’
原因
- 2.1.0版本config_info表中新增字段encrypted_data_key
- 2.1.0版本config_info_beta表中新增字段encrypted_data_key
- 2.1.0版本his_config_info表中新增字段encrypted_data_key
解决方案有以下两个
1、新增字段,数据库执行一下sql
ALTER TABLE nacos.config_info ADD encrypted_data_key TEXT NOT NULL;
ALTER TABLE nacos.config_info_beta ADD encrypted_data_key TEXT NOT NULL;
ALTER TABLE nacos.his_config_info ADD encrypted_data_key TEXT NOT NULL;
2、降低 nacos 版本为 2.0.0