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

AWS Route53环境下K8s集群中Prometheus Ingress访问故障排查

排查Prometheus Ingress无法访问的步骤

你好,先帮你梳理下之前zsh报错的原因——zsh会把方括号[]当成通配符解析,所以用大括号{}或者给参数加引号(比如--set alertmanager.ingress.hosts="alertmanager.earth.myzone.com")都能解决部署问题。现在重点解决访问不了的问题,咱们按优先级一步步排查:

  • 第一步:确认Ingress资源状态
    先看看Helm创建的Ingress是不是正常生成了,执行命令:

    kubectl get ingress -n default  # 未指定命名空间的话默认是default
    

    重点看ADDRESS字段:

    • 如果是空值,说明Ingress Controller没和Ingress资源关联上,大概率是集群没部署Ingress Controller(kops默认可能未预装),或者Controller运行异常。
    • 如果有值(通常是AWS ELB的域名或IP),记下来,后面要和DNS解析做对比。
  • 第二步:检查Ingress Controller是否正常运行
    如果用的是常用的nginx-ingress,执行以下命令检查状态:

    # 查看Controller Pod运行状态
    kubectl get pods -n kube-system -l app=nginx-ingress
    # 查看Controller Service状态
    kubectl get svc -n kube-system -l app=nginx-ingress
    

    确保Pod都是Running状态,没有频繁重启;Service类型是LoadBalancer,且EXTERNAL-IP字段有值(和刚才Ingress的ADDRESS一致)。如果Pod没正常启动,查看日志排查:

    kubectl logs -n kube-system <nginx-ingress-pod-name>
    
  • 第三步:验证Route 53域名解析
    你的三个子域名需要指向Ingress Controller的外部地址(ELB域名或IP),用dig或nslookup验证解析是否正确:

    dig server.earth.myzone.com
    

    看返回的ANSWER SECTION里的IP/域名是不是和Ingress的ADDRESS一致。如果不一致,去Route 53的托管区检查A记录或CNAME记录,确保解析配置正确。

  • 第四步:检查Ingress规则与后端服务
    查看具体Ingress的详细配置,比如server的Ingress:

    kubectl describe ingress prometheus-server -n default
    

    重点关注:

    • Rules里的Host是不是正确的server.earth.myzone.com
    • Backend里的Service名称和端口是不是和Prometheus server的Service匹配
      然后检查后端Service的Endpoints是否正常:
    kubectl get endpoints prometheus-server -n default
    

    如果ENDPOINTS字段是空的,说明对应的Prometheus server Pod没正常运行,或者标签匹配错误。

  • 第五步:检查Prometheus相关Pod与Service状态
    确认Prometheus核心组件的Pod都正常运行:

    kubectl get pods -n default -l app=prometheus
    

    确保所有Pod都是Running状态,没有CrashLoopBackOff。再检查对应的Service:

    kubectl get svc -n default -l app=prometheus
    

    确认Service的ClusterIP存在,且PORT(S)配置正确。

  • 第六步:集群内部测试访问
    排除外部网络和DNS的干扰,在集群内部做测试:

    1. 临时启动一个测试Pod:
      kubectl run -it --rm test-pod --image=busybox:1.28 -- sh
      
    2. 在Pod内部直接访问Service:
      curl http://prometheus-server:9090
      
      如果能访问,说明内部服务正常,问题出在Ingress或DNS解析;如果不能访问,说明后端服务本身有问题,去查看Pod日志排查。
  • 第七步:检查AWS安全组配置
    因为是AWS环境,还要检查两类安全组:

    • ELB的安全组是否开放了80(或443)端口给你的访问IP段(测试阶段可以临时开放0.0.0.0/0)
    • 集群节点的安全组是否允许ELB的安全组访问Ingress Controller的80/443端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:43:26