自学内容网 自学内容网

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。


原文地址:https://blog.csdn.net/u010674101/article/details/143360552

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!