问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何在物理主机上安全访问Grafana?

创作时间:
作者:
@小白创作中心

如何在物理主机上安全访问Grafana?

引用
7
来源
1.
https://www.solo.io/topics/kubernetes-api-gateway/kubernetes-ingress
2.
https://learn.microsoft.com/zh-cn/python/api/azure-mgmt-compute/azure.mgmt.compute.v2019_07_01.models.virtualmachinescalesetipconfiguration?view=azure-python
3.
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/
4.
https://m.book118.com/html/2017/0823/129724278.shtm
5.
http://dict.youdao.com/w/virtual_machine_configuration/
6.
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/custom-template/
7.
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/

在物理主机上访问通过虚拟机部署的 Kubernetes 集群中的 Grafana,可以通过以下步骤解决:


方法一:修改本地 Hosts 文件(推荐)

适用场景:物理机与集群节点在同一局域网,且虚拟机有固定 IP。

  1. 获取 Ingress 控制器所在节点的 IP

    kubectl get svc -n ingress-nginx  # 假设使用 Nginx Ingress,查看 EXTERNAL-IP 或 NodePort
    

    如果 Service 类型为 NodePort,记录节点的 IP(如 192.168.1.100)。

  2. 修改物理机 Hosts 文件

    • Linux/Macsudo vi /etc/hosts
    • WindowsC:\Windows\System32\drivers\etc\hosts
    192.168.1.100 grafana.mydomain.com
    
  3. 访问 Grafana
    浏览器访问 http://grafana.mydomain.com(或 https 如果配置了 TLS)。


方法二:通过 NodePort 直接访问

适用场景:Ingress 控制器 Service 类型为 NodePort

  1. 查找 NodePort 端口

    kubectl get svc -n ingress-nginx
    

    找到 PORT(S) 列中的 NodePort(如 80:31000/TCP,则 31000 是端口)。

  2. 直接通过节点 IP + 端口访问
    浏览器访问 http://<节点IP>:31000,并通过 Host 头指定域名:

    curl -H "Host: grafana.mydomain.com" http://<节点IP>:31000
    

方法三:使用 kubectl port-forward(临时调试)

适用场景:快速临时访问,无需修改网络配置。

  1. 找到 Grafana 的 Service 名称

    kubectl get svc -n monitoring  # 假设 Grafana 在 monitoring 命名空间
    
  2. 端口转发

    kubectl port-forward svc/grafana-service 3000:3000 -n monitoring
    
  3. 访问本地端口
    浏览器访问 http://localhost:3000


方法四:配置 LoadBalancer(云环境或 MetalLB)

适用场景:生产环境或需要稳定外部 IP。

  1. 修改 Ingress 控制器 Service 类型

    kubectl edit svc ingress-nginx-controller -n ingress-nginx
    

    type: NodePort 改为 type: LoadBalancer

  2. 获取 External IP

    kubectl get svc -n ingress-nginx
    

    等待分配 External IP(云环境自动分配,本地需安装 MetalLB)。

  3. 配置 DNS 或 Hosts
    将域名 grafana.mydomain.com 解析到 External IP。


网络检查要点

  1. 防火墙规则:确保物理机到虚拟机节点的 80/443 或 NodePort 端口开放。
  2. 虚拟机网络模式:如果是 NAT 模式,需在宿主机配置端口转发(如 VirtualBox 的 NAT 网络设置)。
  3. Ingress 配置:确认 Ingress 中 host 字段与域名一致,且 TLS 配置正确(如果有)。

选择最适合你环境的方法即可。如果仍有问题,请提供更多集群网络细节(如 Ingress 类型、节点 IP 是否可达等)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号