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
相关产品推荐
相关产品推荐

