【发布时间】:2018-08-13 06:33:18
【问题描述】:
我有一个树莓派集群(一个主节点,3 个节点)
我的基本形象是:raspbian stretch lite
我已经设置了一个基本的 kubernetes 设置,其中 master 可以看到他的所有节点(kubectl get nodes)并且它们都在运行。 我使用 weave 网络插件进行网络通信
当一切都设置好后,我尝试在我的集群上运行一个 nginx pod(首先有一些副本,但现在只有 1 个 pod),如下所示 kubectl 运行 my-nginx --image=nginx
但不知何故,pod 卡在“容器创建”状态,当我运行 docker 图像时,我看不到 nginx 图像被拉取。通常一个 nginx 镜像不是那么大,所以它现在必须被拉出来(15 分钟)。 kubectl describe pods 给出 pod 沙箱创建失败的错误,kubernetes 将重新创建它。
我搜索了有关此问题的所有内容并尝试了 stackoverflow 上的解决方案(重新启动以重新启动集群,搜索描述 pods,新的网络插件尝试使用 flannel)但我看不出实际问题是什么。 我在 Virtual box 中做了同样的事情(只是 ubuntu 而不是 ARM )并且一切正常。
首先我认为这是一个权限问题,因为我以普通用户身份运行所有内容,但在 vm 中我做了同样的事情并且没有任何改变。 然后我检查了 kubectl get pods --all-namespaces 以验证 weaver 网络和 kube-dns 的 pod 是否正在运行,并且那里也没有任何问题。
这是 Raspberry pi 中的防火墙问题吗? weave 网络插件是否与 arm 设备不兼容(甚至 kubernetes 网站都说是)? 我猜有一个 api 网络问题,这就是为什么我不能让我的 pod 在节点上运行
[编辑] 日志文件
kubectl 描述 podName
>
> Name: my-nginx-9d5677d94-g44l6 Namespace: default Node: kubenode1/10.1.88.22 Start Time: Tue, 06 Mar 2018 08:24:13
> +0000 Labels: pod-template-hash=581233850
> run=my-nginx Annotations: <none> Status: Pending IP: Controlled By: ReplicaSet/my-nginx-9d5677d94 Containers:
> my-nginx:
> Container ID:
> Image: nginx
> Image ID:
> Port: 80/TCP
> State: Waiting
> Reason: ContainerCreating
> Ready: False
> Restart Count: 0
> Environment: <none>
> Mounts:
> /var/run/secrets/kubernetes.io/serviceaccount from default-token-phdv5 (ro) Conditions: Type Status
> Initialized True Ready False PodScheduled True
> Volumes: default-token-phdv5:
> Type: Secret (a volume populated by a Secret)
> SecretName: default-token-phdv5
> Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for
> 300s
> node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From
> Message ---- ------ ---- ----
> ------- Normal Scheduled 5m default-scheduler Successfully assigned my-nginx-9d5677d94-g44l6 to kubenode1 Normal
> SuccessfulMountVolume 5m kubelet, kubenode1 MountVolume.SetUp
> succeeded for volume "default-token-phdv5" Warning
> FailedCreatePodSandBox 1m kubelet, kubenode1 Failed create pod
> sandbox. Normal SandboxChanged 1m kubelet, kubenode1
> Pod sandbox changed, it will be killed and re-created.
kubectl 记录 podName
Error from server (BadRequest): container "my-nginx" in pod "my-nginx-9d5677d94-g44l6" is waiting to start: ContainerCreating
journalctl -u kubelet 给出这个错误
Mar 12 13:42:45 kubeMaster kubelet[16379]: W0312 13:42:45.824314 16379 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
Mar 12 13:42:45 kubeMaster kubelet[16379]: E0312 13:42:45.824816 16379 kubelet.go:2104] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
问题似乎出在我的网络插件上。在我的 /etc/systemd/system/kubelet.service.d/10.kubeadm.conf 中。网络插件的标志存在吗?环境= kubelet_network_args --cni-bin-dir=/etc/cni/net.d --network-plugin=cni
【问题讨论】:
-
你能添加你看到的实际错误日志吗?
-
感谢您的回复。我用日志文件编辑了我的问题
标签: raspberry-pi kubernetes containers sandbox raspbian