除了aurelius在他的回答中写的,
DynamicKubeletConfig Feature Gate 从 Kubernetes v1.11 开始默认启用,但您需要一些额外的步骤来激活它。
正如documentation中提到的(但很容易错过):
- Kubelet 的
--dynamic-config-dir 标志必须设置为节点上的可写目录。
kubelet -h
--dynamic-config-dir 字符串
Kubelet 将使用此目录检查下载的配置并跟踪配置的健康状况。
如果该目录尚不存在,Kubelet 将创建此目录。
路径可以是绝对的或相对的;相对路径从 Kubelet 的当前工作目录开始。
提供此标志可启用动态 Kubelet 配置。
必须启用 DynamicKubeletConfig 功能门才能传递此标志;此门目前默认为 true,因为该功能是 beta 版。
设置此标志的最佳位置(对于 Ubuntu)是将其添加到 /etc/defaults/kubelet:
$KUBELET_EXTRA_ARGS=--dynamic-config-dir=/var/lib/kubelet-dynamic
之后重启kubelet服务:
$ sudo systemctl restart kubelet
$ ps aux | grep kubelet
root 8610 4.1 1.1 1115992 90652 ? Ssl 14:57 0:46 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf
--kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml
--cgroup-driver=cgroupfs --network-plugin=cni
--pod-infra-container-image=k8s.gcr.io/pause:3.1
--dynamic-config-dir=/var/lib/kubelet-dynamic
之后kubelet 在此目录下创建目录树以维护检查点:
$ sudo tree /var/lib/kubelet-dynamic/
/var/lib/kubelet-dynamic/
└── store
├── checkpoints
│ └── 009e03e7-62ad-11e9-9043-42010a9c0003
│ └── 12399979
│ └── kubelet
└── meta
├── assigned
└── last-known-good
从这一点开始,一切都应该按照文档中的说明进行。