在Kubernetes中配置和管理Ingress Controller需遵循以下实践:
-
选型与部署
- 根据场景选择Nginx、Traefik或云厂商定制Controller,生产环境建议使用Helm部署(例:
helm install ingress-nginx
)。需注意暴露Service类型(LoadBalancer/NodePort),AWS中需关联ALB注解。
- 根据场景选择Nginx、Traefik或云厂商定制Controller,生产环境建议使用Helm部署(例:
-
路由与TLS配置
- 通过Ingress资源定义主机路径规则,示例配置需包含
spec.rules.host
及paths.backend
。证书管理推荐集成cert-manager实现自动签发,通过tls.secretName
关联Let's Encrypt证书。
- 通过Ingress资源定义主机路径规则,示例配置需包含
-
性能优化
- 高并发场景需调整Nginx参数:
worker_processes
设为CPU核数,keepalive
连接数提升至1024。通过HPA设置CPU阈值自动扩容,并启用metrics-server监控。
- 高并发场景需调整Nginx参数:
-
监控与日志
- Prometheus采集
nginx_ingress_requests_total
等指标,Grafana配置QPS/延迟仪表盘。启用JSON格式访问日志并接入EFK栈,关键字段包含upstream_response_time
。
- Prometheus采集
实践挑战与解决方案:
- 证书更新中断:cert-manager 0.15+版本使用CertificateRequest API避免服务波动。
- 多团队路由冲突:通过
metadata.annotations
添加团队标识,结合NetworkPolicy隔离命名空间流量。 - 大规模路由性能:超过2000条路由时,禁用Nginx Ingress的
enable-dynamic-configuration
减少reload次数。 - 混合云兼容性:在跨集群场景中,采用Contour的Multi-Broker机制统一入口策略管理。
关键运维原则:通过GitOps实现Ingress配置版本化,定期执行kubectl ingress-nginx backend
检查配置一致性,并监控ingress_controller_ssl_expire_time
预防证书过期。