K8s Pod无法访问SLB地址

小丫1年前技术文章653

一、问题现象

客户反馈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部署到不同节点后解决






相关文章

CDP实操--集群配置Kerberos

CDP实操--集群配置Kerberos

1.1检查IPA设置以及配置Kerberos前提条件登录IPA Server在services页面里都是ipa自带的服务,集群配置完kereros后,这里会增加集群里各项hadoop服务。在host页...

ElasticSearch shard&replica机制梳理和创建index图解

ElasticSearch shard&replica机制梳理和创建index图解

1、shard&replica的机制梳理1个index包含多个shard。一个shard包含index的部分数据每个shard都是最小的工作单元,承载部分数据,lucene实例,完整的建立索引...

 MySQL运维实战(1.2)安装部署:使用二进制安装部署

MySQL运维实战(1.2)安装部署:使用二进制安装部署

一般在生产环境,我们会使用二进制安装的方式安装MySQL。使用二进制安装,在处理单机多实例、升级MySQL等场景下更加方便。如果有特殊的需求(比如要打一些patch),我们还可以自己编译二进制。1、下...

sqlserver收缩事务日志失败

sqlserver收缩事务日志失败

一、背景2022.01.12 日晚上,sqlserver实例空间使用率达到85%开始告警。查看发现目前日志空间有较大增长,如下图所示:与客户方进行反馈,在1月13日中午进行事务日志的收缩操作,发现日志...

SparkStreaming对接kafka消费模式区别

SparkStreaming对接kafka消费模式区别

Sparkstreaming对接kafka使用的消费方式与常规的kafka消费方式完全不同,其中区别主要为消费者的管理方式不同。Ø  常规消费模式Kafka常规的消费模式以消费者组为消费单元...

Clickhouse MergeTree原理(二)—— 表和分区的维护

MergeTree是Clickhouse中最核心的存储引擎。上一篇文章中,我们介绍了MergeTree的基本结构。1、MergeTree由分区(partiton)和part组成。2、Part是Merg...

发表评论    

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