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

Kubernetes Ingress异常排查:404错误与证书无效问题

排查方案:Kubernetes部署后404+证书无效问题

一、证书无效问题排查

  • 验证Secret中的证书内容
    执行命令导出并解码Secret中的证书:

    kubectl get secret mywebsite-tls -o jsonpath='{.data.tls\.crt}' | base64 -d > cert.crt
    kubectl get secret mywebsite-tls -o jsonpath='{.data.tls\.key}' | base64 -d > cert.key
    

    检查cert.crt是否包含完整的证书链(通配符证书+中间CA证书),cert.key是否为对应私钥。如果证书链不完整,Azure Ingress Controller会无法识别,转而使用默认的Acme证书。

  • 确认命名空间一致性
    检查Ingress所在命名空间是否与Secret一致:

    kubectl get ingress mywebsite-ingress -o jsonpath='{.metadata.namespace}'
    

    如果Ingress不在default命名空间,Secret无法被加载,Ingress会 fallback 到默认证书。

  • 查看Ingress Controller日志
    针对Azure托管环境,查看AGIC(Application Gateway Ingress Controller)的Pod日志,检查是否有证书加载失败的错误:

    kubectl logs -n kube-system <agic-pod-name>
    

    常见错误包括证书格式不合法、私钥与证书不匹配、权限不足等。

二、404错误排查

  • 确认容器内服务正常
    进入API Pod,验证服务是否正常监听并响应:

    kubectl exec -it <mywebsite-api-pod-name> -- bash
    # 检查端口监听
    ss -tulpn | grep :80
    # 本地请求测试
    curl localhost:80
    

    如果容器内请求返回404,说明镜像本身的服务路由配置有问题,和Kubernetes无关。

  • 验证Service与Pod的关联
    检查Service是否正确关联到Pod的Endpoints:

    kubectl describe service mywebsite-api-service
    

    查看Endpoints字段是否有Pod的IP地址。如果为空,说明Deployment的标签与Service的selector不匹配(检查Deployment的metadata.labels和Service的spec.selector是否一致)。

    同时在集群内测试Service的可达性:

    kubectl run -it --rm --image=curlimages/curl curl-test -- curl mywebsite-api-service.default.svc.cluster.local:80
    

    如果请求返回404,说明后端服务本身的路由有问题;如果连不上,说明Service配置错误。

  • 检查Ingress路由规则
    确认Ingress的路径规则是否匹配后端API的路由:

    • 如果你的.NET API有前缀路由(比如/api),需要将Ingress的path调整为/api/*或/api(根据路由配置)。
    • 检查pathType: Prefix的行为:该配置会匹配所有以指定路径开头的请求,但需确保Ingress Controller正确转发请求到后端。

    查看Ingress的状态:

    kubectl describe ingress mywebsite-ingress
    

    确认Rules和TLS配置是否正确加载。

  • 查看Ingress Controller请求日志
    查看AGIC日志中请求的转发情况,确认请求是否到达后端服务,以及后端返回的响应码:

    kubectl logs -n kube-system <agic-pod-name> | grep "api-uat.mywebsite.com"
    

    如果日志显示请求转发到了正确的Service,但后端返回404,问题出在API服务的路由配置;如果请求没有到达后端,检查Ingress规则或Controller配置。

三、关于Helm的疑问

未使用Helm完全不影响Kubernetes资源的正确性,Helm只是用于简化资源部署和版本管理的工具,和当前的证书、404问题无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:23:10