k8s1.17-Service ClusterIP 访问服务过慢

描述问题

详见 k8s1.17-Service 创建、查看、删除命令

创建 service,指定网络类型是 ClusterIP:

kubectl expose deploy nginx --name=svc-nginx --type=ClusterIP --port=80 --target-port=80 -n test2

通过 service 的IP访问对应的 pod,延迟1分钟左右才有响应:

curl 10.108.69.169:80

原因

flannel网络设置将发送端的checksum打开了,但是flannel想利用了Checksum offloading的机制,自己不计算checksum,想留给网卡硬件来计算,这样的目的是不消耗CPU,利用网卡硬件分担CPU消耗,这原本是没问题的,但是flannel下层还有个ens33,这个ens33才是真的NIC,但是对ens33来说,从flannel发过来的是属于报文,ens33是否会对上层协议报文进行校验,然后将值填写到udp层报文内容去呢?这个我感觉不会,如果会的话,还要再了解下flannel的虚拟网络及硬件网卡之间的offloadinig机制。

解决

在 master、node 每台服务器上执行下面命令:

ethtool -K flannel.1 tx-checksum-ip-generic off

参考:
https://blog.csdn.net/xujiamin0022016/article/details/114457746


原文出处:/show_1IX6KsCdI6hY.html