k8s ipvs 模式下不支持 localhost:<nodeport>方式访问服务

简介

今天去定位一个nodeport的问题,发现curl 127.0.0.1:32000 访问nodeport的时候会规律的hang住,本来以为是后端服务的问题,但是curl管理ip:nodeport 是正常的。这个就奇怪了,深入研究了下发现 ipvs模式下是不支持这样访问的,如果想使用 localhost: 得使用iptables模式。

下面是一个歪果仁的解释

After a little dig into the kernel, failing to connect localhost: can be explained.

Assume we are visiting http://127.0.0.1:, every packet will first pass through ip_vs_nat_xmit. Then after some check, it runs to https://github.com/torvalds/linux/blob/v4.18/net/netfilter/ipvs/ip_vs_xmit.c#L756. __ip_vs_get_out_rt is used to search for route to remote server, k8s pods in our case. Take a deeper look at __ip_vs_get_out_rt, after validating route cache or finding route via do_output_route4, it comes to crosses_local_route_boundary to judge whether the searched route can pass cross-local-route-boundary check.

Copy the code of crosses_local_route_boundary here and go deeper.

static inline bool crosses_local_route_boundary(int skb_af, struct sk_buff *skb,int rt_mode,bool new_rt_is_local)
{bool rt_mode_allow_local = !!(rt_mode & IP_VS_RT_MODE_LOCAL);bool rt_mode_allow_non_local = !!(rt_mode & IP_VS_RT_MODE_NON_LOCAL);bool rt_mode_allow_redirect = !!(rt_mode & IP_VS_RT_MODE_RDR);bool source_is_loopback;bool old_rt_is_local;#ifdef CONFIG_IP_VS_IPV6/* omit ipv6 */
#endif{source_is_loopback = ipv4_is_loopback(ip_hdr(skb)->saddr);old_rt_is_local = skb_rtable(skb)->rt_flags & RTCF_LOCAL;}if (unlikely(new_rt_is_local)) {if (!rt_mode_allow_local)return true;if (!rt_mode_allow_redirect && !old_rt_is_local)return true;} else {if (!rt_mode_allow_non_local)return true;if (source_is_loopback)return true;}return false;
}

For nat mode of IPVS, rt_mode is assigned as IP_VS_RT_MODE_LOCAL | IP_VS_RT_MODE_NON_LOCAL | IP_VS_RT_MODE_RDR as https://github.com/torvalds/linux/blob/v4.18/net/netfilter/ipvs/ip_vs_xmit.c#L757-L759 indicates and new_rt_is_local is 0 due to https://github.com/torvalds/linux/blob/v4.18/net/netfilter/ipvs/ip_vs_xmit.c#L363.

source_is_loopback will be true because source address ip_hdr(skb)->saddr is 127.0.0.1. The five booleans defined in crosses_local_route_boundary will all be true in this case. So we finally fall into here

if (source_is_loopback)
return true;
and never pass the cross-local-route-boundary check.

解决方案

目前看如果想这样使用1是修改内核,这个可能比较难实现,另一个方案是修改路由表,修改源ip的地址,也是一种曲线救国的方式

sudo ip route change 127.0.0.1 dev lo proto  kernel scope host src <node ip> table local

引用

https://github.com/kubernetes/kubernetes/issues/96879
https://github.com/kubernetes/kubernetes/issues/67730
https://serverfault.com/questions/851221/what-is-the-local-routing-table-used-for

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/688775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python如何实现定时发送qq消息

因为生活中老是忘记各种事情&#xff0c;刚好又在学python&#xff0c;便突发奇想通过python实现提醒任务的功能&#xff08;尽管TIM有定时功能&#xff09;&#xff0c;也可定时给好友、群、讨论组发送qq消息。其工作流程是&#xff1a;访问数据库提取最近计划——>根据数据…

2024阿里云服务器配置怎么选择?c7、g7和r7?

阿里云服务器配置怎么选择合适&#xff1f;CPU内存、公网带宽和ECS实例规格怎么选择合适&#xff1f;阿里云服务器网aliyunfuwuqi.com建议根据实际使用场景选择&#xff0c;例如企业网站后台、自建数据库、企业OA、ERP等办公系统、线下IDC直接映射、高性能计算和大游戏并发&…

打开ps显示找不到dll怎么办?这四种方法可快速修复

在计算机操作系统中&#xff0c;当执行某程序或运行特定软件时&#xff0c;如果系统提示“ps显示找不到dll文件”&#xff0c;这其实是一个较为常见的问题现象。动态链接库&#xff08;DLL&#xff09;文件是Windows操作系统中不可或缺的重要组件&#xff0c;它包含了大量可被多…

IDEA实现序列化时如何自动生成serialVersionUID

实现步骤&#xff1a;1.安装GenerateSerialVersionUID插件 2.点击idea左上角File -> Settings -> Editor -> Inspections -> 搜索 Serialization issues &#xff0c;找到 Serializable class without ‘serialVersionUID’ ->打上勾&#xff0c;再点击Apply-&…

简单介绍数据结构的基本概念

