我正在设置 Google Container Engine,并创建了 pod、资源控制器和服务。但是,它从未准备好,并且多次重新启动,如下所示。(restartPolicy
是Always
)
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
app-production-acg4r 0/1 ExitCode:0 8 5m
app-production-p7njh 0/1 ExitCode:0 8 5m
我跟着Kubernetes 应用程序故障排除指南,但没有运气。
首先,我尝试过kubectl logs
,但没有输出
$ kubectl logs app-production-acg4r app-production
$ kubectl logs app-production-p7njh app-production
$ kubectl logs --previous app-production-acg4r app-production
$ kubectl logs --previous app-production-p7njh app-production
我也尝试使用 运行容器内的命令kubectl exec
。它有时会返回错误:
$ kubectl exec notel-production-uz29p -c notel-production -- ls /var/log
error: Error executing remote command: Error executing command in container: container not found ("notel-production")
有时没有回应:
$ kubectl exec notel-production-uz29p -c notel-production -- ls /var/log
(No response)
我也确认了集群故障排除指南。
- 我登录到集群并查看了 /var/log/kubelet.log 和 /var/log/kube-proxy.log,但没有找到有用的东西。
- 重启集群没有任何效果
- 至少存在 GCE 持久磁盘
- 我正在使用复制控制器和服务
我不知道还能做什么。我该如何调查这个问题?或者这是 Google Container Engine 的问题?
答案1
您的容器似乎正在启动,然后快速退出。我猜是因为状态为ExitCode:0
。
为了调试我将检查以下内容:
- 如果你在本地机器上直接用docker运行同一个容器,它也会立即退出吗?
- 如果没有,您是否以某种方式覆盖了 Pod 模板中的任何环境变量、参数或命令行,从而使其立即退出?
- 尝试将
.spec.container[].command
您的 Pod 模板设置为类似的内容["sleep", "10000"]
,以便容器可以保持足够长的时间,以便您可以用来kubectl exec ...
调试。