树莓派3部署Kubernetes失败:kubeadm init无法初始化master节点求助
排查树莓派3上kubeadm init拉取API容器失败的问题
我之前在树莓派上部署Kubernetes的时候也碰到过类似的镜像拉取问题,结合你的环境(HypriotOS + Docker 17.03 + K8s 1.9 + WiFi连接),给你几个具体的排查和解决方向:
1. 优先确认镜像架构兼容性
树莓派是ARM架构,而Kubernetes官方默认的k8s.gcr.io镜像仓库很多都是AMD64架构的,直接拉取肯定会失败。你需要替换为ARM兼容的镜像:
- 先列出kubeadm需要的所有镜像:
kubeadm config images list - 然后手动拉取Hypriot提供的ARM适配镜像(他们专门做树莓派的容器镜像),并重新打标签匹配kubeadm的预期:
# 以v1.9.0版本为例,对应你的K8s版本 docker pull hypriot/kube-apiserver:v1.9.0 docker tag hypriot/kube-apiserver:v1.9.0 k8s.gcr.io/kube-apiserver:v1.9.0 docker pull hypriot/kube-controller-manager:v1.9.0 docker tag hypriot/kube-controller-manager:v1.9.0 k8s.gcr.io/kube-controller-manager:v1.9.0 docker pull hypriot/kube-scheduler:v1.9.0 docker tag hypriot/kube-scheduler:v1.9.0 k8s.gcr.io/kube-scheduler:v1.9.0 docker pull hypriot/kube-proxy:v1.9.0 docker tag hypriot/kube-proxy:v1.9.0 k8s.gcr.io/kube-proxy:v1.9.0 docker pull hypriot/pause:3.0 docker tag hypriot/pause:3.0 k8s.gcr.io/pause:3.0 docker pull hypriot/etcd:3.1.10 docker tag hypriot/etcd:3.1.10 k8s.gcr.io/etcd:3.1.10
2. 检查WiFi网络的连通性与DNS配置
WiFi连接容易出现DNS解析不稳定或者网络超时的问题,这会导致镜像拉取失败:
- 测试镜像仓库的连通性:
如果解析失败或者ping不通,修改Docker的DNS配置:ping k8s.gcr.io nslookup k8s.gcr.io
编辑/etc/docker/daemon.json(如果没有就新建),添加:
然后重启Docker服务:{"dns": ["8.8.8.8", "1.1.1.1"]}systemctl restart docker
3. 查看完整的kubelet日志定位具体错误
你提供的日志片段不全,建议查看完整的kubelet日志来找到拉取失败的具体原因(比如超时、镜像不存在、权限问题等):
- 实时查看kubelet日志:
journalctl -u kubelet -f - 查看最近10分钟的日志:
journalctl -u kubelet --since "10 minutes ago"
4. 确认kubeadm初始化参数的正确性
- 确保
--apiserver-advertise-address设置的是树莓派WiFi网卡的正确IP,用ip addr或者ifconfig查看WiFi接口(通常是wlan0)的IP,不要用localhost或者错误的IP。 - K8s 1.9版本初始化时建议指定Pod网络CIDR(比如使用Flannel网络的话),添加
--pod-network-cidr=10.244.0.0/16参数,避免后续网络配置问题:kubeadm init --apiserver-advertise-address=你的WiFiIP --pod-network-cidr=10.244.0.0/16
内容的提问来源于stack exchange,提问作者Andrei Dascalu
相关产品推荐
相关产品推荐

