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。

 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号