kubeadm是虚拟机环境部署kubernetes集群唯一推荐路径,因其封装证书、调度等高风险环节,但要求环境绝对干净:必须关闭swap并注释fstab、禁用selinux、配置bridge-nf-call-iptables=1、确保hosts双向解析,且国内需换阿里云镜像源并统一cgroup driver。

kubeadm 是虚拟机环境部署 Kubernetes 集群唯一推荐的路径,其他方式要么失败率高,要么调试成本远超收益。
为什么 kubeadm init 会卡在 preflight check
几乎所有卡住都源于初始化未做全。kubeadm 不会帮你修系统,只校验——校验失败就停。最常漏掉的四件事:
• swapoff -a 并注释 /etc/fstab 中 swap 行(否则 kubelet 启动直接报错)
• setenforce 0 + 修改 /etc/selinux/config 为 SELINUX=disabled(SELinux enabled 时 containerd 拉镜像被拒绝)
• 写入 /etc/sysctl.d/k8s.conf 并执行 sysctl --system,确保 net.bridge.bridge-nf-call-iptables = 1(否则 Flannel/Calico 网络插件无法建立 Pod 通信)
• 所有节点 /etc/hosts 必须互相映射 IP 和主机名,且 hostname -f 能返回完整域名(kubeadm join 依赖这个解析 master 地址)
镜像拉取失败:不是网络问题,是源没换对
默认从 k8s.gcr.io 拉镜像,在国内几乎必失败。不要试代理、不要改 hosts、不要折腾 docker daemon.json 的 proxy——直接换镜像仓库:
• 初始化 master 时加参数:--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
• 如果用的是 containerd,还需确认 /etc/containerd/config.toml 中 registry.mirrors 已配阿里云镜像地址
• 注意:kubeadm v1.22+ 默认使用 registry.k8s.io,但国内仍不可靠,阿里云源仍是首选
针对 Kubernetes 仪表板和 Web UI 的浏览器自动化。适用于与 Kubernetes Dashboard、Grafana、ArgoCD UI 或其他 Web 界面交互。需要设置 MCP_BROWSER_ENABLED=true。
node 加不进集群:检查 kubelet 和 cgroup driver 是否一致
常见现象是 kubeadm join 成功,但 kubectl get nodes 显示 NotReady 或根本不出现在列表里。核心原因是:
• Docker 默认用 systemd cgroup driver,而旧版 kubelet 默认用 cgroupfs
• 查看 kubelet 配置:cat /var/lib/kubelet/config.yaml | grep cgroupDriver,必须和容器运行时一致
• 若不一致,修改为 cgroupDriver: systemd,然后执行:systemctl restart kubelet
• Ubuntu 22.04+/CentOS 8+ 默认 containerd + systemd,但某些 yum 安装的 kubelet 仍可能残留 cgroupfs 配置
部署后 Pod 间不通:别急着重装,先看网络插件状态
Flannel/Calico 安装后,kubectl get pods -n kube-system 里对应插件 Pod 必须是 Running 状态,且无 CrashLoopBackOff。容易忽略的点:
• Flannel 要求节点网卡名统一(如都叫 ens33),若虚拟机网卡名不一致(eth0 vs ens33),需在 flannel.yml 中显式指定 --iface=ens33
• Calico 默认启用 IPv6,若系统未启用 IPv6,要删掉 manifest 里的 ip6 相关字段,或改用 calicoctl 补丁配置
• kubectl describe pod -n kube-system 查具体插件 Pod 的 Events,比 kubectl logs 更早暴露底层失败原因
真正麻烦的从来不是命令本身,而是每个环节都依赖前一步的系统状态是否干净——比如 swap 关了但 fstab 没注释,下次 reboot 就自动恢复;又比如 hosts 写错了 master 域名,join 时连连接都建立不了,却只看到 timeout,误以为是防火墙问题。










