You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22.04部署K8s v1.24.1未配置网络前集群异常排查

Kubernetes 1.24在Ubuntu 22.04初始化故障排查方案

你遇到的6443端口间歇性拒绝连接、核心组件CrashLoopBackOff问题,核心原因是系统基础配置不满足集群运行要求,Ubuntu 22.04和20.04的默认配置存在差异,旧部署教程不会覆盖这些差异点,按以下步骤排查修复即可:

1. 先排查最常见的基础配置错误

这部分问题占同类故障的90%以上,优先检查:

  • 确认swap完全禁用
    Kubelet默认检测到swap分区开启会直接异常退出,连带所有控制面组件反复重启。执行sudo swapoff -a临时关闭swap,同时打开/etc/fstab文件,注释掉所有带swap关键字的挂载行,保证重启后swap也不会自动启用。
  • 确认必需内核模块与参数配置正确
    执行以下命令检查:
    lsmod | grep br_netfilter
    sysctl net.ipv4.ip_forward
    
    如果br_netfilter模块未加载,执行sudo modprobe br_netfilter,同时将br_netfilter写入/etc/modules-load.d/k8s.conf保证开机自动加载;如果net.ipv4.ip_forward返回值不是1,在/etc/sysctl.conf中添加net.ipv4.ip_forward=1,执行sudo sysctl -p生效。
  • 对齐容器运行时与kubelet的cgroup驱动
    Ubuntu 22.04软件源安装的containerd默认使用cgroupfs驱动,而v1.24版本kubeadm默认要求systemd驱动,驱动不匹配会直接导致kube-scheduler、kube-proxy等组件反复崩溃。
    修复操作:
    1. 编辑containerd配置文件/etc/containerd/config.toml,找到[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]配置段,将SystemdCgroup = false修改为SystemdCgroup = true
    2. 依次重启服务:
      sudo systemctl restart containerd
      sudo systemctl restart kubelet
      
  • 确认网络依赖包完整
    kube-proxy依赖ipset、ipvs相关组件,Ubuntu 22.04默认不会预装,执行sudo apt install -y ipset ipvsadm安装即可。

2. 精准定位组件报错

如果改完上述配置还是有组件异常,直接拉取故障组件日志定位具体问题,不用盲目试错:

  • kubectl能连通的时候,直接查看对应Pod日志:
    # 查看kube-scheduler日志
    kubectl logs -n kube-system kube-scheduler-k8s-cluster1-control1
    # 查看kube-proxy日志
    kubectl logs -n kube-system kube-proxy-smp7q
    
  • kubectl连不上的时候,不需要等集群恢复,直接用crictl工具在节点本地查容器日志:
    # 列出所有容器(包含已退出的)
    sudo crictl ps -a
    # 查看对应故障容器的日志,替换<container-id>为上一步查到的故障容器ID
    sudo crictl logs <container-id>
    

3. 状态验证与重置方案

配置修改完成后等待3-5分钟,让组件自动拉起,再执行kubectl get pods -A验证状态:

  • coredns状态为Pending属于正常情况,因为你还没部署CNI网络插件,等后续部署完Calico/Flannel等网络插件后,coredns会自动恢复Running状态,不需要提前处理。
  • 等etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy这几个核心组件全部变为1/1 Running状态,就可以继续执行工作节点加入、网络插件部署的后续步骤。

如果改完配置还是存在大量组件异常,直接重置集群重新初始化效率更高:

sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d /var/lib/etcd /var/lib/kubelet/pods/*
# 确认所有基础配置正确后重新执行初始化命令
sudo kubeadm init --pod-network-cidr=10.255.0.0/16

内容的提问来源于stack exchange,提问作者Larry Schapker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 11:36:21