k8s service ip不能ping通?(已解决)

问题描述:在k8s集群中主机无法ping通service ip,但是pod ip是可以ping通

1.先看下serviceIP是怎么来的?

serviceIP是serviceController生成的,参数–service-cluster-ip-range string会配置在controller-manager上,serviceController会在这个参数指定的cidr范围内取一个IP

2.为什么不能ping?

serviceIP是虚拟的地址,没有分配给任何网络接口,当数据包传输时不会把这个IP作为数据包的源IP或目的IP。

kube-proxy在iptables模式下,这个IP没有被设置在任何的网络设备上,ping这个IP的时候,没有任何的网络协议栈会回应这个ping请求。

可以查看kube-proxy的服务的配置文件,核查kube-proxy的代理模式。mode处不配置,默认为iptables模式

kubectl edit configmap -n kube-system kube-proxy

在iptables模式时,clusterIp会在iptables的PREROUTING链里面用于nat转换规则中。

而在ipvs模式下,会使用在ipvs模块的ipvs规则转换中。

在ipvs模式下,所有的clusterIp会被设置在node上的kube-ipvs0的虚拟网卡上,这个时候去ping是可以通的。

完美解决

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 服务 将运行在一组 Pods[https://kubernetes.io/docs/concepts/worklo...
    与狼共舞666阅读 1,794评论 0 1
  • Service 概念介绍 虽然每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失。引出...
    jaymz明阅读 769评论 0 3
  • 通过以前的学习,我们已经能够通过Deployment来创建一组Pod来提供具有高可用性的服务。虽然每个Pod都会分...
    david161阅读 1,214评论 0 0
  • 四层负载均衡Service 在kubernetes中,Pod是有生命周期的,如果Pod重启它的IP很有可能会发生变...
    菜头_355f阅读 6,992评论 0 4
  • 文章是基于“Kubernetes权威指南”和博客[https://kuboard.cn/learning/]的学习...
    彦帧阅读 1,094评论 0 1