Ubuntu 22.04 LTS ubuntu 22.04系统盘制作

圆圆 0 2026-05-05 16:01:41

Ubuntu 22.04 上用 kubeadm 搭 K8s 集群必须先取消 swap、关闭 ufw、配好 /etc/hosts 和内核参数,否则 kubeadm init 必失败或节点 NotReady;因 swap 未关会触发

直接说结论:Ubuntu 22.04 上用 kubeadm 搭 K8s 集群,**必须先关 swap、关 ufw、配好 /etc/hosts 和内核参数,否则 kubeadm init 必失败或节点卡在 NotReady**。这不是可选项,是硬式前提。为什么 kubeadm init 会报“cgroup driver Mismatch”或直接卡住

Ubuntu 22.04 默认使用 systemd cgroup 驱动,但 containerd 若没有显着配置,可能会回退到 cgroupfs;kubelet 启动时发现不一致就拒绝工作。

查看当前kubelet使用的驱动:sudo systemctl cat kubelet | grep "cgroup-driver",若没输出,说明没有显式指定确认containerd实际使用的驱动程序:sudo ctr版本不显示驱动程序,得看配置:sudo cat /etc/containerd/config.toml | grep systemd 正确做法:编辑 /etc/containerd/config.toml,确保有 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下的 SystemdCgroup = true 改完必须重启:sudo systemctl restart containerd && sudo systemctl restart kubeletkubeadm init 失败常见错误信息与对应动作

看到这些提示别急行为装,大多数是环境没清理干净或配置漏项:当贝AI

免登录体验DeepSeek满血版下载 [ERROR Swap]: running with swap on is not support → 执行 sudo swapoff -a 后,**必须注释掉 /etc/fstab 中 swap 行**,否则重新启动后激活[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables 不存在 → 缺内核模块,运行 sudo modprobe br_netfilter 并写入 /etc/modules-load.d/k8s.conffailed to load KubeConfig: stat /etc/kubernetes/admin.conf: no such file or directory → kubeadm

init 根本没跑成功,先查 sudo kubeadm init --dry-run -v 5 看前置检查哪步挂了init 卡在 [wait-control-plane] 等待 kubelet 启动控制平面 → 很可能是 containerd 没拉到暂停一下,手动试:sudo crictl pullregistry.k8s.io/pause:3.9Calico 安装后 Node 仍然是 NotReady 的关键排查点

不是 Calico yaml 下载下来 kubectl apply 就事。Ubuntu 22.完04默认启用 ufw,它会拦截 Calico 节点间 VXLAN 流量(UDP 8472),导致 BGP 无法建连。确认 ufw 状态:sudo ufw status verbose,即使显示 inactive,也建议执行 sudo ufw disable 彻底关闭检查 Calico pod 都是否都 运行:kubectl get pods -n kube-system -l k8s-app=calico-node,若有 CrashLoopBackOff,进日志:kubectl messages -n kube-system -l k8s-app=calico-node 常见日志错误:Failed to get node "" (k8s): connection returned → kubelet 未就绪,回退检查 sudo systemctl status kubeletCalico 默认使用 Bird 做 BGP,它依赖主机路由表。Ubuntu 22.04 的 netplan 可能生成华丽路由规则,用 ip route show table all 查是否有冲突

最易被忽略的一点:所有节点的主机名必须和 kubeadm join 时自动注册的节点名称完全一致——或者 kubectl get 节点显示的名称。如果用了 hostnamectl set-hostname 但没有同步更新 /etc/hosts 里的解析,kubelet 启动时会连不上自己,Node 状态永远卡在 NotReady。

上一篇:linux查看占用磁盘 linux查询磁盘占用
下一篇:返回列表
相关文章
返回顶部小火箭