构建Dockerfile,插件在文章底部

FROM nacos/nacos-server:v3.1.1

RUN mkdir -p /home/nacos/plugins/datasource
COPY nacos-postgresql-datasource-plugin-ext-1.0.0-SNAPSHOT.jar  /home/nacos/plugins/datasource
COPY postgresql-42.7.3.jar /home/nacos/plugins/datasource

k8s部署nacos yaml文件

apiVersion: v1
kind: Service
metadata:
  name: nacos
  labels:
    app: nacos
spec:
  type: NodePort
  ports:
    - port: 8848
      name: server
      targetPort: 8848
    - port: 9848
      name: client-rpc
      targetPort: 9848
    - port: 9849
      name: raft-rpc
      targetPort: 9849
    ## 兼容1.4.x版本的选举端口
    - port: 7848
      name: old-raft-rpc
      targetPort: 7848
    - port: 8080
      name: console
      targetPort: 8080
      nodePort: 9080
  selector:
    app: nacos
---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  labels:
    app: nacos-headless
spec:
  type: ClusterIP
  clusterIP: None
  ports:
    - port: 8848
      name: server
      targetPort: 8848
    - port: 9848
      name: client-rpc
      targetPort: 9848
    - port: 9849
      name: raft-rpc
      targetPort: 9849
    ## 兼容1.4.x版本的选举端口
    - port: 7848
      name: old-raft-rpc
      targetPort: 7848
    - port: 8080
      name: console
      targetPort: 8080
  selector:
    app: nacos
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
data:
  application.properties: |
    nacos.server.main.port=${NACOS_APPLICATION_PORT:8848}
    spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
    db.num=${MYSQL_DATABASE_NUM:1}
    db.url.0=jdbc:postgresql://192.168.66.230:5432/nacos?currentSchema=public&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
    db.user.0=game
    db.password.0=336699
    db.pool.config.driverClassName=org.postgresql.Driver
    db.pool.config.connectionTimeout=${DB_POOL_CONNECTION_TIMEOUT:30000}
    db.pool.config.validationTimeout=10000
    db.pool.config.maximumPoolSize=20
    db.pool.config.minimumIdle=2
    management.endpoints.web.exposure.include=prometheus
    management.metrics.export.elastic.enabled=false
    management.metrics.export.influx.enabled=false
    nacos.config.push.maxRetryTime=50
    nacos.naming.data.warmup=true
    nacos.naming.empty-service.auto-clean=true
    nacos.naming.empty-service.clean.initial-delay-ms=50000
    nacos.naming.empty-service.clean.period-time-ms=30000
    nacos.ai.mcp.registry.port=9080
    nacos.server.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
    server.tomcat.accesslog.enabled=true
    server.tomcat.accesslog.max-days=30
    server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
    server.tomcat.basedir=file:.
    server.error.include-message=ALWAYS
    nacos.console.port=${NACOS_CONSOLE_PORT:8080}
    nacos.console.contextPath=${NACOS_CONSOLE_CONTEXTPATH:}
    nacos.console.remote.server.context-path=${SERVER_SERVLET_CONTEXTPATH:/nacos}
    nacos.console.ui.enabled=true
    nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
    nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
    nacos.core.auth.enabled=false
    nacos.core.auth.admin.enabled=true
    nacos.core.auth.console.enabled=true
    nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
    nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:}
    nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}
    nacos.core.auth.plugin.nacos.token.cache.enable=false
    nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
    nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:}
    nacos.istio.mcp.server.enabled=false
    nacos.k8s.sync.enabled=false
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
spec:
  serviceName: nacos-headless
  replicas: 1
  selector:
    matchLabels:
      app: nacos
  template:
    metadata:
      labels:
        app: nacos
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - nacos
              topologyKey: "kubernetes.io/hostname"
      nodeName: n01
      containers:
        - name: nacos
          imagePullPolicy: Always
          image: 192.168.66.241/base/nacos-server-pg:v3.1.1
          resources:
            requests:
              memory: "2Gi"
              cpu: "500m"
          ports:
            - containerPort: 8848
              name: client
            - containerPort: 9848
              name: client-rpc
            - containerPort: 9849
              name: raft-rpc
            - containerPort: 7848
              name: old-raft-rpc
            - containerPort: 8080
              name: console
          volumeMounts:
            - name: conf
              mountPath: /home/nacos/conf/application.properties
              subPath: application.properties
          env:
            - name: NACOS_AUTH_TOKEN
              value: c2FmZHNhZGZhc2ZzYWZkMjM0cjIzNDUyMTNlZmRkc3FmYWRzZnNhZGZkc2ZzYWRmMzJlNDIzCg==
            - name: NACOS_AUTH_IDENTITY_KEY
              value: nacos
            - name: NACOS_AUTH_IDENTITY_VALUE
              value: nacos
            - name: SPRING_DATASOURCE_PLATFORM
              value: postgresql
            - name: MODE
              value: standalone
            - name: NACOS_REPLICAS
              value: "1"
            - name: NACOS_SERVER_PORT
              value: "8848"
            - name: NACOS_APPLICATION_PORT
              value: "8848"
            - name: PREFER_HOST_MODE
              value: "hostname"
            - name: NACOS_SERVERS
              value: "nacos-0.nacos-headless.default.svc.cluster.local:8848"
      imagePullSecrets:
      - name: regcred
      volumes:
      - configMap:
          defaultMode: 420
          name: nacos-cm
        name: conf