首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes容器CrashLoopBackOff

Kubernetes容器CrashLoopBackOff
EN

Stack Overflow用户
提问于 2020-07-06 22:00:16
回答 2查看 401关注 0票数 0

我是Kubernetes的新手,正在努力学习,但我遇到了一个无法解释的错误。我在集群中运行Pod和Deployment,它们运行得很好,如CLI所示,但过了一段时间后,它们一直崩溃,Pod需要重新启动。

在这里发帖之前,我做了一些研究来解决我的问题,但根据我的理解,我必须进行部署,这样我的replicaSets才能管理我的Pod生命周期,而不是独立部署Pod。但正如您所看到的,部署中的Pod也正在崩溃。

kubectl获取pod

代码语言:javascript
复制
operator-5bf8c8484c-fcmnp   0/1     CrashLoopBackOff   9          34m
operator-5bf8c8484c-phptp   0/1     CrashLoopBackOff   9          34m
operator-5bf8c8484c-wh7hm   0/1     CrashLoopBackOff   9          34m
operator-pod                0/1     CrashLoopBackOff   12         49m

kubectl describe pods运算符

代码语言:javascript
复制
Events:
  Type     Reason     Age                   From                 Message
  ----     ------     ----                  ----                 -------
  Normal   Scheduled  <unknown>             default-scheduler    Successfully assigned default/operator-pod to workernode
  Normal   Created    30m (x5 over 34m)     kubelet, workernode  Created container operator-pod
  Normal   Started    30m (x5 over 34m)     kubelet, workernode  Started container operator-pod
  Normal   Pulled     29m (x6 over 34m)     kubelet, workernode  Container image "operator-api_1:java" already present on machine
  Warning  BackOff    4m5s (x101 over 33m)  kubelet, workernode  Back-off restarting failed container

部署yaml文件:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
   name: operator
   labels:
     app: java
spec:
  replicas: 3
  selector:
    matchLabels:
      app: call
  template:
    metadata:
      labels:
        app: call
    spec:
       containers:
       - name: operatorapi
         image: operator-api_1:java
         ports:
         - containerPort: 80

有没有人能帮我,我怎么调试?

EN

回答 2

Stack Overflow用户

发布于 2020-07-06 22:34:07

原因很可能是运行在容器中的进程完成了任务,并在一段时间后被容器操作系统终止。然后,kubelet正在重新启动pod。

我建议你解决这个问题,请检查容器中正在运行的进程,并尽量让它永远存活。您可以在container中创建一个循环来运行此进程,也可以在deployment.yaml上对container使用一些命令

这里是您了解和调试pod失败原因的参考。https://kubernetes.io/docs/tasks/debug-application-cluster/determine-reason-pod-failure/

票数 1
EN

Stack Overflow用户

发布于 2020-07-06 22:47:27

有几种方法可以调试这样的场景,我建议您查看Kubernetes文档以了解最佳实践。我通常使用以下两种方法取得成功:

  1. Logs:您可以使用以下命令查看应用程序的日志:

代码语言:javascript
复制
kubectl logs -l app=java

如果该pod中有多个容器,则可以对其进行过滤:

代码语言:javascript
复制
kubectl logs -l app=java -c operatorapi

  1. Events:您可以从如下所示的事件中获取大量信息(按时间戳排序)。请记住,根据您可能拥有的应用程序和服务的数量,事件中可能会有很多噪音,因此您必须进一步过滤:

代码语言:javascript
复制
kubectl get events --sort-by='.metadata.creationTimestamp'

请随意分享这两个文件的输出,我可以帮助您进一步调试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62757691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档