1、对接存储为nfs,需要在部署nacos之前部署完成nfs-client-provisioner,默认在default命名空间创建,参考模板:
rbac.yaml
kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: nfs-client-provisioner-runnerrules:- apiGroups: [""]  resources: ["persistentvolumes"]  verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]  resources: ["persistentvolumeclaims"]  verbs: ["get", "list", "watch", "update"]- apiGroups: [""]  resources: ["endpoints"]  verbs: ["get", "list", "watch", "create", "update", "patch"]- apiGroups: ["storage.k8s.io"]  resources: ["storageclasses"]  verbs: ["get", "list", "watch"]- apiGroups: [""]  resources: ["events"]  verbs: ["create", "update", "patch"]---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: run-nfs-client-provisionersubjects:- kind: ServiceAccount  name: nfs-client-provisioner  namespace: defaultroleRef:  kind: ClusterRole  name: nfs-client-provisioner-runner  apiGroup: rbac.authorization.k8s.io---kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: leader-locking-nfs-client-provisionerrules:- apiGroups: [""]  resources: ["endpoints"]  verbs: ["get", "list", "watch", "create", "update", "patch"]---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: leader-locking-nfs-client-provisionersubjects:- kind: ServiceAccount  name: nfs-client-provisioner  # replace with namespace where provisioner is deployed  namespace: defaultroleRef:  kind: Role  name: leader-locking-nfs-client-provisioner  apiGroup: rbac.authorization.k8s.iodeployment.yaml
apiVersion: v1kind: ServiceAccountmetadata:  name: nfs-client-provisioner---kind: DeploymentapiVersion: apps/v1metadata:  name: nfs-client-provisionerspec:  replicas: 1  strategy:    type: Recreate  selector:    matchLabels:      app: nfs-client-provisioner  template:    metadata:      labels:        app: nfs-client-provisioner    spec:      serviceAccount: nfs-client-provisioner      containers:        - name: nfs-client-provisioner          image: dockerhub.kubekey.local/nacos/provisioner:v4.0.0          volumeMounts:            - name: nfs-client-root              mountPath: /persistentvolumes          env:            - name: PROVISIONER_NAME              value: fuseim.pri/ifs            - name: NFS_SERVER              value: x.x.x.x #根据实际环境参数修改            - name: NFS_PATH              value: /mnt/xxxx/emr/nfs-storage #根据实际环境参数修改      volumes:        - name: nfs-client-root          nfs:            server: x.x.x.x #根据实际环境参数修改            path: /mnt/xxxx/emr/nfs-storage #根据实际环境参数修改class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-nfs-storage
provisioner: fuseim.pri/ifs
parameters:
archiveOnDelete: "false"
2、下面为搭建高可用nacos集群所需的yaml模板,默认在default命名空间下创建:
nacos-pvc-nfs.yaml
---apiVersion: v1kind: Servicemetadata:  name: nacos-server  labels:    app: nacosspec:  ports:    - port: 8848      name: server      targetPort: 8848      nodePort: 31891  selector:    app: nacos  type: NodePort---apiVersion: v1kind: Servicemetadata:  name: nacos-headless  labels:    app: nacosspec:  publishNotReadyAddresses: true  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  clusterIP: None  selector:    app: nacos---apiVersion: v1kind: ConfigMapmetadata:  name: nacos-cmdata:  mysql.host: "x.x.x.x"  mysql.db.name: "xx-xx"  mysql.port: "xxxx"  mysql.user: "xxxx"  mysql.password: "xxxxxx"---apiVersion: apps/v1kind: StatefulSetmetadata:  name: nacosspec:  podManagementPolicy: Parallel  serviceName: nacos-headless  replicas: 3  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"      serviceAccountName: nfs-client-provisioner      initContainers:        - name: peer-finder-plugin-install          image: dockerhub.kubekey.local/nacos/nacos-peer-finder-plugin:1.1          imagePullPolicy: Always          volumeMounts:            - mountPath: /home/nacos/plugins/peer-finder              name: data              subPath: peer-finder      containers:        - name: nacos          imagePullPolicy: Always          image: dockerhub.kubekey.local/nacos/nacos-server:v2.1.1          resources:            requests:              memory: "2Gi"              cpu: "500m"          ports:            - containerPort: 8848              name: client-port            - containerPort: 9848              name: client-rpc            - containerPort: 9849              name: raft-rpc            - containerPort: 7848              name: old-raft-rpc          env:            - name: NACOS_REPLICAS              value: "3"            - name: MODE              value: "cluster"            - name: SERVICE_NAME              value: "nacos-headless"            - name: DOMAIN_NAME              value: "cluster.local"            - name: POD_NAMESPACE              valueFrom:                fieldRef:                  apiVersion: v1                  fieldPath: metadata.namespace            - name: MYSQL_SERVICE_HOST              valueFrom:                configMapKeyRef:                  name: nacos-cm                  key: mysql.host            - name: MYSQL_SERVICE_DB_NAME              valueFrom:                configMapKeyRef:                  name: nacos-cm                  key: mysql.db.name            - name: MYSQL_SERVICE_PORT              valueFrom:                configMapKeyRef:                  name: nacos-cm                  key: mysql.port            - name: MYSQL_SERVICE_USER              valueFrom:                configMapKeyRef:                  name: nacos-cm                  key: mysql.user            - name: MYSQL_SERVICE_PASSWORD              valueFrom:                configMapKeyRef:                  name: nacos-cm                  key: mysql.password            - name: SPRING_DATASOURCE_PLATFORM              value: "mysql"            - 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 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848"          volumeMounts:            - name: data              mountPath: /home/nacos/plugins/peer-finder              subPath: peer-finder            - name: data              mountPath: /home/nacos/data              subPath: data            - name: data              mountPath: /home/nacos/logs              subPath: logs  volumeClaimTemplates:    - metadata:        name: data        annotations:          volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"      spec:        accessModes: [ "ReadWriteMany" ]        resources:          requests:            storage: 20Gi  selector:    matchLabels:      app: nacos其中注意修改:
1)configmap中需要填写正确的对接mysql的相关参数;
2)volume.beta.kubernetes.io/storage-class: "managed-nfs-storage" 需要指定正确的sc动态创建pvc。
所需镜像:nacos-peer-finder-plugin:1.1,nacos-server:v2.1.1