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

Higress路由配置避坑指南:从本地K8s到NodePort访问,一次讲清网络连通性问题

Higress路由配置避坑指南从本地K8s到NodePort访问全解析在本地Kubernetes环境中部署Higress时很多开发者都会遇到一个共同的问题明明按照教程一步步配置了路由但通过NodePort访问时却总是遇到404或连接被拒绝的错误。这就像是在迷宫中寻找出口每个转弯都看似正确却始终无法到达目的地。本文将带你深入理解本地K8s环境中Higress的网络通信机制并提供一套完整的排查方法论让你彻底掌握这类问题的解决之道。1. 为什么本地K8s环境需要NodePort在标准的云环境Kubernetes集群中我们通常会使用LoadBalancer类型的Service来暴露Higress Gateway让外部流量能够访问。但本地开发环境如Minikube、Kind或Docker Desktop中的K8s往往不支持LoadBalancer这时NodePort就成为了最实用的选择。NodePort的工作原理是在每个集群节点上开放一个静态端口范围默认为30000-32767所有发送到这个端口的流量都会被转发到对应的Service。与LoadBalancer不同它不需要云提供商的支持非常适合本地开发和测试。NodePort与LoadBalancer的关键区别特性NodePortLoadBalancer适用环境任何K8s集群需要云提供商支持外部IP使用节点IP分配独立公网IP端口范围30000-32767任意端口成本免费通常按使用量计费典型用途开发/测试环境生产环境在本地环境中当你执行kubectl get svc -n higress-system查看Higress Gateway的Service时可能会看到类似这样的输出NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE higress-gateway NodePort 10.96.123.45 none 80:31000/TCP,443:31001/TCP 2d这里的31000和31001就是NodePort映射的端口号你需要通过这些端口来访问Higress Gateway。2. 获取并验证Higress Gateway和Console的NodePort正确获取NodePort是第一步但很多开发者在这里就会遇到问题。让我们来看一个完整的操作流程2.1 获取Higress Gateway的NodePort# 获取higress-gateway的NodePort kubectl get svc -n higress-system higress-gateway -o jsonpath{.spec.ports[?(.namehttp)].nodePort}这个命令会直接输出HTTP服务对应的NodePort如31000。同样你可以获取HTTPS服务的端口kubectl get svc -n higress-system higress-gateway -o jsonpath{.spec.ports[?(.namehttps)].nodePort}2.2 获取Higress Console的NodePortHigress Console是管理界面的入口也需要通过NodePort访问kubectl get svc -n higress-system higress-console -o jsonpath{.spec.ports[0].nodePort}2.3 验证端口可用性获取到端口后应该立即验证其可用性# 验证higress-gateway curl -v http://节点IP:gateway-node-port/ # 验证higress-console curl -v http://节点IP:console-node-port/常见问题及解决方案连接被拒绝检查节点IP是否正确在Minikube中通常是192.168.49.2确认kube-proxy是否正常运行kubectl get pods -n kube-system | grep kube-proxy检查本地防火墙是否阻止了NodePort范围的流量404 Not Found这是正常现象表示Higress Gateway已经响应但尚未配置任何路由如果配置路由后仍返回404则需要检查路由配置3. 路由配置后的连通性排查当你按照文档配置了路由但通过NodePort访问时仍然遇到问题可以按照以下步骤系统排查3.1 检查Service Selector匹配首先确认你的后端Service是否正确选择了Pod# 获取Service的selector kubectl get svc your-service-name -o jsonpath{.spec.selector} # 检查是否有Pod匹配这些标签 kubectl get pods --selectorkeyvalue例如如果你的Service有如下selectorselector: app: demo-nginx那么应该至少有一个Pod带有app: demo-nginx的标签。3.2 检查Pod状态和日志确认Pod正常运行并能处理请求# 检查Pod状态 kubectl get pods -l appdemo-nginx # 查看Pod日志 kubectl logs -l appdemo-nginx --tail50理想情况下Pod状态应该是Running并且日志中没有错误信息。你可以手动测试Pod是否正常工作# 进入Pod内部执行curl测试 kubectl exec -it pod-name -- curl http://localhost:8080/3.3 验证Ingress配置检查Ingress资源是否正确配置# 获取Ingress详情 kubectl get ingress ingress-name -o yaml重点关注以下几个字段ingressClassName应该设置为higressrules.host和rules.http.paths是否符合预期backend.service.name和backend.service.port.number是否正确指向你的Service3.4 检查Higress Controller日志Higress Controller负责将Ingress配置转换为实际的路由规则查看其日志可以发现配置问题kubectl logs -n higress-system -l apphigress-controller --tail100常见的错误包括无法连接到API ServerIngress资源配置格式错误与后端Service的连接问题3.5 网络策略和防火墙检查在本地环境中特别是使用Docker Desktop或某些Linux发行版时主机防火墙可能会阻止NodePort流量# 在Linux上检查防火墙规则 sudo iptables -L -n | grep node-port # 在MacOS上检查pf防火墙 sudo pfctl -sr | grep block如果需要临时开放端口仅用于测试# Linux sudo iptables -A INPUT -p tcp --dport node-port -j ACCEPT # MacOS (Docker Desktop) sudo pfctl -e4. 完整的诊断流程图为了更直观地理解整个排查过程下面是一个典型的NodePort访问问题诊断流程开始 │ ├─ 能否访问NodePort? │ ├─ 否 → 检查节点IP、NodePort是否正确验证kube-proxy和防火墙 │ └─ 是 → 返回什么状态码? │ ├─ 404 → 检查Ingress配置、Higress Controller日志 │ ├─ 502/503 → 检查后端Service和Pod状态 │ └─ 200 → 恭喜问题解决! │ ├─ 检查后端Service: │ ├─ Selector是否匹配Pod标签? │ ├─ Port配置是否正确? │ └─ Endpoints是否正常? (kubectl get endpoints service-name) │ ├─ 检查Pod: │ ├─ 是否Running状态? │ ├─ 是否有重启? (kubectl describe pod pod-name) │ └─ 日志中有无错误? │ └─ 检查Ingress: ├─ ingressClassName是否为higress? ├─ 路由规则是否匹配你的请求? └─ 后端Service引用是否正确?5. 实战案例解决404 Not Found问题让我们通过一个实际案例来应用上述知识。假设你已经在本地K8s部署了Higress并创建了如下资源部署了一个简单的Nginx应用创建了对应的Service通过Ingress CRD配置了路由但访问http://节点IP:31000/时仍然返回404。按照我们的排查流程步骤1验证NodePort基本连通性curl -v http://192.168.49.2:31000/如果连接被拒绝检查kube-proxy和防火墙。如果能返回404说明Higress Gateway已经接收到了请求。步骤2检查Ingress配置kubectl get ingress demo-nginx-ingress -o yaml确认配置中是否有ingressClassName: higress并且路由规则符合预期。步骤3检查Higress Controller日志kubectl logs -n higress-system -l apphigress-controller --tail100发现日志中有错误failed to get service higress-system/demo-nginx-svc。原来是在Ingress中错误地指定了命名空间。解决方案修改Ingress配置确保backend.service正确引用ServiceapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-nginx-ingress spec: ingressClassName: higress rules: - host: http: paths: - pathType: Prefix path: / backend: service: name: demo-nginx-svc # 确保这是正确的Service名称 port: number: 8080 # 确保这是Service暴露的端口重新应用配置后访问NodePort成功返回了Nginx的响应。

