1. Nginx Ingress Controller 调优
内核参数调优
调整全连接队列的大小
somaxconn
: 监听socket的最大连接数,影响Nginx监听端口的连接队列大小,建议设置为65535。
backlog
: 在Nginx配置文件中设置,决定listen端口的连接队列大小,默认为511,建议扩大。
扩大源端口范围
net.ipv4.ip_local_port_range
: 控制源端口的范围,避免高并发时源端口耗尽,建议范围调整为102465535。
TIME_WAIT状态优化
net.ipv4.tcp_tw_reuse
: 开启TIME_WAIT复用,允许将TIME_WAIT连接重新用于新的TCP连接,建议设置为1。
net.ipv4.tcp_fin_timeout
和net.netfilter.nf_conntrack_tcp_timeout_time_wait
: 减少系统释放FIN_WAIT2状态和TIME_WAIT状态连接的时间,建议分别设置为15和30。
增加处于TIME_WAIT状态的连接数
tcp_max_tw_buckets
: 控制TIME_WAIT状态连接数上限,避免端口被长时间占用,建议设置为55000。
调大最大文件句柄数
fs.filemax
: 系统允许的最大文件句柄数,影响Nginx同时处理的连接数,建议调大至1048576。
2. 配置示例
使用initContainers在Pod启动前设置内核参数,确保参数调整正确实施:
initContainers: name: setsysctl image: busybox securityContext: privileged: true command: sh c | sysctl w net.core.somaxconn=65535 sysctl w net.ipv4.ip_local_port_range="1024 65535" sysctl w net.ipv4.tcp_tw_reuse=1 sysctl w net.ipv4.tcp_fin_timeout=15 sysctl w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30 sysctl w fs.filemax=1048576
3. 相关问题与解答
1、如何监控Nginx Ingress的性能指标?
可通过Prometheus和Grafana等工具监控Nginx Ingress的性能指标,如QPS、响应时间、连接数等,需要配置Nginx Ingress Controller导出指标到Prometheus,再通过Grafana展示。
2、如何实现基于域名的路由分发?
在Kubernetes Ingress资源中使用rules
字段定义不同的主机名(host),并为每个主机名指定对应的后端服务,为app1.example.com
和app2.example.com
分别指向不同的服务。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/565338.html