ubuntu kubeadm init 之后k8s组件一直重启问题

719 阅读1分钟

环境

  1. ubuntu: 22.04LTS
  2. Client Version: v1.29.3
  3. Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
  4. Server Version: v1.29.3

排错 kubeadm init 之后使用 systemctl status kubelet 发现日志一直在疯狂报错

3a47d746596a1d1d3ae9d5eadd536e41.png

同时几乎所有 kubectl 命令都会报错

d8e7fd2a2805e2134e54e1ec823668d8.png

因此可以猜到 kube-apiserver 组件出了问题,用 kubectl get pods -n kube-system 之后发现几乎所有的组件都在疯狂重启

651f654a16c604572085f71dab013b73.png

用 kubectl describe pods -n kube-system kube-apiserver-ubuntu 可以看到最主要的错误是

Normal SandboxChanged 25m kubelet Pod sandbox changed, it will be killed and re-created.

网上直接裸搜的话得到的基本都是说资源没有给足,但那主要是自己写的 docker yaml,k8s 的组件里边并没有这种问题

Solution

后来在 issue github.com/kubernetes/… 里搜到了解决方法,主要问题是用了 apt install containerd 安装的 containerd,apt install 的 containerd 版本会有问题(关键是 docker 文档就是这种安装),并不能在 22.04 上工作,因此需要首先将 containerd 更新版本

www.itzgeek.com/how-tos/lin…

更新完之后依旧存在类似的问题,需要我们手动将 SystemdCgroup 设置为 true

sudo mkdir -p /etc/containerd/

containerd config default | sudo tee /etc/containerd/config.toml

sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

这时候再重新使用 kubeadm init,就正常了

除此之外,还有可能是 ufw 忘记关,root user 忘记 export 配置文件的环境等