启动
Flags and Options
kubelet 的配置中主要有两部分
- KubeletConfiguration 这个配置是作为 kubernetes api 的形式暴露出去,其中主要包含了所有 node 都可以共享的配置
- kubeletFlags - 这里面包含了两种配置
- 在 node 运行期间不应该或者不能安全地被修改的参数
- 不能在 node 之间共享的配置,比如 hostname
kubelet 在启动的时候,关闭了 cobra 默认的 FlagParsing
,而是在 Run 中自行解析,主要是为了能够实现重载和动态加载 KubeletConfiguration
- 首先通过 flagset.Parse 解析一遍所有输入的 args,这时候 kubeletFlags 和 KubeletConfiguration 都已经被初始化了
- 如果配置了
kubeletFlags.KubeletConfigFile
路径,则先从文件中载入配置,然后再从 args 中载入配置,这一步是为了配置向后兼容
- 如果配置了
kubeletFlags.DynamicConfigDir
则会启动动态的配置加载功能
总结一下
- kubeletFlags 中的配置都是从 flag 中解析得到,并且只解析一次
- KubeletConfiguration 的配置有三个来源,优先级是依次递增,其中 flag 的优先级是最高的,这是为了兼容性考虑,如果将 flag 丢掉,则可以只考虑文件的情况
- kubeConfigFile
- dynamicConfig
- flag
Run()
kubelet run 依赖两个参数
- options.KubeletServer 里面包含了从 flags 和 config file 中解析出来的配置
- kubeletFlags
- kubeletConfig
- kubelet.Dependencies 这里包含了 kubelet 启动时候需要依赖的所有组件