Kubernetes - Pod仍处于ContainerCreating状态

时间:2018-01-10 15:34:50

标签: kubernetes kubectl weave

我是Kubernetes所有新手,所以还有很多东西需要学习。

创建了一个双节点Kubernetes集群,并且两个节点(主服务器和工作服务器)都准备好做好工作:

[monkey@k8s-dp1 nginx-test]# kubectl get nodes
NAME      STATUS    ROLES     AGE       VERSION
k8s-dp1   Ready     master    2h        v1.9.1
k8s-dp2   Ready     <none>    2h        v1.9.1

此外,所有Kubernetes Pod都看起来不错:

[monkey@k8s-dp1 nginx-test]# kubectl get pods --all-namespaces
NAMESPACE     NAME                              READY     STATUS    RESTARTS   AGE
kube-system   etcd-k8s-dp1                      1/1       Running   0          2h
kube-system   kube-apiserver-k8s-dp1            1/1       Running   0          2h
kube-system   kube-controller-manager-k8s-dp1   1/1       Running   0          2h
kube-system   kube-dns-86cc76f8d-9jh2w          3/3       Running   0          2h
kube-system   kube-proxy-65mtx                  1/1       Running   1          2h
kube-system   kube-proxy-wkkdm                  1/1       Running   0          2h
kube-system   kube-scheduler-k8s-dp1            1/1       Running   0          2h
kube-system   weave-net-6sbbn                   2/2       Running   0          2h
kube-system   weave-net-hdv9b                   2/2       Running   3          2h

但是,如果我尝试在群集中创建新部署,则会创建部署,但其pod无法进入适当的RUNNING状态。 e.g。

[monkey@k8s-dp1 nginx-test]# kubectl apply -f https://k8s.io/docs/tasks/run-application/deployment.yaml
deployment "nginx-deployment" created

[monkey@k8s-dp1 nginx-test]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                READY     STATUS              RESTARTS   AGE
default       nginx-deployment-569477d6d8-f42pz   0/1       ContainerCreating   0          5s
default       nginx-deployment-569477d6d8-spjqk   0/1       ContainerCreating   0          5s
kube-system   etcd-k8s-dp1                        1/1       Running             0          3h
kube-system   kube-apiserver-k8s-dp1              1/1       Running             0          3h
kube-system   kube-controller-manager-k8s-dp1     1/1       Running             0          3h
kube-system   kube-dns-86cc76f8d-9jh2w            3/3       Running             0          3h
kube-system   kube-proxy-65mtx                    1/1       Running             1          2h
kube-system   kube-proxy-wkkdm                    1/1       Running             0          3h
kube-system   kube-scheduler-k8s-dp1              1/1       Running             0          3h
kube-system   weave-net-6sbbn                     2/2       Running             0          2h
kube-system   weave-net-hdv9b                     2/2       Running             3          2h

我不知道如何弄清问题是什么,但如果我做了kubectl get ev,我可以看到以下可疑事件:

<invalid>   <invalid>    1         nginx-deployment-569477d6d8-f42pz.15087c66386edf5d   Pod
             Warning   FailedCreatePodSandBox   kubelet, k8s-dp2        Failed create pod sandbox.

但我不知道从哪里开始。我还可以看到nginx docker图像本身永远不会出现在docker images

如何找到有关此问题的更多信息?我错过了kubernetes设置中的基本内容吗?

--- NEW INFO ---

有关背景信息以防万一...

Kubernetes节点在Windows 10 hyper-v上托管的CentOS 7虚拟机上运行。

--- NEW INFO ---

正在运行kubectl describe pods会显示以下警告:

Warning  NetworkNotReady         1m                             kubelet, k8s-dp2  network is not ready: [runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized]

--- NEW INFO ---

在我的工作时间结束后的晚上切断运行Kubernetes的Hyper-v虚拟机,今天早上我回到办公室时,我再次启动Kubernetes虚拟机进行操作,持续约15分钟,命令:

kubectl get pods --all-namespaces仍然显示ContainerCreating这些nginx pod与昨天一样,但是现在,该命令现在显示所有pod为Running,包括nginx pods ... ie完全重启主节点和工作节点虚拟机后,问题就解决了。

我现在再次完全重新启动,所有pod都显示为Running,这很好。

8 个答案:

答案 0 :(得分:3)

使用kubectl describe pod <name>查看更多信息

答案 1 :(得分:2)

对运行Kubernetes主节点和Kubernetes工作节点的两个虚拟机进行完全重启,使所有Pod显示为Running(注意:首次重启后,吊舱需要大约15-20分钟有问题进入Running状态,并在随后重新启动时,相关的吊舱进入Running状态相对更快... 3-5分钟。

答案 2 :(得分:2)

使用kubectl describe pod将显示所有事件。在某些情况下,部署可能仍在从远程提取docker映像,因此状态仍将显示为ContainerCreating

答案 3 :(得分:1)

尝试systemctl restart kubelet.service

答案 4 :(得分:0)

昨天我遇到了同样的问题。当我将这些吊舱描述为ContainerCreating状态时,问题出在CNI上,它失败了,吊舱仍处于ContainerCreating状态。因此,我从控制面板中删除了CNI并重新部署了它。一分钟内所有吊舱的状态都会更改为运行状态。

答案 5 :(得分:0)

您可以删除De Pod,它将自动重新创建。

kubectl delete pod -n namespace podname

答案 6 :(得分:0)

就我而言,这是由于缺少Secret或在部署名称空间中说ConfigMap

答案 7 :(得分:0)

您可以在部署上运行kubectl describe命令以确保发生的事件,或者可以在部署正在加速的Pod上运行describe命令。

有时您的群集中可能没有足够的资源。在运行的Pod上使用kubectl top命令检查一下,看其中一个是否耗尽了所有资源。

我希望这会有所帮助