相关文章:

Higress路由配置避坑指南:从本地K8s到NodePort访问,一次讲清网络连通性问题

Higress路由配置避坑指南:从本地K8s到NodePort访问全解析 在本地Kubernetes环境中部署Higress时,很多开发者都会遇到一个共同的问题:明明按照教程一步步配置了路由,但通过NodePort访问时却总是遇到"404"或"连接被拒…...

如何用WaveTools解锁鸣潮120FPS:四步突破帧率限制的完整指南

如何用WaveTools解锁鸣潮120FPS:四步突破帧率限制的完整指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否在鸣潮1.2版本后发现游戏帧率被锁定在60FPS?明明显卡性能充足&am…...

将Hermes Agent智能体框架无缝接入Taotoken多模型服务

将Hermes Agent智能体框架无缝接入Taotoken多模型服务 1. 准备工作 在开始配置前,请确保已安装Hermes Agent并拥有Taotoken账户。访问Taotoken控制台创建API Key,并在模型广场查看支持的模型ID。Hermes Agent需要Node.js环境(建议v16&#…...

自动化RPG游戏资源解密方案:浏览器端一站式解密与重新加密工具

自动化RPG游戏资源解密方案:浏览器端一站式解密与重新加密工具 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https:/…...

WaveTools完整指南:解锁《鸣潮》120FPS帧率限制与深度优化

WaveTools完整指南:解锁《鸣潮》120FPS帧率限制与深度优化 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否曾为《鸣潮》的60FPS帧率限制而感到困扰?明明拥有强大的硬件配置&a…...

低轨卫星在轨功耗突增故障复盘(含真实遥测曲线+源码片段):C语言中这11行看似无害的代码,让整星续航缩短23天

更多请点击: https://intelliparadigm.com 第一章:低轨卫星在轨功耗突增故障全景复盘 2023年Q4,某型LEO遥感星座中三颗在轨运行超18个月的卫星(编号SAT-7B、SAT-12D、SAT-19F)连续触发星载电源管理单元(P…...

微信防撤回终极指南:WeChatIntercept macOS插件完整使用教程

微信防撤回终极指南:WeChatIntercept macOS插件完整使用教程 【免费下载链接】WeChatIntercept 微信防撤回插件,一键安装,仅MAC可用,支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 还在为微…...

ok-wuthering-waves:揭秘鸣潮自动化助手的惊人效率提升方案

ok-wuthering-waves:揭秘鸣潮自动化助手的惊人效率提升方案 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦…...

终极DOL游戏汉化美化整合包:一站式游戏体验优化指南

终极DOL游戏汉化美化整合包:一站式游戏体验优化指南 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 你是否曾经因为游戏界面全是英文而感到困扰?是否希望游戏角色拥有更精美的…...

终极指南:三分钟掌握WaveTools,让你的鸣潮游戏体验飙升120FPS

终极指南:三分钟掌握WaveTools,让你的鸣潮游戏体验飙升120FPS 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》的60FPS帧率限制而烦恼吗?想要让高端显卡火…...

从ChatGLM到Stable Diffusion:一个Conda环境如何通吃你的AI项目?

从ChatGLM到Stable Diffusion:一个Conda环境如何通吃你的AI项目? 在AI项目开发中,最令人头疼的莫过于环境配置问题。想象一下这样的场景:你正在调试一个基于ChatGLM-6B的大语言模型项目,突然接到需求要开发Stable Diff…...

WechatRealFriends:终极微信好友关系智能检测方案

WechatRealFriends:终极微信好友关系智能检测方案 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 微…...

不止是GWAS:用GEMMA的MLM模型估算遗传力,为你的育种研究把把脉

超越GWAS显著性:用GEMMA的MLM模型精准评估遗传力实战指南 在动植物遗传育种研究中,GWAS分析常被简化为"寻找显著SNP"的工具,但真正有经验的研究者会关注一个更本质的指标——遗传力估计值。就像一位老中医通过把脉能判断患者体质虚…...

3种高效修复Windows应用依赖问题的终极方案

3种高效修复Windows应用依赖问题的终极方案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 当您满怀期待地双击TranslucentTB图标&#x…...

VSCode里ESLint老报Delete `␍`错?别慌,一个.prettierrc文件就能搞定

VSCode中ESLint报Delete ␍错误的终极解决方案 刚接触前端开发的新手,在VSCode中配置ESLint和Prettier时,经常会遇到一个令人困惑的报错:Delete ␍。这个看似神秘的错误提示,实际上是由于不同操作系统间换行符的差异导致的。本文将…...

Vue.js 表单

Vue.js 表单 Vue 使用 v-model 指令在表单控件上实现双向数据绑定&#xff0c;自动处理输入值与数据的同步。一、v-model 基本原理 <!-- v-model 是以下写法的语法糖 --> <input v-model"msg" /><!-- 等价于 --> <input :value"msg" …...

动态显示扫盲:51单片机如何用1个I/O口驱动8位数码管?Proteus仿真揭秘

51单片机单I/O口驱动8位数码管的动态扫描技术解析 第一次看到朋友用51单片机仅用3个引脚就驱动了6位数码管时&#xff0c;我盯着电路板反复检查了三遍——这完全违背了我对数码管控制的基本认知。后来才明白&#xff0c;动态显示技术就像魔术师的障眼法&#xff0c;利用人眼的视…...

从面试失败到拿下Offer:我的C++客户端开发技能树复盘(QT、设计模式、动态库)

从面试失败到技术突围&#xff1a;C客户端开发者的核心能力重构 去年冬天&#xff0c;我经历了职业生涯中最密集的面试周期——两周内六家公司的技术拷问&#xff0c;最终只收获一个普通offer。最让我受挫的不是被拒绝&#xff0c;而是在泊松软件二面时&#xff0c;面对动态库加…...

Source Han Serif CN:专业级开源中文字体完全配置指南

Source Han Serif CN&#xff1a;专业级开源中文字体完全配置指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在中文排版设计领域&#xff0c;寻找一款既专业又免费的开源字体解决…...

Spring Boot配置文件加载顺序全解析:从jar包到resources,你的配置到底被谁覆盖了?

Spring Boot配置加载深度解密&#xff1a;优先级陷阱与高效调试指南 当你在application-dev.yml中将端口改为9090&#xff0c;启动后却依然看到8080时&#xff0c;这种配置失效的困惑几乎每个Spring Boot开发者都遇到过。上周我们团队就因此浪费了三小时排查一个"简单&qu…...

别再乱用ifstream了!C++文件读取的5个常见坑点与正确姿势(含file.good/seekg/tellg/read详解)

别再乱用ifstream了&#xff01;C文件读取的5个常见坑点与正确姿势 在C开发中&#xff0c;文件操作看似简单却暗藏玄机。很多开发者在使用ifstream时&#xff0c;往往因为对底层机制理解不够深入&#xff0c;导致程序出现各种难以排查的问题。本文将深入剖析五个最常见的ifstr…...

3天投递100+岗位?Boss直聘批量投简历工具让你求职效率翻倍!

3天投递100岗位&#xff1f;Boss直聘批量投简历工具让你求职效率翻倍&#xff01; 【免费下载链接】boss_batch_push Boss直聘批量投简历&#xff0c;批量发送自定义招呼语 项目地址: https://gitcode.com/gh_mirrors/bo/boss_batch_push 在竞争激烈的求职市场中&#x…...

Keyviz终极指南:5分钟掌握开源键鼠可视化工具,大幅提升操作透明度

Keyviz终极指南&#xff1a;5分钟掌握开源键鼠可视化工具&#xff0c;大幅提升操作透明度 【免费下载链接】keyviz Keyviz is a free and open-source tool to visualize your keystrokes ⌨️ and &#x1f5b1;️ mouse actions in real-time. 项目地址: https://gitcode.c…...

告别卡顿!CocosCreator 3.4.0 资源预加载与进度条实战(附完整TypeScript代码)

CocosCreator 3.4.0 资源预加载与进度条实战指南 1. 为什么需要资源预加载&#xff1f; 在游戏开发中&#xff0c;资源加载是影响用户体验的关键因素之一。想象一下&#xff0c;玩家打开游戏时遇到长时间的白屏或卡顿&#xff0c;这种糟糕的第一印象很可能导致用户流失。CocosC…...

如何快速掌握华为光猫配置解密工具:新手必看的完整教程

如何快速掌握华为光猫配置解密工具&#xff1a;新手必看的完整教程 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/hu/HuaWei-Optical-Network-Terminal-Decoder 华为光猫配置解密工具是一款专为解密华为光猫配置…...

别再只会用默认窗了!CT医生手把手教你调出清晰图像的窗宽窗位实战技巧

别再只会用默认窗了&#xff01;CT医生手把手教你调出清晰图像的窗宽窗位实战技巧 在医学影像诊断中&#xff0c;CT图像的解读质量直接影响着诊断的准确性。很多初学者常常依赖设备的默认窗设置&#xff0c;却不知道这可能导致细微病灶的漏诊。记得我刚进入放射科时&#xff0c…...

Audiveris乐谱识别教程:5步将纸质乐谱转换为数字宝藏

Audiveris乐谱识别教程&#xff1a;5步将纸质乐谱转换为数字宝藏 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris 还在为整理成堆的纸质乐谱而烦恼吗&#xff1f;想要快速将古典乐谱转化…...

VLA-4D模型:机器人时空一致性操作的技术突破

1. VLA-4D&#xff1a;机器人操作中的时空一致性突破在机器人操作领域&#xff0c;视觉-语言-动作&#xff08;VLA&#xff09;模型正逐渐成为实现通用机器人任务的重要技术路径。这类模型通过将视觉感知、语言理解和动作规划整合到一个统一的框架中&#xff0c;使机器人能够根…...

从一次真实的授权测试复盘:Fscan在内网横向移动中的实战技巧与参数调优

从一次真实的授权测试复盘&#xff1a;Fscan在内网横向移动中的实战技巧与参数调优 去年参与某金融企业的红队演练时&#xff0c;遇到一个典型的多层网络隔离环境。当我们通过钓鱼邮件拿下外围Web服务器后&#xff0c;发现内网存在大量ACL限制&#xff0c;传统扫描工具要么速度…...

通过Taotoken CLI工具一键完成开发环境的多工具统一配置

通过Taotoken CLI工具一键完成开发环境的多工具统一配置 1. Taotoken CLI工具概述 Taotoken CLI工具&#xff08;taotoken/taotoken&#xff09;是为开发者提供的命令行工具&#xff0c;旨在简化多工具统一接入Taotoken平台的过程。通过该工具&#xff0c;开发者可以快速配置…...