K3s单节点离线(无网络)安装故障求助:Service无法激活、kube-system Pod无法启动
K3s单节点离线部署故障排查与修复方案
核心问题诊断
从你提供的journalctl日志来看,两个关键问题导致K3s无法正常启动:
- 致命路由缺失:
no default routes found in "/proc/net/route" or "/proc/net/ipv6_route"——K3s依赖主机的默认网络路由初始化集群网络组件(如flannel、coredns),离线环境下你的主机未配置默认路由,这是服务无法进入active状态的根本原因。 - 错误的预配置操作:你在安装前手动复制了其他机器的
k3s.yaml到/etc/rancher/k3s/,这个文件是K3s启动后自动生成的集群认证配置,提前放入会干扰初始化流程,导致配置不匹配。 - 次要systemctl路径问题:
/usr/bin/systemctl: not found——建议确认你的Ubuntu系统是否安装了systemd(桌面/服务器版默认自带),可以用which systemctl查看路径,若缺失需先联网安装apt install systemd再回到离线环境操作。
修复步骤(离线环境)
1. 清理错误预配置
先删除手动放入的k3s.yaml,这个文件会在K3s成功启动后自动生成:
rm -f /etc/rancher/k3s/k3s.yaml
2. 手动配置主机默认路由(离线关键)
离线环境没有DHCP自动配置路由,需手动添加:
- 查看网卡名称(比如
eth0或ens33):
ip link show
- 配置静态IP并添加默认路由(以下为示例,根据你的实际网络调整):
# 给网卡分配静态IP ip addr add 192.168.1.100/24 dev eth0 # 启动网卡 ip link set eth0 up # 添加默认路由 ip route add default via 192.168.1.1 dev eth0
- 验证路由是否生效:
ip route show
输出中应包含default via 192.168.1.1 dev eth0的条目。
3. 重新执行正确的离线安装流程
- 确保k3s二进制文件权限合理:
cp /home/my-ubuntu/k3s /usr/local/bin/ chmod 755 /usr/local/bin/k3s # 建议用755权限,比770更安全合规
- 确认离线镜像包路径正确:
mkdir -p /var/lib/rancher/k3s/agent/images/ cp /path/to/airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
- 执行离线安装命令:
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
4. 验证安装结果
- 查看K3s服务状态:
systemctl status k3s
此时服务应显示active (running)状态。
- 设置临时环境变量(如需永久生效,可添加到
~/.bashrc或/etc/profile):
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
- 查看集群Pod状态:
kubectl get pods -A
kube-system下的所有默认Pod应逐步进入Running状态。
额外注意事项
- 离线镜像包的版本必须和K3s二进制文件完全一致,否则会出现镜像加载失败的问题。
- 如果是Ubuntu Server 20.04+版本,可通过netplan永久配置网络(避免重启后路由丢失),编辑
/etc/netplan/00-installer-config.yaml:
network: ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1] # 离线环境可填写内网DNS,或留空 version: 2
执行netplan apply让配置生效。
内容的提问来源于stack exchange,提问作者Thor
相关产品推荐
相关产品推荐

