kubernetes:kubectl 未检索到任何日志

kubernetes: no log retrieved by kubectl

我正在尝试 运行 特定命名空间上的简单图像来调试一些问题

kubectl run busy --image busybox --namespace my-local-dev 
deployment.apps/busy created

但是由于某种原因容器不断重启

busy-67b577b945-ng2lt                     0/1       CrashLoopBackOff   5          3m

我无法获取任何日志,即使有 --previous 标志

$ kubectl logs -f --namespace my-local-dev busy-67b577b945-ng2lt --previous
Unable to retrieve container logs for docker://c8b9fce066686b3be01df1ed3343be5ec65607cb203e054fd9365511f77bd4af/home/pkara/Desktop
$ kubectl logs -f --namespace my-local-dev busy-67b577b945-ng2lt
$ _

有什么建议吗?

CrashLoopBackOff 表示您的 pod 继续崩溃并重新启动并再次崩溃。

根据崩溃的时间点,例如在应用程序启动时不久或稍后在应用程序执行期间,您可能会或可能不会看到日志。

在这种情况下(未显示日志)您的 pod 可能没有可用的请求资源。例如,它可能是一个秘密或一个卷。

一个好方法是观察 Kubernetes 事件:kubectl get events

或者以类似的方式描述您的资源并阅读相关事件:kubectl describe pod <pod_name>,屏幕的最后一部分专门用于该资源上的事件。

K8S在后台启动了一个Container。容器需要命令将 运行ning 保持在前台。否则,它认为应用程序已停止并关闭容器。更多 here.

此外,没有指定 generator,因此默认创建 Deployment、ReplicationSet 和 Pod。 ReplicationSet 在崩溃后启动容器。

运行 下面的命令,它会给出一个 shell 提示来调试任何问题。它也不会崩溃。

kubectl run busy --image busybox --namespace my-local-dev -it --generator=run-pod/v1

为了调试,不需要包含 Deployment 和 ReplicationSet 的健壮系统。使用上面的生成器将确保只有一个 Pod 是 运行 而不是其他资源(Deployment 和 ReplicationSet)。