pod内无法访问slb的监听

小丫1年前技术文章253

问题背景

在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的网段。


相关文章

Hive合并小文件:hive归档(archive)

Hive合并小文件:hive归档(archive)

一、概述       在HDFS中数据和元数据分别由DataNode和NameNode负责,这些元数据每个对象一般占用大约150个字节。大量的小文件相对于大文件会占用大量的NameNode内存。对Na...

oracle adg切换

1 主库转备库注意:原则上至多只能有一个主库,但是备库可以多个,所以需要先进行主库转备库操作。1.1 查看主库角色切换状态SYS@proe>select name,database_role,s...

flume开启jmx加入grafana

部署flume_exporter需要go环境编译配置go环境首先下载go安装包Linux:https://golang.google.cn/dl/解压、添加环境变量tar -zxvf go*.tar....

lru_cache 缓存

Python 语法: @functools.lru_cache(maxsize=128, typed=False)Least-recently-used 装饰器。Iru 最近最少使用、cache 缓存...

K8S中 CNI 插件的解读

K8S中 CNI 插件的解读

一.CNI是什么首先我们介绍一下什么是 CNI,它的全称是 Container Network Interface,即容器网络的 API 接口。它是 K8s 中标准的一个调用网络实现的接口。Kubel...

MySQL 添加列报错处理

MySQL 添加列报错处理

一、添加列报错(65535)表添加列收到报错,具体 SQL 和报错信息如下:ALTER TABLE table ADD column varchar(256) NULL COMMENT '个人打款授权...

发表评论    

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