kubelet失败,kubelet cgroup驱动程序:“cgroupfs”与docker cgroup驱动程序不同:“systemd”
cgroup drive
configuration在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf中是正确的
环境= “KUBELET_CGROUP_ARGS = – cgroup的驱动程序= systemd”
我也用cli检查了Environment
$ systemctl show –property =环境kubelet | cat Environment = KUBELET_KUBECONFIG_ARGS = – kubeconfig = / etc / kubernetes / kubelet.conf \ x20 – require-kubeconfig = true KUBELET_SYSTEM_PODS_ARGS = – pod-manifest-path = / etc / kubernetes / manifests \ x20 – allow-privileged = true KUBELET_NETWORK_ARGS = – network-plugin = cni \ x20 – cni-conf-dir = / etc / cni / net.d \ x20 – cni-bin-dir = / opt / cni / bin KUBELET_DNS_ARGS = – cluster- dns = 10.96.0.10 \ x20 – cluster-domain = cluster.local KUBELET_AUTHZ_ARGS = – authorization-mode = Webhook \ x20 – client-ca-file = /etc/kubernetes/pki/ca.crt KUBELET_CADVISOR_ARGS = – cadvisor -port = 0 KUBELET_CGROUP_ARGS = – cgroup-driver = systemd
如何重现它 :
- yum install -y docker-1.12.6
- systemctl启用docker && systemctl启动docker
- setenforce 0
- yum install -y kubelet kubeadm
- systemctl启用kubelet && systemctl启动kubelet
- systemctl守护进程重新加载
- systemctl重启kubelet
- Kubelet日志
环境 :
- Kubernetes版本(使用
kubectl version
):1.7.3 - 云提供商或硬件configuration**:4核16G RAM
- 操作系统(例如从/ etc / os-release):CentOS Linux 7(Core)
- 内核(例如
uname -a
):Linux 10-8-108-92 3.10.0-327.22.2.el7.x86_64#1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux - 安装工具:kubeadm
它看起来像kubelet进程没有加载从/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
从错误消息告诉正确的设置。
从聊天中获得更多信息后,我认为有几种可行的方法:
-
将kubelet和docker cgroup驱动程序切换到
cgroupfs
从下面的repo下载cgroupfs
,默认情况下使用cgroupfs
。[dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg
并在kubelet conf中更改cgroup驱动程序。 检查错误是否再次发生,以及kubelet从conf中加载的内容。
-
在kubelet代码中添加更多的日志来debugging它
这是kubelet用来从双方获得conf的逻辑
编辑这个文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
将systemd改为cgroupfs “,然后重启kubelet systemctl restart kubelet
。
可能的原因
kubelet 1.7.3不读configuration文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf#50748
解
疑难解答kubeadm
如果您使用CentOS并在设置主节点时遇到困难,请确认您的Docker cgroup驱动程序与kubelet config相匹配:
docker info | grep -i cgroup cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
如果Docker cgroup驱动程序和kubeletconfiguration不匹配,请将kubeletconfiguration更改为与Docker cgroup驱动程序匹配。 您需要更改的标志是–cgroup-driver。 如果它已经设置,你可以像这样更新:
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
这可以被replace为:
CG=$(sudo docker info 2>/dev/null | sed -n 's/Cgroup Driver: \(.*\)/\1/p') sed -i "s/cgroup-driver=systemd/cgroup-driver=$CG/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf