k8s网络分析2--在Node节点直接访问service
k8s网络分析2--在Node节点直接访问service
访问service,网络数据如何走?
说明:如果我们在k8s的一个node节点上直接请求k8s的service的ip来请求服务,网络数据是如何走的呢?
查看服务的ip
ip: 服务service-adp-project 的service ip: 10.101.166.131,端口:80
查看当前系统的路由:
说明:可以看到路由数据是走到eth0 设备,这是我们的网卡。
走到网卡设备,数据不是从本机出去了吗?
数据没出去,数据在出去前被系统的钩子函数拦截了,这个钩子就是iptables,iptables其实也是工具使用的系统内核的netfilter,这里不拉远了。
所以接下去查看iptables的规则:
查看iptables的规则集
iptables 有4表5链,他们有顺序和优先级?
raw > mangle > nat > filter
备注:raw 和 managle没有规则,接下来查看nat,注意看OUTPUT上的。
备注:转到自定义规则链KUBE-SERVICES
备注:发往10.101.166.131的数据转发到KUBE-SVC-DJA4VUKOSH7NVR4E
备注:数据转发到链KUBE-SEP-OIHJNKSRTDY73BWF
备注:这里要多说一句,对于后端有多个pod的情况,这里会有多条链路,默认1/n+1的计算规则,实行rr的负载均衡。
做DNAT转换:
可以看到 指向10.244.8.255:80 ,这个是endpoint,指向实际的pod的ip。
后续路由略。