apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres labels: app: postgres env: live spec: selector: matchLabels: app: postgres env: live serviceName: postgres-service replicas: 1 template: metadata: labels: app: postgres env: live spec: containers: - name: postgres-exporter image: quay.io/prometheuscommunity/postgres-exporter ports: - containerPort: 9187 protocol: TCP env: - name: DATA_SOURCE_NAME value: "postgresql://postgres:pg2020@localhost:5432/postgres?sslmode=disable" #value: "port=5432 host=127.0.0.1" - name: postgres image: postgres:13 ports: - containerPort: 5432 protocol: TCP volumeMounts: - name: postgres-disk mountPath: /var/lib/postgresql/data env: - name: POSTGRES_PASSWORD value: pg2020 - name: PGDATA value: /var/lib/postgresql/data/pgdata affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - prometheus - loki topologyKey: kubernetes.io/hostname # - name: prometheus-exporter # image: wrouesnel/postgres_exporter # env: # - name: DATA_SOURCE_NAME # value: postgresql://postgres:pg2020@localhost:5432/postgres?sslmode=disable volumes: - name: postgres-disk persistentVolumeClaim: claimName: postgres-data # volumeClaimTemplates: # - metadata: # name: postgres-disk # spec: # accessModes: # - ReadWriteOnce # resources: # requests: # storage: 10Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgres-data labels: app: postgres spec: storageClassName: nfs-ssd volumeName: postgres-data accessModes: - ReadWriteOnce resources: requests: storage: 40Gi --- apiVersion: v1 kind: PersistentVolume metadata: name: postgres-data spec: storageClassName: "nfs-ssd" nfs: path: /data/raid1-ssd/k8s-data/postgres-data server: ebin01 capacity: storage: 40Gi accessModes: - ReadWriteOnce volumeMode: Filesystem persistentVolumeReclaimPolicy: Retain claimRef: kind: PersistentVolumeClaim name: postgres-data namespace: live-env --- apiVersion: v1 kind: Service metadata: name: postgres labels: app: postgres env: live spec: selector: env: live type: LoadBalancer loadBalancerIP: 172.23.255.4 ports: - name: postgres port: 5432 targetPort: 5432 - name: exporter port: 9187 targetPort: 9187