Отдельная служба для тех же модулей реплик Statefulset

У меня простой Statefulset с 3 репликами / стручками.

пг-мастер-0 является фактическим хозяином, а остальной (пг-мастер-1 и пг-Master2) являются резервными серверами или ведомыми.

Пожалуйста, не обращайте внимания на название, над которым я скоро буду работать

Итак, у меня есть 2 услуги

Вопрос: В текущемNodePortservice, если я иду или подключаюсь к IP:30006 Я подключаюсь к pg-master-0. Есть ли способ создать отдельную службу, такую ​​как LoadBalancer, которая обрабатывает мой запрос ТОЛЬКО для pg-master-1 и pg-mastr-2, фактически для всех реплик, кроме pg-master-0?

Я планирую создать для них отдельный сервис, но проблема в том, что все они имеют одинаковые ярлыки.

apiVersion: v1
kind: Service
metadata:
  name: pg-master
  labels:
    app: pg-master
spec:
  type: NodePort
  ports:
  - port: 5432
    name: pg-port
  selector:
    app: pg-master
---
apiVersion: v1
kind: Service
metadata:
  name: pg-master-headless
  labels:
    app: pg-master-headless
spec:
  clusterIP: None
  ports:
  - port: 5431
    name: pg-port-headless
    targetPort: 5432
  selector:
    app: pg-master
---    
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pg-master
spec:
  replicas: 1
  serviceName: pg-master-headless
  selector:
    matchLabels:
      app: pg-master
  template:
    metadata:
      labels:
        app: pg-master
    spec:
      containers:
      - name: pg-master
        image: mjayson/ms-rpi-pg  
        env:
        - name: POSTGRES_USER
          value: postgres
        - name: POSTGRES_PASSWORD
          value: postgres         
        ports:
        - containerPort: 5432
          name: http-port
        volumeMounts:
        - name: pv-data
          mountPath: /var/lib/postgresql/data
      volumes:
      - name: pv-data
        persistentVolumeClaim:
            claimName: master-pv-claim
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pg-slave
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pg-slave
  template:
    metadata:
      labels:
        app: pg-slave
    spec:
      containers:
      - name: pg-slave
        image: mjayson/ms-rpi-pg
        env:
        - name: POSTGRES_USER
          value: postgres
        - name: POSTGRES_PASSWORD
          value: postgres     
        ports:
        - containerPort: 5432
          name: http-port
        volumeMounts:
        - name: pv-data
          mountPath: /var/lib/postgresql/data
      volumes:
      - name: pv-data
        persistentVolumeClaim:
            claimName: slave-pv-claim            

0 ответов

Другие вопросы по тегам