You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS集群通过域名调用服务时SSL握手平均耗时超9秒求助

排查EKS集群Nginx Ingress SSL握手超时问题

针对你遇到的EKS集群中Nginx Ingress搭配cert-manager管理的Let's Encrypt证书时SSL握手平均耗时超9秒、移除TLS后请求正常的问题,给出以下具体排查步骤:

  • 验证Ingress控制器的证书加载状态
    进入Nginx Ingress控制器Pod,执行以下命令检查证书配置:

    kubectl exec -n <ingress-namespace> <nginx-pod-name> -- nginx -T | grep -A 10 -B 5 ssl_certificate
    

    确认证书路径正确,同时查看证书文件的更新时间,验证cert-manager是否已将证书同步至对应Secret,且控制器能读取到有效证书内容。另外检查Secret挂载状态:

    kubectl exec -n <ingress-namespace> <nginx-pod-name> -- mount | grep secrets
    

    排查是否存在挂载延迟或权限不足导致证书无法及时读取的情况。

  • 排查Ingress控制器与etcd的通信延迟
    测量控制器到etcd的网络耗时:

    kubectl exec -n <ingress-namespace> <nginx-pod-name> -- curl -w "%{time_total}\n" -k https://<etcd-cluster-ip>:2379/health
    

    替换<etcd-cluster-ip>为集群内部etcd服务的ClusterIP,确认是否存在高延迟。若有etcd监控,查看etcd_server_grpc_request_duration_seconds指标,分析获取Secret的请求耗时;无监控时可在etcd节点抓包,观察控制器请求的响应时长。

  • 定位SSL握手的具体耗时阶段
    在客户端执行以下命令,拆分SSL握手各环节的耗时:

    openssl s_client -connect <your-domain>:443 -timing
    

    该命令会输出证书验证、密钥交换等阶段的具体耗时,快速定位卡顿环节。同时开启Nginx的SSL详细日志:修改Ingress控制器的ConfigMap,添加配置:

    ssl_verbose_logging: "on"
    

    重启控制器Pod后,查看日志中SSL_do_handshake()相关的耗时记录,明确控制器处理SSL握手时的延迟点。

  • 排查AWS负载均衡器的TLS配置影响
    确认AWS LB的TLS处理方式:若为NLB,检查是TLS终止在LB还是传递至Ingress控制器。可临时切换为LB托管证书终止TLS,测试握手耗时是否恢复正常,排除LB层面的问题。同时查看CloudWatch中的LB指标TLSHandshakeTime,验证LB自身的握手耗时是否异常。

  • 检查cert-manager的证书同步流程
    查看cert-manager日志,确认证书颁发与Secret同步的时效性:

    kubectl logs -n cert-manager <cert-manager-pod-name> | grep <your-certificate-name>
    

    排查是否存在证书更新延迟或Secret同步失败的情况。另外查看Ingress资源的事件:

    kubectl describe ingress <your-ingress-name>
    

    检查是否有TLS相关的警告或错误信息。

内容的提问来源于stack exchange,提问作者Adeola Oladeinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:26:23