kubelet启动失败

原因之一:是kubelet cgroup驱动程序“ cgroupfs”与docker cgroup驱动程序不同

公司的k8s,新增了一个节点,但kubelet启动一直报错,无法启动,网上找了半天,发现是kubelet cgroup驱动程序“ cgroupfs”与docker cgroup驱动程序不同,所导致,原因不详。

cgroups 的全称是 Linux Control Groups,主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(cpu、memory、IO 等)。

systemd是系统自带的cgroup管理器, 系统初始化就存在的, 和cgroups联系紧密,为每一个进程分配cgroups, 用它管理就行了. 如果设置成cgroupfs就存在2个cgroup控制管理器, 实验证明在资源有压力的情况下,会存在不稳定的情况。
 

一、查看docker cgroup驱动

[root@shrs-35 ~]# docker info|grep Driver
 Storage Driver: overlay2
 Logging Driver: json-file
 Cgroup Driver: systemd

二、查看kubelet cgroup驱动

[root@shrs-35 ~]# systemctl show --property=Environment kubelet | cat
Environment=KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml

发现确实是俩个cgroup驱动程序不一致导致的

三、解决办法
3.1 修改docker的Cgroup Driver
修改/etc/docker/daemon.json文件

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}


重启docker

systemctl daemon-reload
systemctl restart docker


3.2 修改kubelet的Cgroup Driver
修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件,增加–cgroup-driver=systemd (官方推荐用systemd)

Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=systemd"


重启kubelet

systemctl daemon-reload
systemctl restart kubelet


 

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值