pod容器内无法访问集群外部主机ipv6地址

一、背景
同事反馈他这边有一环境出现pod容器内无法请求集群外部主机ipv6地址,但是在pod所在集群所主机上是可以请求到外部主机ipv6地址。

二、问题处理过程

首先主机和主机之间ipv6地址能通讯,说明主机之间网络是没啥问题,哪问题就出在容器层面,怀疑是否有防火墙之类的阻止容器的ipv6地址请求转发,并未发现有任何封堵的情况,随后查看相关路由啥的也没啥问题,相关系统ipv6的转发参数也配置有,抓包也没数据生成。
接下来看了下主机的ip信息,发现有ipvs开启生成的网卡信息,然后查看kube-proxy的配置发现用的模式是iptables,之前用的是ipvs模式,后来更改了,但是主机上遗留的信息没有清除,尝试先把这部分ipvs信息删除,包括ipvs生成的防火墙规则,清除完,进入容器内访问外部主机ipv6地址仍然不通。
只能接着查,尝试用docker跑一个容器起来和k8s的pod进行对比访问,看看是否结果一样,结果是docker运行的容器内访问外部主机ipv6地址是通的,pod内还是之前的结果就是不通,这就缩小了排查范围,基本确定可能是calico导致这种情况。
在calico相关社区也看了下,也有人遇到同样的问题,但是没有解决办法,只能自己在继续看看,容器到外部主机必定做nat转换出去的,抓包的时候都没数据,怀疑数据在出的时候就无法转发出去,到官网查了些配置参数,发现有个NATOutgoing参数,表示将nat的数据转发出去,然后将这个参数配置到calico的ippool配置中,重启calico节点,发现可以进容器内,在访问外部主机ipv6地址就通了。
在这里插入图片描述三、处理结果

更改calico的ippool,添加如下图箭头所指参数:

natOutgoing: true

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值