11.1,集群内部Service无法curl的bug(设置ipvs和关闭flannel的Checksum校验)

根据创建集群内部可访问的Service创建了集群内service,发现可以ping通service的ip:port但curl超时。

参照k8s集群ClusterIP不能使用
一开始就设置了ipvs,不知道为何没有生效。

kubectl get pods -n kube-system
kubectl logs -n kube-system kube-proxy-****
'''
Flag proxy-mode="" unknown, assuming iptables proxy
Using iptables Proxier.
'''
#发现mode:'',按i编辑成mode: "ipvs",esc+:wq退出
kubectl edit cm kube-proxy -n kube-system

#删除 kube-proxy的pod让其重新生成
kubectl get pods -n kube-system |grep kube-proxy|awk '{print $1}'| xargs kubectl delete pod  -n kube-system

kubectl get pods -n kube-system
kubectl logs -n kube-system kube-proxy-****
''' log出现Using ipvs Proxier.可以看到使用了ipvs'''

kubectl delete -f pod-nginx.yaml
kubectl apply -f pod-nginx.yaml
#发现依旧可以ping通service的ip:port但curl超时,原因是flannel虚拟网卡会开启了Checksum校验

参考Kubernetes K8S在IPVS代理模式下Service服务的ClusterIP类型访问失败处理,原理完全不懂

临时关闭flannel虚拟网卡Checksum校验,此步操作后可以curl

ethtool -k flannel.1 | grep checksum
'''
rx-checksumming: on
tx-checksumming: on     ##### 当前为 on
	tx-checksum-ipv4: off [fixed]
	tx-checksum-ip-generic: on    ##### 当前为 on
	tx-checksum-ipv6: off [fixed]
	tx-checksum-fcoe-crc: off [fixed]
	tx-checksum-sctp: off [fixed]
'''
#flannel的网络设置将发送端的checksum打开了,而实际应该关闭,从而让物理网卡校验。操作如下:
# 临时关闭操作
ethtool -K flannel.1 tx-checksum-ip-generic off  

永久关闭flannel虚拟网卡Checksum校验

#使用以下代码创建服务
cat >/etc/systemd/system/k8s-flannel-tx-checksum-off.service <<EOF
[Unit]
Description=Turn off checksum offload on flannel.1
After=sys-devices-virtual-net-flannel.1.device

[Install]
WantedBy=sys-devices-virtual-net-flannel.1.device

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K flannel.1 tx-checksum-ip-generic off
EOF

#开机自启动,并启动服务
systemctl enable k8s-flannel-tx-checksum-off
systemctl start  k8s-flannel-tx-checksum-off
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值