V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX  ›  Kubernetes

新版本的 K8s 在使用 nodeport 类型的 Servive 时在 node 上看不到监听的端口了,请问是做过什么改动吗?

  •  
  •   zhoudaiyu · 2022-09-12 11:08:35 +08:00 via iPhone · 3757 次点击
    这是一个创建于 799 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近搞了一两套新版本的 K8s ( 1.24 和 1.25 ),发现即便 Service 使用 nodeport 暴露,在 node 上也看不到 kube-proxy 监听的端口了,但是 nodeport 访问是正常的。我们用的老版本集群( 1.21.0 和 1.13 )都是有端口监听的。请问是高版本做了哪些改动吗?因为我们大量使用 nodeport ,这样可能要改动 service 的监控脚本。
    20 条回复    2022-09-15 09:24:24 +08:00
    risky
        1
    risky  
       2022-09-12 11:19:43 +08:00
    cy ,1.24.3 的集群,确实没有端口了,一度以为是故障,原因未知
    fengye0509
        2
    fengye0509  
       2022-09-12 11:25:25 +08:00
    nodeport 访问是正常的 --这个表现是什么样的?
    lozzow
        3
    lozzow  
       2022-09-12 11:39:07 +08:00 via Android
    用 iptables 做了转发吧
    momocraft
        4
    momocraft  
       2022-09-12 11:42:39 +08:00
    在 node 上也看不到 -- 这个是指怎么看的
    Cyshall
        5
    Cyshall  
       2022-09-12 12:08:18 +08:00 via iPhone
    是用 netstat 看的端口监听这种吗?
    lhx2008
        6
    lhx2008  
       2022-09-12 12:55:47 +08:00
    以前端口监听也只是占住端口不让不让别人用了,实际是走的 iptables ,不过如果是外部访问就比较麻烦了
    xzysaber
        7
    xzysaber  
       2022-09-12 13:08:19 +08:00
    iptables -tnat -L 看看吧。
    zhoudaiyu
        8
    zhoudaiyu  
    OP
       2022-09-12 14:35:35 +08:00 via iPhone
    @risky 我们 24 25 都是这样的,木有端口
    @fengye0509 在集群外访问 nodeport 是没问题的
    @lozzow
    @momocraft 用 ss -antlp 看不到
    @Cyshall 对,我是用的 ss 看的
    @lhx2008 没错,现在就是担心有别人占用端口
    @xzysaber 明天我上班看一下老哥
    Cyshall
        9
    Cyshall  
       2022-09-12 15:05:03 +08:00 via iPhone
    @zhoudaiyu 那这太奇怪了,我用 Linux 这么多年第一听到…
    momocraft
        10
    momocraft  
       2022-09-12 20:22:56 +08:00
    我也遇到到过 k8s 服务 listen 的端口用 netstat 看不到的情况

    可能和 network ns 有关
    dyrex
        11
    dyrex  
       2022-09-12 22:13:19 +08:00 via Android
    是的,高版本的 k8s 确实不再监听端口了,直接走 ipve 规则了
    dyrex
        12
    dyrex  
       2022-09-12 22:13:43 +08:00 via Android
    @dyrex 不好意思打错了,ipvs 规则
    zhoudaiyu
        13
    zhoudaiyu  
    OP
       2022-09-12 22:20:14 +08:00
    @dyrex #11
    @dyrex #12 您好,我翻了很久 k8s 版本更新记录和博客,但是没有找到关于这个变化的代码提交记录。您能找到一些相关资料不?十分感谢!
    zhoudaiyu
        14
    zhoudaiyu  
    OP
       2022-09-12 22:20:54 +08:00
    @momocraft #10 可是问题是 2 个集群都这样,内核啥的也都不一样,不知道为啥,可能是#12 大哥说的确实不监听了吧
    lrh3321
        15
    lrh3321  
       2022-09-13 09:05:15 +08:00
    是 kube-proxy 自动选择用 ipvs 模式了吧。ipvs 模式估计就不用再额外去占住端口了
    julyclyde
        16
    julyclyde  
       2022-09-13 10:17:28 +08:00
    不是很古代 kube-proxy 就用 iptables 了吗?
    我记得好像 2018 年还是 2019 年开始?
    julyclyde
        17
    julyclyde  
       2022-09-13 10:18:15 +08:00   ❤️ 1
    你的监控脚本从设计上就有问题啊
    不是以是否能连通为检查标准,而是以是否有监听为检查标准?
    Nitroethane
        18
    Nitroethane  
       2022-09-14 18:45:05 +08:00   ❤️ 3
    看看这个 PR:kube-proxy: remove port opener ,https://github.com/kubernetes/kubernetes/pull/108496
    主要原因有两个:一个是 kube-proxy 监听端口是发生在 iptables/ipvs 转发规则建立好之前的,在这段时间内访问这个端口的流量并不会转发到后端容器中,很多客户端此时需要重启以重新建立连接。另一个原因就是这种模式会造成很多 dangling TCP 连接。
    zhoudaiyu
        19
    zhoudaiyu  
    OP
       2022-09-14 19:13:13 +08:00
    @julyclyde #17 不是我写的,是别人写的
    julyclyde
        20
    julyclyde  
       2022-09-15 09:24:24 +08:00
    @zhoudaiyu 改改吧
    我觉得这种检查还是“k8s 之前那个时代”的做法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2527 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 16:01 · PVG 00:01 · LAX 08:01 · JFK 11:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.