【问题标题】:Crashloopbackoff status after executing the go program using pod.yaml-why?使用 pod.yaml 执行 go 程序后的 Crashloopbackoff 状态 - 为什么?
【发布时间】:2021-10-23 21:45:16
【问题描述】:

我在 minikube 中应用了约束。我已经构建了一个 go 程序作为图像,它将通过应用 pod.yaml 文件作为 pod 执行。当我使用“kubectl get pods”获取 pod 的状态时,几秒钟后它显示“crashloopbackoff”作为状态。然后它显示为警告“后退重新启动失败的容器”。为什么 pod 在没有显示 crashoopbackoff 错误或任何重启警告状态的情况下无法永久成功运行。

pod.yaml

apiVersion: v1
kind: Pod
metadata:
 name: opa
 labels:
name: opa
namespace: test
owner: name.agilebank.demo
spec:
containers:
  - name: opa
    image: user-name/image-name
resources:
  limits:
    memory: "1Gi"
    cpu: "200m"
ports:
  - containerPort: 8000

     
    `kubectl get pods`
     NAME   READY   STATUS             RESTARTS   AGE
     opa    0/1     CrashLoopBackOff   12         41m


     `kubectl describe pod pod-name`
      Name:         opa
      Namespace:    default
      Priority:     0
      Node:         minikube/ip
      Start Time:   Mon, 23 Aug 2021 19:31:52 +0530
      Labels:       name=opa
          namespace=test
          owner=name.agilebank.demo
      Annotations:  <none>
      Status:       Running
      IP:           ip-no
      IPs:
        IP:  ip-no
        Containers:
      opa:
        Container ID:   docker://no
        Image:          username/img-name
        Image ID:       docker-pullable://username/img-name
        Port:           8000/TCP
        Host Port:      0/TCP
        State:          Waiting
        Reason:       CrashLoopBackOff
        Last State:     Terminated
        Reason:       Completed
        Exit Code:    0
        Started:      Mon, 23 Aug 2021 20:13:02 +0530
        Finished:     Mon, 23 Aug 2021 20:13:05 +0530
        Ready:          False
        Restart Count:  12
        Limits:
          cpu:     200m
          memory:  1Gi
        Requests:
          cpu:        200m
          memory:     1Gi
          Environment:  <none>
          Mounts:
            /var/run/secrets/kubernetes.io/serviceaccount from            default-token-5zjvn (ro)
          Conditions:
          Type              Status
          Initialized       True 
          Ready             False 
          ContainersReady   False 
          PodScheduled      True 
          Volumes:
             default-token-5zjvn:
          Type:        Secret (a volume populated by a Secret)
          SecretName:  default-token-5zjvn
          Optional:    false
          QoS Class:       Guaranteed
          Node-Selectors:  <none>
          Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
          node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
          Events:
          Type     Reason     Age                  From               Message
           ----     ------     ----                 ----               -------
          Normal   Scheduled  45m                  default-scheduler  Successfully assigned default/opa to minikube
          Normal   Pulling    45m                  kubelet            Pulling image "usernaame/img-name"
          Normal   Pulled     41m                  kubelet            Successfully pulled image "username/img-name"
          Normal   Created    39m (x5 over 41m)    kubelet            Created container opa
          Normal   Started    39m (x5 over 41m)    kubelet            Started container opa
          Normal   Pulled     30m (x7 over 41m)    kubelet            Container image "username/img-name" already present on machine
         Warning  BackOff    19s (x185 over 41m)  kubelet            Back-off restarting failed container

【问题讨论】:

  • 好吧,没有更多细节,我们不会帮助你。我要问你同样的问题:“什么是崩溃?”。你能提供一些日志、错误、细节吗?这个错误通常发生在 pod 一直无法启动、kubernetes 不断销毁和重新创建 pod 时。
  • pod 内的应用程序很可能失败。尝试找出您遇到的错误。您可以使用命令Kubectl logs POD --previous 查看上一个容器实例的日志。
  • kubectl get pods NAME READY STATUS RESTARTS AGE opa 0/1 CrashLoopBackOff 11 36m @AnthonyRaymond 这是我的 pod 状态
  • @ArutsudarArut 是的 kubectl logs pod 向我显示了我需要的任何输出,但是当我检查 pod 状态时它会在几秒钟后显示警告 BackOff 98s (x162 over 37m) kubelet Back-off restarting failed container跨度>
  • @thara 你设置了活跃度/就绪度探测吗?如果是,并且如果这些值对于应用程序初始化时间来说太短,那么 Kubernetes 可能会过早地终止应用程序。

标签: go kubernetes kubernetes-pod crashloopbackoff


【解决方案1】:

您的应用程序有问题。您的应用程序以Exit Code: 0 退出

它可能会执行您告诉执行并完成工作的内容,如果您想让容器保持活动状态,您的应用程序应该在该容器内运行。

这不是探测错误。如果出现探测错误,您可能会遇到类似这样的事件:

  Warning  Unhealthy  13s (x4 over 43s)  kubelet            Liveness probe failed: HTTP probe failed with statuscode: 404

您在容器中的应用程序是一直在运行还是什么?如果你想执行它并完成,你不应该使用Pod。你应该使用Job

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2017-12-06
    • 2015-11-27
    • 1970-01-01
    • 2020-01-07
    • 2021-08-23
    相关资源
    最近更新 更多