K8s Pod无法访问SLB地址

小丫2年前技术文章829

一、问题现象

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






相关文章

TEZ常见调优参数

一、设置引擎为Tez参数:参数默认值推荐值参数说明解释hive.execution.enginemr请根据具体的业务场景进行选择执行引擎选择使用tez引擎时,此值设置为tezhive.tez.log....

MapReduce生产经验

MapReduce程序效率的瓶颈在于两点:1)计算机性能(1)CPU、内存、磁盘、网络2)I/O操作优化(1)数据倾斜(2)Map运行时间太长,导致Reduce等待过久(3)小文件过多下来就根据这两点...

podman相关使用

Podman介绍Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进...

MySQL创建用户授权

创建用户授权一、创建用户1.创建管理用户create user 'test'@'%' identified by 'Test123@'create user 'test'@'localhost' id...

ldap安装部署

ldap安装部署

一、关闭selinux和防火墙sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/c...

Yarn调度器对比

1)Hadoop调度器重要分为三类:FIFO 、Capacity Scheduler(容量调度器)和Fair Sceduler(公平调度器)。Apache默认的资源调度器是容量调度器;CDH...

发表评论    

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