k8s常见报错及解决方法


cgroup driver问题

现象:

03 16:08:32.319709   24189 server.go:265] failed to run Kubelet: misconfiguration: kubelet cgroup driver:"cgroupfs" is different from docker cgroup driver: "systemd"

原因:
kubelet cgroup driver 与docker 不一致

解决方法:
修改kubelet 或者 docker 配置保持一致即可


swap开启导致kubelet启动失败

现象:

Jan 30 10:27:34 k8s-node1 kubelet[9831]: F0130 10:27:34.926665    9831 server.go:261] failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained: [Filename                                Type                Size        Used        Priority /swapfile                               file                2097148        0        -2]

原因:
swap又开启了

解决方法:

# 关闭Swap,机器重启后不生效
swapoff -a
cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
systemctl daemon-reload
systemctl restart kubelet

flannel.1网卡地址与cni0网段不一致

现象:

kubectl describe pod 有错误日志
network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.6.1/24

解决方法:

方法1:是将cni0的IP段修改为10.244.6.1。
/run/flannel/subnet.env

方法2:是将这个错误的网卡删除掉,之后会自动重建。
下面我们删除错误的cni0,然后让它自己重建,操作过程如下:
sudo ifconfig cni0 down    
sudo ip link delete cni0

Kubernetes因限制内存配置引发的错误

现象:在这里插入图片描述在这里插入图片描述
原因:
内存溢出,超过limit值。
发生这样的情况的概率并不高, 一般情况下有两种类型的 oom kill。
1.由于 pod 内进程超出了 pod 指定 Limit 限制的值, 将导致 oom kill, 此时 pod 退出的 Reason 会显示 OOMKilled。

2.另一种情况是 pod 内的进程给自己设置了可用内存, 比如 jvm 内存限制设置为2G, pod Limit 设置为6G, 此时由于程序的原因导致内存使用超过2G 时, 也会引发 oom kill。

这两种内存溢出的 kill 区别是第一种原因直接显示在 pod 的 Event 里; 第二种你在 Event 里找不到, 在宿主机的 dmesg 里面可以找到 invoked oom-killer 的日志
解决方法:
调高limit值。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值