本次部署采用nfs作为存储

每个pod有独立存储通过变量实现 subPathExpr: logs/$(POD_NAME)

clusterIP: none  # 表示这是一个headless service

---
apiVersion: v1
kind: PersistentVolume
metadata:
   name: pv-nacos
spec:
   capacity:
       storage: 10Gi
   volumeMode: Filesystem
   accessModes:
     - ReadWriteOnce
   persistentVolumeReclaimPolicy: Retain
   storageClassName: nfs-nacos
   nfs:
      path: /data/nfs-volumes/nacos
      server: 10.0.0.77
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
   name:  nacos-claim
   namespace: kube-public
spec:
   accessModes:
     - ReadWriteOnce
   volumeMode: Filesystem
   resources:
     requests:
       storage: 10Gi
   storageClassName: nfs-nacos
---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  labels:
    app: nacos
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
    - port: 8848
      name: server
      targetPort: 8848
  clusterIP: None
  selector:
    app: nacos
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
  namespace: kube-public
spec:
  serviceName: nacos-headless
  replicas: 3
  selector:
    matchLabels:
      app: nacos
  template:
    metadata:
      labels:
        app: nacos
    spec:
      containers:
      - name: nacos
        image: nacos/nacos-server:2.0.3
        imagePullPolicy: IfNotPresent
        resources:
            limits:
              cpu: 1000m
              memory: 1000Mi
            requests:
              cpu: 500m
              memory: 512Mi
        env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
              apiVersion: v1
              fieldPath: metadata.name 
         - name: NACOS_SERVERS
           value: nacos-0.nacos-headless.kube-public.svc.cluster.local:8848 nacos-1.nacos-headless.kube-public.svc.cluster.local:8848 nacos-2.nacos-headless.kube-public.svc.cluster.local:8848
         - name: MYSQL_SERVICE_HOST
           value: mariadb.kube-public.svc.cluster.local
         - name: MYSQL_SERVICE_PORT
           value: "3306"
         - name: MYSQL_SERVICE_USER
           value: root
         - name: MYSQL_SERVICE_PASSWORD
           value: "123456"
         - name: MYSQL_SERVICE_DB_NAME
           value: nacos_config
        ports:
        - name: http 
          containerPort: 8848
          protocol: TCP
        - name: rpc
          containerPort: 9848
          protocol: TCP
        volumeMounts:
        - mountPath: /home/nacos/logs
          subPathExpr: logs/$(POD_NAME)
          name: data

      imagePullSecrets:
      - name: harbor-secret
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: nacos-claim



实现Nginx 4层反代实现

    upstream backend-nacos {
        server nacos-0.nacos-headless.kube-public.svc.cluster.local:8848;
    }

部署结果

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