0

在使用 kubernetes 集群部署我的 java 应用程序时,我的 Pod 多次崩溃并重新启动。

我能够使用 kubernetes pod 运行小型微服务。

在创建 pod 时,我收到以下异常:

Warning BackOff         Back-off restarting failed docker container
    24s   10s     2       {kubelet 192.168.1.31}
Warning FailedSync      Error syncing pod, skipping: failed to "StartContainer" for
    "enliven" with CrashLoopBackOff: "Back-off 1m20s restarting failed
    container=enliven pod=enliven_default(75d49b7a-d36f-11e7-9800-0021f6220722)"

有什么建议吗?

4

2 回答 2

1

您可以首先检查 pod 上的日志,以查看应用程序是否由于某种原因无法启动。您可以使用

kubectl logs your_pod_name --previous

我要研究的一个潜在问题是,如果您的 Java 应用程序占用的资源多于集群上可用/允许的资源。在这里您可以看到请求和限制是如何工作的。但是你的 pod 可能因为这个原因被 Kubernetes 杀死了:资源使用过多。

于 2017-11-27T18:25:38.293 回答
0

对于 pod 的容器,您需要保持主进程运行以运行您的 pod 或容器。如果主进程死亡或完成,pod 将重新启动或崩溃。如果您有应用程序的二进制文件,只需在 docker 文件入口点中使用它。否则你可以继续使用 sleep 命令,但如果你正在运行服务器,最好通过在入口点输入它来保持它作为主进程。如果使用睡眠,请将其添加到 pod 的容器规范中

containers:
  command: [ "/bin/bash", "-c", "--" ] 
  args: [ "while true; do sleep 5; done;" ]
于 2021-01-08T08:34:06.600 回答