Отдельная служба для тех же модулей реплик Statefulset
У меня простой Statefulset
с 3 репликами / стручками.
пг-мастер-0 является фактическим хозяином, а остальной (пг-мастер-1 и пг-Master2) являются резервными серверами или ведомыми.
Пожалуйста, не обращайте внимания на название, над которым я скоро буду работать
Итак, у меня есть 2 услуги
Вопрос: В текущемNodePort
service, если я иду или подключаюсь к 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