我正在尝试在特定的命名空间上运行一个简单的映像来调试一些问题
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
$ _
有什么建议吗?
答案 0 :(得分:2)
CrashLoopBackOff
意味着您的pod继续崩溃,并重新启动并再次崩溃。
取决于崩溃点,例如在启动时不久或在应用程序执行过程中稍后,您可能会或可能不会看到日志。
在这种情况下(未显示日志),您的pod可能没有一些请求的可用资源。例如,它可以是秘密或卷。
一种不错的方法是观看Kubernetes事件:kubectl get events
或者以类似的方式描述您的资源并阅读相关事件:kubectl describe pod <pod_name>
,屏幕的最后一部分专用于该资源上的事件。
答案 1 :(得分:0)
K8S在后台启动了一个Container。容器需要命令才能在前台运行。否则,它认为应用程序已停止并关闭了容器。更多here。
此外,未指定generator,因此默认情况下会创建Deployment,ReplicationSet和Pod。崩溃后,ReplicationSet正在启动容器。
运行以下命令,它将给出一个shell提示来调试任何问题。它也不会崩溃。
kubectl运行繁忙--image busybox-命名空间my-local-dev -it --generator = run-pod / v1
为了进行调试,不需要包含Deployment和ReplicationSet的健壮系统。使用上述生成器将确保仅运行Pod,而不运行其他资源(Deployment和ReplicationSet)。