serviceIP是虚拟的地址,没有分配给任何网络接口,当数据包传输时不会把这个IP作为数据包的源IP或目的IP。 kube-proxy在iptables模式下,这个IP没有被设置在任何的网络设备上,ping这个IP的时候,没有任何的网络协议栈会回应这个ping请求。 可以查看kube-proxy的服务的配置文件,核查kube-proxy的代理模式。mode处不配置,默...
排错背景:在一次生产环境的部署过程中,配置文件中配置的访问地址为集群的Service,配置好后发现服务不能正常访问,遂启动了一个busybox进行测试,测试发现在busybox中,能通过coredns正常的解析到IP,然后去ping了一下service,发现不能ping通,ping clusterIP也不能ping通。 排错经历:首先排查了kube-proxy是否正常,发现启动...
通过-o wide参数,查看pod所在节点的ip,以及pod内部的ip kubectl exec -it -n xxx <pod-name> -- ping 122.18.125.234 --是为了不进入pod操作,为了不频繁exit 这个时候,pod是可以ping通本地宿主机的ip的 kubectl exec -it -n xxx <pod-name> -- ping 122.18.125.254 这个时候,pod去ping网关,发现没有任...
一般来说,由于 IP 不太好记,我们还会附赠一个 DNS 的域名,Client 先访问域名得到虚 IP 之后再转成实 IP。Kube-proxy 则是整个机制的实现核心,它隐藏了大量的复杂性。它的工作机制是通过 apiserver 监控 Pod/Service 的变化(比如是不是新增了 Service、Pod)并将其反馈到本地的规则或者是用户态进程。 一个LVS ...
能够ping通且不影响正常服务访问 在Kubernetes中,Headless类型的service不会分配clusterIP,而是返回对应DNS的A记录。如果service的后端有3个pod,则会返回这3个pod的IP地址。在访问service时,会随机选择一个IP地址进行连接,因此headless类型的service是可以被ping通的。这种机制与ping baidu.com等域名解析为IP地址并...
在K8s中,一个容器(Pod)中的应用程序通常通过Service和Ingress暴露给外部访问。但是,当容器内部与外部网络不通时,可能是由于以下几个原因导致的: 1. 网络配置错误:容器的网络配置错误,导致无法与外部通信; 2. 防火墙配置错误:K8s节点上的防火墙(如iptables)未正确配置,导致流量被阻塞; ...
为了演示问题,我们先使用 k8s 官方的debug service部署进行复现,按照文档中的部署,会有一个busybox pod,以及三个hostnames pod, 我们让三个 hostnames pod 恰好分布在三个不同的节点上。 观察到的现象是可以在 busybox 中可以连通同一节点上的 hostnames-1,但不能连通其它两个节点上的 hostnames-2 和 host...
1.k8s中的service概念和pod的匹配情况 故障排查: Service访问异常 Service是什么?为什么容易出现问题? 在kubernetes中, Pod是有生命周期的,如果Pod重启IP很有可能会发生变化,如果我们的服务都是将Pod的IP地址写死, Pod的挂掉或者重启,和刚才重启的pod相关联的其他服务将会找不到它所关联的Pod,为了解决这个问题,在kub...