当前位置: 首页 > article >正文

k8s Ingress 七层负载

Kubernetes 的 Ingress 用于七层(L7)负载均衡,它在应用层(主要是 HTTP/HTTPS 协议)上为集群中的服务提供外部访问,并允许基于请求的内容(如路径、域名)将流量转发到不同的服务。这在实现复杂的路由规则时非常有用,比如根据 URL 路径或主机名将流量导向不同的后端服务。

Ingress 的基本概念

  • Ingress Controller:这是 Ingress 资源的实际实现者。它监听和管理集群中的 Ingress 资源,并根据配置创建负载均衡器或代理来处理流量。常见的 Ingress 控制器包括 NGINX Ingress Controller、Traefik、HAProxy 等。
  • Ingress Resource:是 Kubernetes 中定义的资源对象,描述了流量如何被转发。你可以配置规则,根据域名或 URL 路径将流量导向不同的服务。

基本的 Ingress 配置示例

假设我们有两个服务 service-aservice-b,希望根据路径进行流量分发:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /service-a
        pathType: Prefix
        backend:
          service:
            name: service-a
            port:
              number: 80
      - path: /service-b
        pathType: Prefix
        backend:
          service:
            name: service-b
            port:
              number: 80

配置解释

  • metadata.annotations:这里使用了 nginx.ingress.kubernetes.io/rewrite-target 注解,表示 NGINX Ingress 控制器会将所有请求路径重写为 /(可以根据需要调整)。
  • spec.rules:定义了域名 example.com 的规则。
    • host:请求的域名。当请求的 Host 字段为 example.com 时,这些规则生效。
    • http.paths:根据请求路径将流量路由到不同的服务。
      • path:定义路由路径(例如 /service-a/service-b)。
      • pathType:定义路径的匹配方式,Prefix 表示路径前缀匹配。
      • backend.service.name:指定后端服务的名称。
      • backend.service.port.number:指定后端服务的端口。

使用 Ingress 的步骤

  1. 部署 Ingress Controller:在集群中安装一个 Ingress 控制器。大部分云平台(如 GKE、EKS)都支持安装 Ingress 控制器,也可以使用 Helm 在本地集群中安装。

  2. 创建 Ingress Resource:使用 kubectl apply -f <ingress-config.yaml> 创建 Ingress 配置,将流量按需求分配到不同的服务。

  3. 验证 Ingress

    kubectl get ingress example-ingress
    

常见注解(Annotations)

  • nginx.ingress.kubernetes.io/ssl-redirect:控制是否将 HTTP 流量重定向到 HTTPS。
  • nginx.ingress.kubernetes.io/rewrite-target:用于路径重写,将路径修改为指定的目标路径。
  • nginx.ingress.kubernetes.io/secure-backends:设置是否仅通过 HTTPS 连接到后端服务。

小结

Kubernetes Ingress 是一个有效的七层负载均衡解决方案,尤其适合基于 HTTP/HTTPS 的复杂路由需求。它通过域名和路径规则使多个服务可以共享同一个外部 IP。


http://www.kler.cn/a/372740.html

相关文章:

  • 1Panel应用商店开源软件累计下载突破200万次!
  • 计算机科学与技术-毕业设计选题推荐
  • 信息安全数学基础(35)同态和同构
  • 银河麒麟v10 xrdp安装
  • 什么是字节序、大小端、高低字节、高低地址?
  • 锁升级及线程池相关
  • 迪杰斯特拉算法(Dijkstra‘s Algorithm
  • 路由参数与请求方式
  • 理解环境变量与Shell编程:Linux开发的基础
  • 将你的 Kibana Dev Console 请求导出到 Python 和 JavaScript 代码
  • GB/T 28046.2-2019 道路车辆 电气及电子设备的环境条件和试验 第2部分:电气负荷(4)
  • 如何写好prompt以及评测prompt的好坏
  • 14.社团管理系统(基于springboot和vue)
  • 力扣hot100-->递归/回溯
  • 10.Three.js射线拾取,实现点击选中场景中的物体
  • 【人工智能】重塑未来生活与工作的引擎
  • 鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元
  • 【每日C/C++问题】
  • 国内短剧源码短剧系统搭建小程序部署H5、APP打造短剧平台
  • 闯关leetcode——228. Summary Ranges
  • Steam deck 倒腾日记 - 安装Windows软件,玩上黑神话悟空
  • T8333FI凯钰TMtech升降压线性LED驱动芯片车规认证AEC-Q100
  • 《鸿蒙生态:机遇与挑战并行,创新引领未来》
  • 基于物联网系统的防汛监测系统的设计和实现
  • 运行项目常见报错
  • 使用传感器融合进行3D激光雷达点云运动补偿