数据结构的基本概念 常用术语 数据 数据&#xff08;Data&#xff09;是客观事物的符号表示&#xff0c;是所有能输入到计算机中并被计算机程序处理的符号的总称。例如&#xff1a;整数、字符串、图形、图像、声音和动画等 数据元素 数据元素&#xff08;Data Element&…

【软考】软件过程

目录 一、说明二、能力成熟度模型&#xff08;CMM&#xff09;三、能力成熟度模型集成(CMMI)3.1 说明3.2 阶段式模型3.2 连续式模型 一、说明 1.遵循一系列可预测的步骤&#xff08;路线图&#xff09;&#xff0c;有助于及时交付高质量的产品 2.软件开发中所遵循的路线图称为软…

每日OJ题_算法_递归③力扣206. 反转链表

目录 力扣206. 反转链表 解析代码 力扣206. 反转链表 206. 反转链表 LCR 024. 反转链表 难度 简单 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,…

顺子日期 蓝桥杯

调用API 思路: 设置Calendar的属性&#xff0c;获取Calendar的毫秒数&#xff0c;转换成指定格式的字符串(yyyyMMdd)&#xff0c;判断字符串中是否包含符合条件的&#xff0c;若有就1&#xff0c; 迭代: 每次循环给Calendar加上一天即可 import java.text.SimpleDateFormat; im…

Python中的Lambda函数

Python中的Lambda函数 Python中的Lambda函数是一种小型匿名函数&#xff0c;它是通过关键字lambda来定义的。Lambda函数可以接受任意数量的参数&#xff0c;但只能有一个表达式。 Lambda函数的语法 Lambda函数的语法非常简单&#xff0c;基本形式如下&#xff1a; lambda a…

windows_tcp简单代码

文章内容&#xff1a; 一个简单的显示windows平台下ctcp的代码 客户端代码已上传服务器代码未验证方便自己日后使用 客户端&#xff1a; #if _MSC_VER >1600 //VS2010版本号是1600#pragma execution_character_set("utf-8") #endif #include "mynetdump.h&…

【机构内部教程】Jmeter性能测试【一】:性能测试全套教程

性能测试的概念 性能测试是指通过特定方式&#xff0c;对被测系统按照一定策略施加压力&#xff0c;获取系统 响应时间、TPS&#xff08;Transaction Per Second&#xff09;、吞吐量、资源利用率等性能指标&#xff0c;以期保证生产系统的性能能够满足用户需求的过程。 性能…

【漏洞复现-通达OA】通达OA getcallist存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

Spring For All 社区作者&#xff1a; 纯洁&#xff0c;原文地址 传送门 上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来&#xff0c;这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多&#xff0c;从16年初到…

vue3 之 数据格式化函数

在很多项目中&#xff0c;都会有数据字典表&#xff0c;前端通过请求后端拿到数据字典表里的数据&#xff0c;一般在页面列表上面状态数据都会是返回的数字&#xff0c;前端需要把数字转换成字典表里对应的数据值&#xff0c;下面写了一个前端写死的数据&#xff0c;stateMap里…

《游戏引擎架构》--学习

内存管理 优化动态内存分配 维持最低限度的堆分配&#xff0c;并且永不在紧凑循环中使用堆分配 容器 迭代器 未完待续。。。

C++八股—怎么把左值变成右值

左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09;是C中一个重要的概念&#xff0c;用于描述表达式的属性。简单来说&#xff1a; 左值&#xff08;lvalue&#xff09;&#xff1a;指向内存位置的表达式&#xff0c;可以出现在赋值运算符的左边或右边。…

Stable Diffusion ComfyUI安装详细教程

上一篇文章介绍了sd-webui的安装教程&#xff0c;但学习一下ComfyUI这种节点流程式的对理解AI绘画有较大帮助&#xff0c;而且后期排查错误会更加方便&#xff0c;熟练后用这种方式做AI绘画可玩性会更多。 文章目录 一、安装包说明二、安装文件介绍三、安装步骤四、汉化五、云主…

Spring 事务原理总结七

今天是二零二四年二月十八&#xff0c;农历正月初九。同时今天也是农历新年假期后的第一个工作日。我的内心既兴奋&#xff0c;又担忧&#xff0c;更急躁。兴奋是因为假期后的第一个工作日工作轻松&#xff1b;担忧是因为经过了这么长时间&#xff0c;我依旧没搞明白Spring事务…

【论文解读】Latency-Aware Collaborative Perception

Latency-Aware Collaborative Perception 摘要引言方法SystemSyncNet 实验 摘要 协作感知最近显示出提高单智能体感知感知能力的巨大潜力。现有的协同感知方法通常考虑理想的通信环境。然而&#xff0c;在实践中&#xff0c;通信系统不可避免地存在延迟问题&#xff0c;导致安…

人工智能技术应用笔记(一):SORA已来,AI将开启新纪元

目录 01. OpenAI王炸级产品视频生成模型Sora发布 02. Sora发布的潜在影响 ▎C端 / 对于普通人 ▎B端 / 对于商业公司 03. 该如何看待Sora&#xff1f; 1.拥抱变化&#xff0c;让自己成为身边最懂AI的人 2.想象自己是一家一人公司的创始人 3.保持好奇心&…