pod内无法访问slb的监听

小丫2年前技术文章705

问题背景

在A账号下的k8s集群中有个nginx 应用,需要去访问B账号下内网slb代理的一个服务。B账号下的slb有多条监听,测试发现只有个别监听可以telnet通,其余监听telnet均不通。可能是哪里的问题呢?

排查步骤

1、最先想到的是排查B账号下的slb监听是否有开启访问控制?

核实,确认所有的监听均没有开启访问控制。

2、A账号k8s集群中pod或者svc的ip刚好和B账号的slb的ip冲突了?

登陆到A账号的k8集群中,核查集群网络情况,如下:

image.png

从输出结果确认,A账号这边不存在和要访问的ip有冲突的情况。

4、核查A账号和B账号网络打通情况

两个账号通过VPN ipsec打通,路由表信息如下:

image.png

由于是直接访问的slb不通,同时发现,slb后端ecs的网段在vpn配置的路由表的段中。所以,直接绕过slb,测试到后端ecs的网路连通性情况。

针对这两个监听后端的ecs分别做ping测试,发现确实极个别的ecs可以ping通,很多ecs都无法ping通。

进一步,分别登陆到ping正常和ping异常的服务器,尝试去抓包分析。

这个时候,在ping异常的服务器上,查看ip信息的时候,发现,服务器上部署了docker服务,而ping正常的服务器上是没有部署docker服务的,同时ping异常的服务器上规划的网段刚好和A账号下的k8s集群的pod网段有冲突,这时候就判断是由于这里的问题导致的。

为了验证这一结论,在A账号的nginx服务的pod内发起ping动作,同时在ping异常的服务器上抓包,抓包结果如下:

image.png

可以看到,只有入包,没有回包(因为,docker启动的容器,并没有占用172.18.0.111)

和之前的判断一致。所以要想解决这一问题,简单的方法就是调整下docker的网段。


相关文章

Presto开发语句简介

Presto开发语句简介

根据presto中的结构配置,catalog表示连接,主要看presto中catalog文件夹下的配置,一般包含hive、mysql等,其中可以根据业务的不同设置多个配置文件。schema表示连接中的...

kafka单条消息过大导致线上OOM

1 线上问题kafka生产者罢工,停止生产,生产者内存急剧升高,导致程序几次重启。查看日志,发现Produce程序爆异常kafka.common.MessageSizeTooLargeExceptio...

Hadoop3.2.4纠删码介绍(一)

Hadoop3.2.4纠删码介绍(一)

1、介绍纠删码是Hadoop3新加入的功能,之前的HDFS都是采用副本方式容错,默认情况下,一个文件有3个副本,可以容忍任意2个副本(DataNode)不可用,这样提高了数据的可用性,但也带来了2倍的...

Elasticsearch8.5及Kibana8.5安装部署

Elasticsearch8.5及Kibana8.5安装部署

一、环境准备1、Centos7系统2、切换英文系统[root@master02 ~]# tail -n2 /etc/profile export LANG="en_US.UTF-8"3、下载、安...

Nginx限流

Nginx限流

一、背景         限流的目的是通过对并发访问/请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页),多应用于高并发场景和安全防护场景。通过限流有效地减缓暴力密码破解攻击,也可...

kafka开启Kerberos

1、修改server.properties#增加如下配置 listeners=SASL_PLAINTEXT://IP:port security.inter.broker.protocol=SAS...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。