Kubernetes Ingress-Nginx 使用中的杂项配置详解

Kubernetes Ingress-Nginx 使用中的杂项配置详解

【免费下载链接】ingress-nginx Ingress-NGINX Controller for Kubernetes 【免费下载链接】ingress-nginx 项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx

概述

本文将深入探讨 Kubernetes Ingress-Nginx 控制器在实际使用中的一些重要配置项和注意事项,帮助用户更好地理解和优化其 Ingress 配置。

客户端真实 IP 地址处理

在 Kubernetes 环境中,正确处理客户端真实 IP 地址对于日志记录、访问控制等场景至关重要。Ingress-Nginx 提供了多种机制来处理这个问题:

1. X-Forwarded-For 头部方式

默认情况下,Nginx 使用 X-Forwarded-For 请求头来获取客户端 IP 信息。要使此功能正常工作,必须正确配置:

use-forwarded-headers: "true"
proxy-real-ip-cidr: "信任的负载均衡器IP/网络地址"

在 AWS 环境中,通常需要使用 VPC 的 IPv4 CIDR 范围。

2. PROXY 协议方式

当使用 L4 代理时,可以通过启用 PROXY 协议来保留客户端 IP:

use-proxy-protocol: "true"

混合环境配置示例:当同时存在 L7 代理和 L4 负载均衡器时,建议同时启用两种方式:

use-proxy-protocol: "true"
use-forwarded-headers: "true"
proxy-real-ip-cidr: "10.0.0.0/8,192.168.0.0/16,..."

重要提示:务必根据实际环境配置正确的 CIDR 范围。

路径类型详解

Kubernetes Ingress 资源中的每个路径都必须明确指定路径类型:

  • 默认使用 Prefix 类型以保持向后兼容
  • 其他可选类型包括 ExactImplementationSpecific
  • 未指定路径类型的 Ingress 定义将无法通过验证

WebSocket 支持配置

Ingress-Nginx 原生支持 WebSocket 协议,但需要进行以下优化配置:

  1. 增加超时时间设置:

    proxy-read-timeout: "3600"
    proxy-send-timeout: "3600"
    

    默认 60 秒的超时时间对于 WebSocket 连接来说太短,建议设置为 1 小时以上。

  2. 当使用 LoadBalancer 类型服务暴露控制器时,确保负载均衡器与 Nginx 之间使用 TCP 协议而非 HTTP。

TLS 性能优化

优化 TLS 首字节时间(TTFB)的关键配置:

ssl_buffer_size: "4k"
  • 默认值为 4k(Nginx 原生默认值为 16k)
  • 较小的值可以减少 TLS 记录大小,提高首字节到达时间
  • 可根据实际网络条件调整此值

非幂等方法的请求重试

从 Nginx 1.9.13 开始,默认不会对非幂等方法(POST、LOCK、PATCH 等)进行重试。如需恢复旧有行为:

retry-non-idempotent: "true"

架构设计要点

为什么直接使用 Endpoints 而非 Service

Ingress-Nginx 控制器直接使用 Kubernetes Endpoints API 而非 Service 资源来路由流量,这种设计带来了以下优势:

  1. 绕过 kube-proxy,实现更灵活的功能:

    • 会话保持(Session Affinity)
    • 自定义负载均衡算法
  2. 减少性能开销:

    • 避免创建 iptables DNAT 的 conntrack 条目
    • 提高网络性能

重要限制说明

  1. TLS 类型的 Ingress 规则必须明确指定 host 字段
  2. 路径定义必须包含明确的 pathType
  3. 在复杂网络拓扑中,客户端 IP 获取需要仔细配置

最佳实践建议

  1. 在生产环境中,始终明确配置路径类型
  2. 使用 WebSocket 时,务必调整超时设置
  3. 在云环境中,仔细配置客户端 IP 相关设置
  4. 定期检查并优化 TLS 相关参数
  5. 根据应用特性谨慎决定是否启用非幂等方法的重试

通过合理配置这些杂项参数,可以充分发挥 Ingress-Nginx 控制器的潜力,构建高性能、可靠的 Kubernetes 入口解决方案。

【免费下载链接】ingress-nginx Ingress-NGINX Controller for Kubernetes 【免费下载链接】ingress-nginx 项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值