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

Kubernetes高可用Workload设置及跨可用区代理负载均衡实现咨询

跨可用区K8S代理型负载均衡实现方案

针对你的场景,最成熟且符合需求的方案是采用Ingress Nginx七层代理,具体配置流程如下:

前置准备

首先确保你现有的两个Deployment已经配置了节点亲和规则,保证Backend-App-AZ1的Pod只会调度到Node-AZ1、Backend-App-AZ2的Pod只会调度到Node-AZ2,同时给两个Deployment添加统一的公共标签,比如app: backend-app,方便后续Service统一匹配后端。

配置步骤

  • 第一步:创建统一的ClusterIP Service
    编写如下YAML文件创建Service,自动纳管两个AZ下的所有后端Pod:
apiVersion: v1
kind: Service
metadata:
  name: backend-app-svc
spec:
  type: ClusterIP
  selector:
    app: backend-app # 匹配两个Deployment的公共标签
  ports:
  - port: 80
    targetPort: 8080 # 替换为你的实际容器服务端口
  • 第二步:安装Ingress Nginx控制器
    Ingress Nginx是标准的代理型七层负载均衡组件,支持路径匹配、自定义负载均衡策略等能力,直接用官方YAML安装即可。

  • 第三步:配置Ingress转发规则
    编写如下Ingress规则,实现www.sample.com/api路径的请求代理转发:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: backend-app-ingress
  annotations:
    # 显式指定轮询策略,保证请求平均分配到后端Pod
    nginx.ingress.kubernetes.io/load-balance: "round_robin"
spec:
  ingressClassName: nginx
  rules:
  - host: www.sample.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: backend-app-svc
            port:
              number: 80

效果验证

将www.sample.com域名解析到Ingress Nginx的对外访问IP后,所有发送到/api路径的请求会被Nginx代理,默认按照轮询策略平均转发到两个可用区的后端Pod上,符合你的高可用需求。

可选扩展

如果你需要对外暴露LoadBalancer类型的访问入口,可搭配开源组件MetalLB使用,它是纯软件实现的代理型LoadBalancer,会为Ingress Nginx分配对外可访问的固定IP,无需依赖云厂商的LB服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:36:02