环境
- ubuntu: 22.04LTS
- Client Version: v1.29.3
- Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
- Server Version: v1.29.3
排错 kubeadm init 之后使用 systemctl status kubelet 发现日志一直在疯狂报错
同时几乎所有 kubectl 命令都会报错
因此可以猜到 kube-apiserver 组件出了问题,用 kubectl get pods -n kube-system 之后发现几乎所有的组件都在疯狂重启
用 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 更新版本
更新完之后依旧存在类似的问题,需要我们手动将 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 配置文件的环境等