You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ingress负载均衡器与Postgres Service使用同一IP?

K8s多域名前端及Postgres部署配置调整方案

场景说明

部署两个前端应用,分别对应域名 test1.mysite.com 和 test2.mysite.com,两个域名均指向IP 162.145.23.123;同时部署Postgres数据库,要求其Service也使用该固定IP。


前端1配置(test1.mysite.com)

kind: Deployment
apiVersion: apps/v1
metadata:
  name: front-app
  labels:
    app: front-app
spec:
  selector:
    matchLabels:
      app: front-app
  replicas: 1
  template:
    metadata:
      labels:
        app: front-app
    spec:
      containers:
      - name: front-app
        image: nginx
        ports:
          - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: front-service
spec:
  selector:
    app: front-app
  ports:
  # 镜像默认端口
  - port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-localhost
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: test1.mysite.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: front-service
                port:
                  number: 80
status:
  loadBalancer:
    ingress:
      - ip: 162.145.23.123

前端2配置(test2.mysite.com)

kind: Deployment
apiVersion: apps/v1
metadata:
  name: front-app2
  labels:
    app: front-app2
spec:
  selector:
    matchLabels:
      app: front-app2
  replicas: 1
  template:
    metadata:
      labels:
        app: front-app2
    spec:
      containers:
      - name: front-app2
        image: nginx
        ports:
          - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: front-service2
spec:
  selector:
    app: front-app2
  ports:
  # 镜像默认端口
  - port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-localhost2
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: test2.mysite.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: front-service2
                port:
                  number: 80
status:
  loadBalancer:
    ingress:
      - ip: 162.145.23.123

Postgres配置(调整后)

要让Postgres的LoadBalancer Service使用固定IP 162.145.23.123,需在Service配置中添加 loadBalancerIP 字段(前提是集群所在环境支持指定固定LoadBalancer IP,比如云厂商托管集群或自建集群的LoadBalancer组件支持此功能):

apiVersion: v1
kind: Service
metadata:
  name: hello-pg
  labels:
    app: hello-pg
spec:
  type: LoadBalancer
  loadBalancerIP: 162.145.23.123 # 指定固定IP
  ports:
  - port: 5432
    targetPort: 5432
    protocol: TCP
  selector:
    app: hello-pg
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: db-secret-credentials
  labels:
    app: postgresdb
data:
  POSTGRES_DB: testDB
  POSTGRES_USER: testUser
  POSTGRES_PASSWORD: testPassword
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-pg-deployment
  labels:
    app: hello-pg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-pg
  template:
    metadata:
      labels:
        app: hello-pg
    spec:
      containers:
      - name: hello-pg
        image: postgres
        ports:
          - containerPort: 5432
        envFrom:
          - configMapRef:
              name: db-secret-credentials

注意事项

  1. 确保 162.145.23.123 是集群LoadBalancer组件可分配的可用IP,且未被其他资源占用;
  2. 部分云厂商可能需要先将该IP预留为静态IP,才能在Service中指定;
  3. 前端的Ingress已绑定该IP,需确认Ingress Controller的LoadBalancer配置正常,确保域名解析指向该IP后可正常访问前端应用。

内容的提问来源于stack exchange,提问作者Bronems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:59:53