运行创建后,我的Kubernetes集群中的pod停留在“ ContainerCreating”上。我如何查看此操作的日志以诊断其原因? kubectl logs似乎不起作用,因为容器需要处于非挂起状态。

评论

kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle / ...是有关可能阶段的文档。不幸的是,它不包括ContainerCreating ...

通常,当我遇到此问题时,是因为未创建适当的秘密-kubectl描述pod * pod_name *会显示出这是否是原因-请查看输出底部列出的“事件”。提示-要获取pod_name,请使用kubectl get pods,然后复制要检查的pod的名称。

#1 楼

kubectl describe pods将列出与pod关联的一些(大概是大多数)事件,包括图像提取,容器启动。

评论


如果容器在没有任何事件的情况下停留在ContainerCreating上该怎么办?对我来说,事件显示为“无事件”。

–鲍勃
16-05-26在2:30



有些事件似乎需要一段时间才能显示出来。例如,尝试为我安装磁盘的超时大约需要2分钟,然后才会显示为事件。

– jwadsa​​ck
16年7月28日在18:49

当您使用机密而找不到机密时(例如yaml中的错字,或者您之前忘记创建机密),就会发生这种情况。对于几乎所有其他可能的错误,它会变为CrashLoopback或Error状态,但是带有机密,它只会卡在ContainerCreating中,如果您描述了容器,那么最终您会看到一条消息,指出未找到机密,但几乎没有说没什么问题。

– danius
16-10-31在20:53

是的,通常在他开始做某事之前,您没有任何事件。

–erikbwork
17年5月10日在14:44

今天早上发生在我身上,这是在hostPath中输入错误的内容。是的粘性键盘。

–乔块
19年1月14日在17:26

#2 楼

事件中可能会提供更多信息。
kubectl get events --all-namespaces  --sort-by='.metadata.creationTimestamp'

但是请注意,由于该错误,排序事件可能无法正常工作:https://github.com/kubernetes/kubernetes/issues/29838
就我而言,我有一个与吊舱有关的事件:
default       13s         Warning   FailedMount               Pod          Unable to mount volumes for pod "restore-db-123-1-5f24s_default(9b7df264-2976-11ea-bb8f-42010a9a002c)": timeout expired waiting for volumes to attach or mount for pod "default"/"restore-db-123-1-5f24s". list of unmounted volumes=[nfsv]. list of unattached volumes=[nfsv default-token-hxrng]


评论


这次真是万分感谢!我试图通过GKE提供的查询使用容器日志,但是我怀疑我的过滤器太紧。该命令帮助我隔离出正在发生的事情。 (我忘记构建配置图,derp。)

– ingernet
20-10-9的1:26

#3 楼

就我而言,码头工人的互联网访问被阻止。它是使用代理解决的(使用sandylss的注释):


minikube stop
minikube delete
export http_proxy=http://user:pass@ip:port
export https_proxy=http://user:pass@ip:port
export no_proxy=192.168.99.0/24
minikube start --logtostderr --v=0 --bootstrapper=localkube --vm-driver hyperv 
  --hyperv-virtual-switch "Primary Virtual Switch" --docker-env HTTP_PROXY=$http_proxy \
  --docker-env HTTPS_PROXY=$https_proxy --docker-env NO_PROXY=$no_proxy

export no_proxy=$no_proxy,$(minikube ip)
export NO_PROXY=$no_proxy,$(minikube ip)

然后,检查docker是否可以访问互联网,运行:

$ docker pull tutum/hello-world


集群(使用minikube ssh连接到集群);如果开始下载,请停止该过程。

我的第二个问题是互联网连接速度慢。由于所需的docker映像大约为100MB,因此docker容器和Kubernetes容器都处于\pauseContainerCreating状态30分钟。

要检查docker是否正在下载映像,请运行:

$ ls -l /var/lib/docker/tmp


在集群中,它显示正在下载的临时映像文件,否则为空。

如果您在minikube和使用VPN,码头工人可以通过提琴手使用您的VPN。也就是说,泊坞窗将连接到提琴手的ip:port,提琴手已连接到VPN。否则,您的主机和minikube VM之间不会共享VPN。

评论


今天被这个错误咬了。仍然不确定是什么原因造成的。一分钟内一切正常,第二分钟,这个问题突然出现。谢谢您的修复。它为我工作。

– Jim
18-10-31在6:45

#4 楼

我有一次遇到这个问题是因为我的资源声明偶然很小。

资源:
限制:
cpu:1000m
内存:1024M
请求:
cpu:1000m
内存:1024M

vs

资源:
限制:
cpu:1000m < br内存:1024m
请求:
cpu:1000m
内存:1024m

大写表示m在资源使用方面有很大的不同。我被困在ContainerCreating上,因为我没有给容器足够的内存。

#5 楼

在我的案例中,由于挂起了docker镜像请求(某些图层已下载,有些则被锁定在“下载”中),因此一个pod卡在了“ ContainerCreating”上。
$ kubectl get events --all-namespaces  --sort-by='.metadata.creationTimestamp'

显示了一个事件“ Pulling image”
尝试使用docker image pull ...来拉取该图像,并发现它已挂起。
事实证明,并发拉取层中存在错误。更改docker config以限制并发性解决了问题。
将其添加到docker config(在Windows,docker-desktop UI,设置,Docker Engine上)以限制并发性:
  "max-concurrent-downloads": 1,
  "max-concurrent-uploads": 1