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

Higress安装避坑指南:从Helm仓库添加到Grafana存储配置,新手常踩的5个坑

Higress安装避坑指南:从Helm仓库添加到Grafana存储配置,新手常踩的5个坑

第一次接触Higress时,那种既兴奋又忐忑的心情我至今记忆犹新。作为基于Kubernetes的云原生网关,Higress确实能大幅简化微服务架构下的流量管理,但安装过程却可能成为新手的第一道门槛。特别是在国内网络环境下,从Helm仓库添加到监控组件配置,几乎每一步都可能遇到意想不到的问题。本文将聚焦五个最常见的"坑",帮你提前规避那些让我熬过通宵的陷阱。

1. Helm仓库添加失败:不只是网络问题

"helm repo add higress.io https://higress.io/helm-charts"这条看似简单的命令,实际执行时可能会返回各种错误:

Error: looks like "https://higress.io/helm-charts" is not a valid chart repository or cannot be reached: Get "https://higress.io/helm-charts/index.yaml": context deadline exceeded

根本原因分析

  • 证书问题:某些企业网络会拦截或重写HTTPS流量
  • DNS污染:部分地区域名解析可能不稳定
  • 防火墙限制:公司网络可能屏蔽非标准端口

解决方案

  1. 先验证基础网络连通性:

    curl -v https://higress.io/helm-charts/index.yaml ping higress.io
  2. 如果使用代理环境,配置Helm使用代理:

    export HTTPS_PROXY=http://<proxy_ip>:<port>
  3. 尝试更换DNS服务器:

    # 使用阿里云DNS echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf

提示:如果长期需要访问,可以考虑将chart仓库镜像到本地或内网仓库,避免每次依赖外网。

2. 镜像拉取超时:国内用户的专属难题

即使Helm安装命令执行成功,在pod创建阶段仍可能遇到镜像拉取失败:

Failed to pull image "higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/higress-controller:v1.0.0": rpc error: code = Unknown desc = context deadline exceeded

典型现象

  • Pod状态长时间处于ImagePullBackOff
  • 日志显示net/http: request canceled while waiting for connection

加速方案对比

方法操作复杂度稳定性适用场景
使用阿里云镜像仓库所有国内用户
配置docker代理企业有代理服务器
预先pull到本地离线环境部署

推荐做法

# 修改containerd配置(如果是docker则修改/etc/docker/daemon.json) sudo mkdir -p /etc/containerd/ sudo tee /etc/containerd/config.toml <<EOF [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"] EOF # 重启containerd sudo systemctl restart containerd

3. NodePort访问不通:不只是端口问题

按照文档安装后,通过NodePort访问控制台时却遇到连接超时:

kubectl -n higress-system get svc # 输出显示39474端口已分配,但浏览器无法访问

排查路线图

  1. 检查NodePort是否真的监听:

    ss -tulnp | grep 39474
  2. 验证节点防火墙规则:

    sudo iptables -L -n | grep 39474
  3. 如果是云环境,检查安全组设置:

    • 阿里云/腾讯云控制台需手动放行NodePort范围(30000-32767)

常见误区

  • 误以为NodePort会自动在所有节点开放(实际只在运行pod的节点)
  • 忽略本地开发环境(如Minikube)需要特殊处理:
    minikube service higress-console -n higress-system

4. Pod状态非Ready:资源限制的隐形杀手

安装完成后,higress-controller pod反复重启:

kubectl -n higress-system get pods NAME READY STATUS RESTARTS AGE higress-controller-5d6b8d7f6c-2jq4x 0/1 Running 5 (10s ago) 2m

关键检查点

  • 查看pod描述获取详细事件:

    kubectl -n higress-system describe pod higress-controller-5d6b8d7f6c-2jq4x
  • 常见原因:

    • 内存不足(OOMKilled)
    • 节点CPU资源不足
    • 未配置正确的RBAC权限

资源建议配置

组件CPU请求内存请求CPU限制内存限制
higress-controller500m512Mi2000m2048Mi
higress-gateway1000m1024Mi4000m4096Mi
# 安装时可通过--set调整资源 helm install higress -n higress-system higress.io/higress \ --set controller.resources.requests.cpu=500m \ --set controller.resources.requests.memory=512Mi

5. Grafana存储配置:最容易被忽视的细节

启用监控套件后,Grafana pod却无法启动:

