kubelet启动--命令执行

前面已经分析了kubelet启动命令行初始化,接下来介绍kubelet的cobra Command执行。cobra的Excute()–简单理解就是先进行命令行解析(如果设置了DisableFlagParsing: true则不解析),再将命令解析完剩下参数传给Command.Run进行执行。

kubenet ip泄漏

最近在升级docker版本之后,出现了一些pod一直处于pending状态,查看pod pending的原因是无法获得ip。最后排查发现升级docker版本的操作方式不对, 导致了kubenet ip泄漏,进而导致没有ip可以分配。

kubelet启动--FeatureGate初始化

kubernetes有很多的功能特性,这些特性一般都有关联的KEP。特性的成熟度有alpha、beta、GA、Deprecated,alpha代表不稳定,beta代表相对稳定有可能有bug,GA代表已经可用。 特性的生命阶段有KEP提出、alpha阶段、beta阶段、GA阶段、废弃。alpha阶段默认不启用,beta阶段默认启用 。更多feature gate相关知识请访问–Feature GatesKEP

feature gate用来控制某项特性打开或关闭,当然GA的特性不能关闭。本文以kubelet源码为例,分析feature gate如何工作的。

kubelet启动--命令行初始化

概述

kubelet命令行参数有177个,是kubernetes组件中配置项最多的。

kubelet的选项分为三类,一类是kubletFlags–(启动之后不能随时改变的,只能通过命令行配置,比如ip地址、路径等);另一类是kubeletConfiguration–(可以在启动之后进行修改,可以通过命令行设置或配置文件或者dynamic Kubelet config–configmap,通过命令行配置是DEPRECATED,一些选项只能通过配置文件设置–比如NodeStatusReportFrequency);最后是globalFlags–(只能通过命令行配置,比如日志级别、日志路径、版本)。