深究Kubernetes源码-Kubelet-3 Pod主流程-CreateSandbox
基于kubernetes1.26
承接 深究Kubernetes源码-Kubelet-3 Pod处理主流程分析
首先看下类图,主流程依然在kubeGenericRuntimeManager中,依赖RuntimeHelper接口,生成DNSConfig和Hostname,kubelet依然是RuntimeHelper接口的具体实现,dnsConfigurer专门处理DNSConfig相关逻辑,kubelet.runtimeclass.Manager核心是一个RuntimeClass的informer和lister,cri-api.runtime.v1.PodSandboxConfig为CRI接口参数。

首先看主流程,主要是generatePodSanboxConfig生成PodSanboxConfig,LookupRuntimeHandler根据pod.spec.runtimeClassName找到runtime handler,最后调用CRI RunPodSandbox

展开generatePodSandboxConfig,主要包含3块逻辑
1、调用runtimeHelper.GetPodDNS生成DNSConfig
2、如果非hostnetwork调用runtimeHelper.GeneratePodHostNameAndDomain生成Hostname和Domain
3、生成PodSandboxLinuxConfig

下章继续分析pod dns config