kubernetes pods卡在容器创建

ach*_*bar 5 containers sandbox raspberry-pi raspbian kubernetes

我有一个覆盆子pi集群(一个主,3个节点)

我的基本形象是:raspbian stretch lite

我已经设置了一个基本的kubernetes设置,其中一个主人可以看到他所有的节点(kubectl获取节点),他们都在运行.我使用weave网络插件进行网络通信

当一切都安装完毕后,我尝试在我的集群上运行一个nginx pod(首先是一些副本,但现在只有一个pod),然后kubectl运行my-nginx --image = nginx

但不知何故,pod陷入"容器创建"状态,当我运行docker图像时,我无法看到nginx图像被拉动.并且通常nginx图像不是那么大,所以现在必须拉(15分钟).kubectl描述pod提供了pod沙箱无法创建的错误,kubernetes将重新创建它.

我搜索了关于这个问题的一切,并尝试了stackoverflow上的解决方案(重新启动重启群集,搜索描述pods,新的网络插件尝试用法兰绒)但我无法看到实际问题是什么.我在虚拟框中做了完全相同的事情(只是ubuntu而不是ARM)并且一切正常.

首先,我认为这是一个权限问题,因为我作为普通用户运行一切,但在vm我做了同样的事情,没有任何改变.然后我检查kubectl获取pods --all-namespaces来验证weaver网络和kube-dns的pod正在运行,并且那里也没有任何错误.

这是Raspberry pi中的防火墙问题吗?编织网络插件是不兼容的(甚至kubernetes网站说它是)与arm设备?我猜测有一个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.
Run Code Online (Sandbox Code Playgroud)

kubectl记录podName

Error from server (BadRequest): container "my-nginx" in pod "my-nginx-9d5677d94-g44l6" is waiting to start: ContainerCreating
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

问题似乎与我的网络插件有关.在我的/etc/systemd/system/kubelet.service.d/10.kubeadm.conf中.网络插件的标志是否存在?environment = kubelet_network_args --cni-bin-dir =/etc/cni/net.d --network-plugin = cni

Ros*_*les 6

您可以通过查找尝试拉取图像的节点来查看它是否与网络相关:

kubectl describe pod <name> -n <namespace>

SSH 到节点,并docker pull nginx在其上运行。如果手动拉取图像时遇到问题,则可能与网络有关。


ach*_*bar 5

谢谢大家回答我的问题。我现在解决了我的问题。对于将来遇到我的问题的任何人,解决方案都如下。

我克隆了树莓派图像,因为我需要一个basicConfig.img用于何时需要将新节点添加到群集中。

编织网络(我使用的插件)感到困惑,因为在每个节点和主节点上,操作系统都具有相同的机器ID。当我删除机器ID并创建一个新的ID(并重新启动节点)后,我的错误得到了解决。执行此操作的命令是

sudo rm /etc/machine-id
sudo rm /var/lib/dbus/machine-id
sudo dbus-uuidgen --ensure=/etc/machine-id
Run Code Online (Sandbox Code Playgroud)

我的耐心再次受到考验。因为我的kubernetes设置是正常的,而我的树莓派是正常的。我是在kubernetes社区的某人的帮助下创建的。这再次向我们展示了我们的IT社区多么重要和伟大。对于将来会遇到这个问题的人们。我希望此解决方案能够解决您的错误,并减少您在进行愚蠢的小事情后搜索的时间。