kubelet获取pod ip

k8s v1.19.0

pod ip不是由cni告诉kubelet的,而是kubelet pleg基于nsenter进入network namespace+ip命令查询网卡得到。

 

pkg/kubelet/pleg/generic.go  
Start -> relist -> updateCache(更新本地缓存,供其他流程使用)->

 

pkg/kubelet/kuberuntime/kuberuntime_manager.go
GetPodStatus(从最新pause容器获取pod ip)->

 

vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go
RuntimeServiceServer接口中PodSandboxStatus方法

 

pkg/kubelet/dockershim/docker_sandbox.go
PodSandboxStatus方法

 

pkg/kubelet/dockershim/docker_sandbox.go
getIPs方法

 

pkg/kubelet/dockershim/docker_sandbox.go
getIPsFromPlugin方法

 

pkg/kubelet/dockershim/network/plugins.go
GetPodNetworkStatus方法

 

pkg/kubelet/dockershim/network/kubenet/kubenet_linux.go
GetPodNetworkStatus方法

 

pkg/kubelet/dockershim/network/plugins.go
GetPodIPs方法

 

pkg/kubelet/dockershim/network/plugins.go
getOnePodIP方法
通过nsenter进入容器网络namespace后,通过ip命令查询网卡ip。

 

posted on 2024-09-18 08:58  王景迁  阅读(39)  评论(0)    收藏  举报

导航