相同Statefulset副本Pod的单独服务

时间:2020-08-05 20:40:48

标签: kubernetes microk8s cdk8s

我有一个简单的Statefulset,其中有3个副本/吊舱。

enter image description here

enter image description here

pg-master-0 是实际的master,其余的( pg-master-1 pg-master2 )是备用的服务器或从属服务器。

请忽略命名,我将尽快进行处理

所以我有2个服务

enter image description here

问题:在当前的NodePort服务中,如果我转到或连接到 IP:30006 ,我正在连接到 pg-master-0 。我有办法创建像 LoadBalancer 这样的单独服务来处理我对 ONLY pg-master-1 pg-mastr-2 实际上是所有副本,但 pg-master-0 上除外?

我打算为他们创建单独的服务,但问题是它们都具有相同的标签

enter image description here

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 个答案:

没有答案
相关问题