美文网首页docker
k8s node间通信问题排除

k8s node间通信问题排除

作者: 迷茫_小青年 | 来源:发表于2019-05-28 16:22 被阅读0次

昨天iaas把我的k8s测试迁移了,需要重新恢复一下服务。在恢复的时候发现一个问题。

104节点上的pod,不能上外网。另外一个105节点上的pod正常。

在104节点上启动buybox测试,ping 105节点上的pod 。发现不通。

coredns pod在105节点上。

但是在105节点的pod上,ping104节点上的pod都是没有问题。给我造成一个假象就是以为是104节点的问题,跟105没关系 。

所以浪费很多时间在排除104节点问题。一直没有啥突破性进展和线索

最后在105节点上的pod上做 traceroute 104节点pod的ip

[root@centos-6f64dc8859-f925z /]# tracepath -n 10.254.56.24
 1?: [LOCALHOST]                                         pmtu 1450
 1:  10.254.34.1                                           0.159ms
 1:  10.254.34.1                                           0.046ms
 2:  10.254.56.0                                           0.594ms
 3:  10.254.56.24                                          0.443ms reached
     Resume: pmtu 1450 hops 3 back 3

整个正常的traceroute 通过。 并且能够看出 数据包从pod发出以后,
第一个经过的是docker0接口地址10.254.34.1 。
第二个经过是路由到104节点上的flannel接口地址10.254.56.0 。
第三个就已经到达104节点上pod 地址10.254.56.24。

反过来我们看在104节点上的pod 做traceroute到 105 pod的ip

[root@centos2-758779f9db-nlltq /]# tracepath -n 10.254.34.3
 1?: [LOCALHOST]                                         pmtu 1450
 1:  10.254.56.1                                           0.238ms
 1:  10.254.56.1                                           0.073ms
 2:  10.254.1.0                                            0.734ms
 3:  no reply
 4:  no reply

第一个经过104节点上的docker0地址10.254.56.1 这个没问题
第二个经过是路由到105节点上flannel接口地址。 但是10.254.1.0 这个是神马鬼! 这是那里来的?

[root@t4 ~]# etcdctl --endpoints http://t4.dc.com:2379 ls /k8s/network/subnets/
/k8s/network/subnets/10.254.65.0-24
/k8s/network/subnets/10.254.56.0-24
/k8s/network/subnets/10.254.34.0-24

etcd中也没有这个地址段。

通过ip addr show 看flannel.1 接口上竟然有三个地址 。

24: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
    link/ether d2:8c:fd:0c:63:0c brd ff:ff:ff:ff:ff:ff
    inet 10.254.1.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet 10.254.59.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet 10.254.34.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet6 fe80::d08c:fdff:fe0c:630c/64 scope link
       valid_lft forever preferred_lft forever

先吧不正确的地址段干掉。

ip addr del 10.254.1.0/32 dev flannel.1
ip addr del 10.254.59.0/32 dev flannel.1

删除以后再次traceroute

[root@centos2-758779f9db-nlltq /]# tracepath -n 10.254.34.3
 1?: [LOCALHOST]                                         pmtu 1450
 1:  10.254.56.1                                           0.158ms
 1:  10.254.56.1                                           0.045ms
 2:  10.254.34.0                                           0.964ms
 3:  no reply
 4:  no reply
 5:  no reply
 6:  no reply

已经可以正确到达105节点上的flannel 接口地址了。然后还是没有到pod里。
这个时候就非常直接的怀疑内核路由转发参数没有生效。

net.ipv4.ip_forward = 1

重启一下服务器,然后再次启动服务一切正常了。

相关文章

  • k8s node间通信问题排除

    昨天iaas把我的k8s测试迁移了,需要重新恢复一下服务。在恢复的时候发现一个问题。 104节点上的pod,不能上...

  • k8s 网络插件

    k8s 网络插件 跨node 为了实现不同node上的Pod通信,必须实现以下两点: 对k8s集群中所有node上...

  • node进程间通信

    作为一名合格的程序猿/媛,对于进程、线程还是有必要了解一点的,本文将从下面几个方向进行梳理,尽量做到知其然并知其所...

  • 云主机上的k8s集群通信故障mtu

    故障解决:用于k8s间通信的calico还会再生成一个虚拟网卡用于容器间通信,calico配置mtu配置参数如下:...

  • ping 只有 arp 没有icmp

    k8s node 双网卡, eth1用于为pod 提供ipvlan子接口 问题: node ping pod 不通...

  • ARM机器上运行calico报ipset异常

    问题排查 在K8S中运行calico-node异常: [https://github.com/1178615156...

  • K8S集群网络浅析

    首发于:ciii's blog 概述 K8S官方文档集群网络描述了实现K8S网络的四个要点: 高度耦合的容器间通信...

  • 部署k8s环境flannel显示无法访问api server问题

    问题现象 部署完k8s后,node节点出现重启flannel就会出现如下报错 ,导致此node无法访问集群网络 原...

  • K8S 网络详解 4 开源网络组件

    K8S 底层网络所需要解决的两个问题 协助 k8s , 给每个 NODE上的 docker 容器都分配互相不冲突的...

  • <Vue2.x>总结:注意点

    一、组件间通信 1、多层组件间通信的命名问题 1.1、问题 在使用多层组件间通信的时候,经过反复测试,发现创建的组...

网友评论

    本文标题:k8s node间通信问题排除

    本文链接:https://www.haomeiwen.com/subject/ulpdtctx.html