K8s Pod无法访问SLB地址

小丫2年前技术文章719

一、问题现象

客户反馈172.16.11.220 telnet 47.99.87.129 80 不通,另一台172.16.11.219可以通。

二、排查思路

172.16.11.220,172.16.11.219 分别是k8s集群中的两个节点,使用负载均衡 x.x.x.x部署入口网关,当应用Pod访问入口网关暴露的SLB地址时,出现以下问题:

  • 部分节点上的Pod能访问入口网关暴露的SLB地址。

  • 部分节点上的Pod不能访问入口网关暴露的SLB地址。

排除了网络以及安全规则等原因。怀疑是k8s集群中的配置导致。

三、结论

如果Kubernetes集群的服务配置了externalTrafficPolicy: Local,则只有部署了服务的后端Pod才能访问SLB地址。因为SLB地址是集群外使用,如果集群节点和Pod不能直接访问SLB地址,请求不会路由到负载均衡,而是被当作服务的扩展IP地址,被kube-proxy的iptables或IPVS转发。

如果集群节点或者Pod所在的节点上没有相应的后端服务Pod,就会发生网络不通的问题。而如果有相应的后端服务Pod,则可以正常访问SLB地址。

image.png

image.png

四、解决方案

1、可以将pod分别调度到这两台node节点上 ,这样两个节点都可以访问到该slb;

2、可以在Kubernetes集群内通过ClusterIP或者服务名访问SLB地址。

最后业务方将pod部署到不同节点后解决






相关文章

MySQL优化器特性(六)表扫描成本计算

全表扫描成本使用optimizer_trace,或者使用explain format=tree, 或者explain format=json,可以查看查询的costmysql> exp...

Go 日志处理

Go 日志处理

1、背景日志文件一般用于记录操作系统或其他软件运行时发生的事件,或通信软件不同用户之间的消息。如果有一些问题需要对程序进行调试或故障排查时,日志是必不可少的,这是我们分析程序问题常用的手段。2、操作前...

PG的多版本并发控制(三)

三、多版本并发控制3.1 常见多版本并发的实现方式第一种方式是,数据库仅保存最新版本数据,将发生变更的旧行版本数据写到其他地方如undo,当需要读取旧版本数据时,通过undo重构。oracle和MyS...

hadoop集群集成Iceberg操作指导

hadoop集群集成Iceberg操作指导

hadoop集群集成Iceberg操作指导书一、    准备工作1.       大数据集群运行正常,完成hi...

OSS bucket权限设置

OSS bucket权限设置

问题描述调用oss的bucket资源,开始的时候可以访问,过几分钟再访问的时候,就提示拒绝访问问题原因是因为相应的bucket权限为私有,私有权限在访问文件对象时,是存在鉴权URL,存在时间有效性,所...

Linux运维工具

1.1 查看进程占用带宽情况 - NethogsNethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。1.2 硬盘读取性能测试 - IOZoneIOZone 是一款 Linu...

发表评论    

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