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

使用kubeadm在Ubuntu与树莓派3搭建K8s集群遇阻

解决跨架构K8s集群中Weave-Net异常的问题

我之前在x86主节点+ARM树莓派工作节点的K8s集群里,也碰到过一模一样的Weave-Net异常问题,大概率是架构不兼容导致的——毕竟你的主节点是Ubuntu x86_64架构,树莓派3是ARM32位(armhf)架构,Weave-Net默认拉取的镜像只支持x86_64,树莓派上的Pod根本跑不起来。下面给你一步步的排查和解决方法:

第一步:先定位Weave-Net的具体异常

先看看kube-system命名空间里Weave-Net Pod的状态,重点关注树莓派上的Pod:

kubectl get pods -n kube-system -l name=weave-net

如果树莓派上的Pod状态是CrashLoopBackOff或者ImagePullBackOff,再查看Pod日志确认问题:

# 替换成你树莓派上的Weave-Net Pod名称
kubectl logs <weave-net-rpi-pod-name> -n kube-system -c weave
kubectl logs <weave-net-rpi-pod-name> -n kube-system -c weave-npc

要是日志里出现exec format error或者类似“架构不匹配”的提示,那就是镜像问题无疑了。

第二步:解决镜像架构兼容问题

有两种可行的方案:

方案1:修改Weave-Net部署yaml,使用ARM32镜像

  1. 先把Weave的部署yaml下载到本地:
kubever=$(kubectl version | base64 | tr -d '\n')
curl -L "https://cloud.weave.works/k8s/net?k8s-version=$kubever" > weave-net.yaml
  1. 编辑yaml文件,找到所有image: weaveworks/weave-kube:<版本号>和image: weaveworks/weave-npc:<版本号>的行,改成ARM32v7专属的镜像标签,比如:
# 把原来的镜像地址改成带arm32v7后缀的
image: weaveworks/weave-kube:2.8.1-arm32v7
image: weaveworks/weave-npc:2.8.1-arm32v7
  1. 先在树莓派上手动拉取这两个镜像(避免拉取失败):
# 在树莓派终端执行
docker pull weaveworks/weave-kube:2.8.1-arm32v7
docker pull weaveworks/weave-npc:2.8.1-arm32v7
  1. 重新应用修改后的yaml:
kubectl apply -f weave-net.yaml

方案2:改用支持多架构的CNI插件(更省心)

如果觉得修改Weave的yaml太麻烦,可以直接换成Calico——它的官方镜像默认支持x86_64、arm32、arm64等多种架构,不用手动调整镜像:

  1. 先下载Calico的部署yaml:
curl -L https://docs.projectcalico.org/manifests/calico.yaml > calico.yaml
  1. 编辑yaml,找到CALICO_IPV4POOL_CIDR环境变量,把值改成你kubeadm init时指定的10.244.0.0/16(Calico默认是192.168.0.0/16,必须和集群CIDR匹配):
- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16"
  1. 应用部署:
kubectl apply -f calico.yaml

第三步:排查其他可能的问题

如果镜像没问题但Weave还是异常,再检查这几点:

  • 网络端口连通性:Weave需要用到6783/TCP、6783/UDP、6784/TCP端口,主节点和树莓派之间必须能互通。可以在树莓派上测试:
telnet <你的主节点IP> 6783

如果不通,在两台机器上开放端口(比如Ubuntu/树莓派用ufw):

sudo ufw allow 6783/tcp
sudo ufw allow 6783/udp
sudo ufw allow 6784/tcp
  • kubelet日志:在树莓派上查看kubelet的实时日志,有没有和Weave相关的错误:
journalctl -u kubelet -f

按照这个流程排查,基本就能解决你的Weave-Net异常问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:02:49