指定它为网关,它就成为网关了么

近期排查故障,遇到非常有意思问题。两个故障前后相叠,同时指向了一个思考问题:“指定它为网关,它就成为网关了么?”

经过


先遇到关于虚拟机指定宿主机作为网关的问题,后来又接触到k8s集群因calico插件引起的新节点加入问题。最终发现,其实归结起来看起来,都与网关有点关系,我先来捋一捋 :)

初始,新节点加入由calico为网络接口插件的k8s集群网络,使用kubectl get nodes显示节点已成为“Ready”状态。但是,在新节点上部署了App后,App并不能提供服务,不能被正常访问。

首先,想到的就是,看看calico 涉及的几个pod启动状态如何,确实在新节点上,calico-node显示没有进入"Ready"状态!

由于k8s已显示node加入成功,以及可以部署应用,所以,基本上可以断定,k8s层面已经连接完毕,但是,calico层面却出现了问题,而且问题主要在于calico插件!

那么,是什么问题呢?

光靠猜是不行的,需要一点透明信息,需要看看苦主提供了什么信息出来 :)

这也是Linux世界通常坚持的原则。你想观察到什么,基本上就可以观察到什么!

信息是透明的,所以,查错也是容易的!

我想,开源的世界,基本上都应遵从这样的精神吧 ......

通过k8s提供的describelogs命令观察calico-node输出信息,指向calico-node通过BGP不能与伙伴通信,具体输出E文:

“calico/node is not ready: BIRD is not ready: BGP not established with *”

   对比,其它正常集群节点,除了自身的黑洞路由外,还有一条bird路由信息指向peer,而且正好路由的CIDR部分,就是另外一个peer的黑洞路由,见红色字体部分!

   蓝色字体部分的IP反应的是peer的集群节点网络的IP,也就是在提供了网关信息,这里先按下不表 : 0

# 自身的calico黑洞路由,与calico的IP分配相关

blackhole 172.27.200.128/26 proto bird

# 其它peer节点

172.27.200.192/26 via 172.26.200.37 dev enp0s8 proto bird

根据这个发现,在新加入节点上只能发现自身的黑洞路由,而且其它旧节点上也不存在新加入节点的bird路由,所以,calico吐出的日志信息,不能与peer连接是具有事实根据的。

依据输出信息,查阅网上资料,多指向与calico的环境变量设置“IP_AUTODETECTION_METHOD”有点关系,根据

自动探测IP环境变量 设置类型为can-reach,重新操作,新旧节点之间就通畅了!

IP_AUTODETECTION_METHOD=can-reach=[k8s-master-node-dns|k8s-master-node-IP]

总结


   在这里,讲到的素材,虽然是由calico组建的k8s集群网络遭遇的问题,但更让我思考的是,路由上指定网关后,就自动成为网关的问题?包括,前面虚拟机指定宿主机的IP作为网关,宿主机就可以自动具有网关功能么?

   我们知道,没有无缘无故的爱,也没有无缘无故的恨,查验这些 via gatewayip到达的节点,无一例外,在IP所在的网卡,都提供ip_forward功能!

   在linux中,如果ip_forward功能开启,则只要是这台主机上的IP,报文到达网关IP所在网卡后,都可以被转发到目的IP所在的其它网卡上去。

   这其实是最简单的网关功能,因为它只跨了下网卡,并没有跨越主机!

    而且,k8s用calico网络插件,使得集群IP之间可以直接通信,背后的秘密,也就在于,路由发布,以及与简单网关功能的相互结合!

   !完结 !

后期进展2.0


如果在Linux网关上与其他系统软件配合,就可以成为比较完整意义上的网关

  • ip route 路由
  • iptables 过滤器和NAT技术
  • ip tunel隧道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值