当前位置: 首页 > news >正文

避坑指南:部署完kube-prometheus后,为什么Grafana/Prometheus页面还是打不开?

避坑指南:部署完kube-prometheus后,为什么Grafana/Prometheus页面还是打不开?

当你按照教程一步步部署完kube-prometheus,看到所有Pod都显示为Running状态时,本以为大功告成,却在浏览器输入NodePort地址后遭遇"连接超时"或"拒绝访问"。这种"看得见摸不着"的困境,正是许多Kubernetes新手遇到的典型问题。本文将带你深入排查这个看似简单却暗藏玄机的访问故障。

1. 现象诊断:从表象到本质

首先确认几个基本事实:

  • 使用kubectl get pods -n monitoring确认所有Pod状态为Running
  • 使用kubectl get svc -n monitoring确认Service已正确配置NodePort
  • 节点网络连通性正常,防火墙已放行对应端口

典型症状链

  1. 浏览器访问http://<节点IP>:<NodePort>长时间无响应
  2. 使用curl -v测试返回Connection refused
  3. 集群内通过kubectl port-forward可以正常访问

注意:如果port-forward也无法访问,可能是更基础的部署问题,需先排查Pod日志。

2. 元凶浮现:NetworkPolicy的隐形屏障

通过kubectl get networkpolicy -n monitoring命令,你会发现三个关键策略:

  • prometheus-network-policy
  • grafana-network-policy
  • alertmanager-network-policy

这些策略默认采用白名单模式,只允许monitoring命名空间内的Pod相互访问。这是kube-prometheus的安全设计,却成了外部访问的"隐形墙"。

策略解析

# 典型NetworkPolicy示例 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: grafana-network-policy spec: podSelector: matchLabels: app.kubernetes.io/name: grafana policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: monitoring

3. 解决方案:安全与便利的平衡

3.1 快速解决方案(适合测试环境)

直接删除NetworkPolicy资源:

kubectl delete -f manifests/prometheus-networkPolicy.yaml kubectl delete -f manifests/grafana-networkPolicy.yaml kubectl delete -f manifests/alertmanager-networkPolicy.yaml

3.2 精细控制方案(生产环境推荐)

修改NetworkPolicy,添加外部访问规则:

# 修改后的grafana-network-policy.yaml示例 ingress: - from: - namespaceSelector: {} # 允许所有命名空间 podSelector: {} # 允许所有Pod ports: - protocol: TCP port: 3000

3.3 替代方案:Ingress网关

更安全的方式是通过Ingress暴露服务:

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: grafana-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: grafana.example.com http: paths: - path: / pathType: Prefix backend: service: name: grafana port: number: 3000

4. 深度原理:Kubernetes网络策略解析

NetworkPolicy工作原理示意图:

组件作用必需条件
CNI插件实际执行网络规则必须支持NetworkPolicy
Pod选择器确定策略应用对象匹配Pod标签
规则方向Ingress/Egress定义流量方向
匹配规则namespaceSelector/podSelector定义白名单

常见CNI插件支持情况

  • Calico:完全支持
  • Flannel:需额外配置
  • Cilium:完全支持+增强功能
  • Weave Net:基本支持

5. 生产环境最佳实践

  1. 最小权限原则

    • 只开放必要端口
    • 使用特定IP白名单
    - from: - ipBlock: cidr: 192.168.1.0/24
  2. 监控与审计

    # 检查网络策略生效情况 kubectl describe networkpolicy -n monitoring # 查看实际iptables规则 iptables -L -n -v | grep -i monitoring
  3. 多租户隔离

    - from: - namespaceSelector: matchLabels: team: devops
  4. 性能考量

    • 每条NetworkPolicy会增加约5-10ms延迟
    • 超过50条策略需考虑性能影响

6. 故障排查工具箱

当修改策略后仍无法访问时,按此流程排查:

  1. 验证策略应用

    kubectl get networkpolicy -n monitoring --show-labels
  2. 检查端点状态

    kubectl get endpoints -n monitoring
  3. 网络连通性测试

    # 从集群内测试 kubectl run test-$RANDOM --rm -it --image=alpine -- sh apk add curl curl -v http://grafana:3000
  4. 日志分析

    # 查看kube-proxy日志 kubectl logs -n kube-system -l k8s-app=kube-proxy
  5. 网络插件诊断

    # Calico诊断 calicoctl get networkPolicy -o wide # Cilium诊断 cilium policy get
http://www.jsqmd.com/news/651384/

相关文章:

  • 合宙ESP32C3实战:MPU6500六轴传感器数据读取与校准全解析
  • 用CY7C68013A模拟MDIO时序?这些GPIO配置细节你可能不知道
  • 央视曝光 AI 涉灰产业链:技术红利正被滥用,监管必须跟上
  • 从源码到一键安装包:教你用PyInstaller打包定制版LabelImg(解决闪退和预置标签问题)
  • 《TRAE从入门到精通全攻略》,零基础也能快速上手,助力你快速成长为程序员
  • 雷达信号分析入门:脉内脉间调制到底在玩什么花样?
  • 基于 MATLAB 实现的可视密码图示法设计
  • PCB设计老鸟的AD21 DRC设置清单:如何为你的高速板与低速板定制专属检查规则
  • 终极Windows ISO补丁集成指南:一键制作最新补丁安装镜像的完整教程
  • 科学化学工管理:让教育更高效,让学生更满意
  • DRV8701E双电机驱动电路实战:从原理图困惑到PCB布局的避坑指南
  • Nginx正向代理实战:从源码编译到HTTPS支持的全流程指南
  • 如何用Python自动化脚本破解大麦网抢票难题:技术原理与实战指南
  • 提前72小时预警,巡检提效60%!华电集团联合吉泰智能斩获《火电燃料技术创新大奖》
  • PiliPlus:跨平台B站客户端终极指南,简单快速享受高清视频体验
  • 新手小白实战教程:用 TRAE 从零创建一个“个人日记本”网页应用
  • 【25考研】人大计算机复试:从参考书目到实战面试的避坑指南
  • TVS选型实战指南:从参数到应用的精准匹配
  • 【Pytorch】利用torchvision.utils.save_image高效实现tensor到图片的批量转换与保存
  • 边走边聊 Python 3.8:Chapter 10:Tkinter 桌面小工具
  • 别再手动点Model Explorer了!用Matlab脚本批量修改Stateflow参数,效率翻倍
  • SpringBoot与knife4j无缝集成实战(零基础到精通)
  • 用100块的普通摄像头,我让机械臂学会了‘盲抓’:YOLOv5+Depth-Anything+AnyGrasp实战避坑
  • TimesFM时间序列预测:谷歌基础模型让零样本预测变得如此简单
  • 阿里云机器翻译API调用避坑指南:解决.NET开发中恼人的SignatureDoesNotMatch错误
  • 熵基ZKTECO指纹采集器全系列技术解析:光学/电容/多模态全覆盖,高精度参数与场景适配一览 - 智能硬件-产品评测
  • 从密码锁到电压表:我是如何用一套8086最小系统玩转5个经典课设的(Proteus仿真+代码分享)
  • Android 14/15抓包实战:从系统证书注入到应用进程级捕获
  • 量子计算开发者入局时机分析:软件测试从业者的专业视角
  • 从单线到四线:手把手教你用Vivado Tcl脚本一键优化FPGA配置速度,告别龟速启动