Pod走主机网络时kubelet选择纳管IP作为service后端IP
k8s v1.19.0
pkg/kubelet/kubelet_pods.go
generateAPIPodStatus函数
根据getHostIPAnyWay方法返回结果作为PodIP,该PodIP会成为service的后端IP。
pkg/kubelet/kubelet_getters.go
getHostIPAnyWay方法
pkg/util/node/node.go
GetNodeHostIP函数
从node.status.Addresses中按照InternalIP->ExternalIP优先级来获取IP。
kube-apiserver走主机网络
pkg/kubelet/nodestatus/setters.go
NodeAddress函数
确定node status里面addresses。
1. 根据kubelet启动参数node-ip确定。
2. 根据kubelet启动参数hostname-override确定。
3. 根据域名解析k8s对象node metadata name结果确定。
4. 根据默认路由所在网卡ip确定。