kubectl -n higress-system logs higress-grafana-7d5f8c6c4d-2zqkx mkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied

问题本质

  • 未正确配置storageClassName
  • PVC处于Pending状态
  • 使用了不兼容的访问模式(如ReadWriteOnce在多节点环境)

存储方案选择

存储类型配置示例适用场景
NFSmanaged-nfs-storage多节点读写
HostPath无需storageClass单节点测试
云厂商块存储alicloud-disk生产环境

正确配置示范

helm install higress -n higress-system higress.io/higress \ --set higress-console.o11y.enabled=true \ --set higress-console.o11y.grafana.pvc.storageClassName=alicloud-disk \ --set higress-console.o11y.prometheus.pvc.storageClassName=alicloud-disk \ --set higress-console.o11y.grafana.pvc.accessModes=ReadWriteMany

安装完成后,务必验证PVC状态:

kubectl -n higress-system get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES grafana-storage Bound pvc-5e3b1f1c-1b2c-11ec-8a3a-00163e062a1d 10Gi RWX

那次在客户现场部署时,就因为没注意accessModes设置,导致Grafana在不同节点间调度时频繁报错。后来改用ReadWriteMany的NFS存储才彻底解决问题,这个教训让我至今检查存储配置时都会特别仔细。

http://www.jsqmd.com/news/708255/

相关文章:

  • 手里的瑞祥商联卡用不上?这样处理省心又不浪费 - 团团收购物卡回收
  • 用Python+Playwright打造你的BOSS直聘求职外挂:从接口分析到自动回复的保姆级教程
  • 为什么你的Windows桌面需要一个免费的智能分区管家?
  • Avue-Crud表格错位、布局混乱?一份完整的排查与修复指南(附keep-alive解决方案)
  • real-anime-z惊艳生成:写实皮肤质感+动画线条的跨风格融合效果
  • 从BAM文件到发表级图片:rmats2sashimiplot实战避坑指南(含sort、建索引与坐标参数详解)
  • 从透明物体到日常场景:一份给机器人开发者的RGBD深度补全算法选型与避坑实战指南
  • 用按键精灵2014.06给本地Node.js服务发POST请求,5分钟搞定字符串相似度计算
  • 抖音下载工具架构深度解析:从单视频到批量下载的技术实现
  • 游戏人工智能寻路算法与群体行为
  • 单片机c语言基础知识,c语言必背100代码有哪些?
  • 如何用WeChatMsg掌握你的微信数据主权:从聊天记录到数字记忆的完整指南
  • 定期更新文娱活动,丰富晚年精神生活—智慧养老系统活动管理模块
  • 从DIY爱好者视角看ZEMAX:如何用软件‘打磨’你的第一块200mm F/5牛顿望远镜主镜
  • PyTorch模型编译与梯度累积加速Transformer训练
  • NI硬件平台在结构健康监测中的技术选型与应用
  • 保姆级图解:用N阱工艺DIY一个CMOS反相器(含工艺步骤对照表与3D动画资源)
  • 基于Rust的ChatGPT反向代理Ninja:部署、原理与实战指南
  • 告别MKL的繁琐:在Ubuntu 22.04上5分钟搞定Armadillo线性代数库(附CMake配置)
  • 别再只用map了!Java Stream里mapToInt()的3个实战场景与性能对比
  • 终极iOS激活锁绕过指南:使用applera1n工具解锁A9-A11设备
  • Cortex-M55系统寄存器与缓存维护实战解析
  • 万字长文讲解erp:正确实施erp的规范流程,以及实施erp的过程
  • 若依SpringCloud项目实战:手把手教你给微服务加个国际化子模块(含Redis缓存配置)
  • 基于NLP与聚类算法的智能文档自动分类整理实战指南
  • Cortex-R52中断系统架构与FPGA优化实践
  • YOLO系列算法改进 | C2PSA改进篇 | 融合FDFAM频率域特征聚合模块 | 频域解耦与跨模态互补,破解夜间及多模态特征失衡难题 | TMM 2026
  • 护发发膜品牌排行榜:卡诗、潘婷谁是赢家? - 博客万
  • RK3588上跑ResNet18到底要多少内存?手把手教你用RKNN-Toolkit进行模型内存评估与优化
  • Keil MDK与NXP Cortex-M4/M0开发环境搭建及调试技巧