Kubernetes “如何修复”;“快速回退”;当我部署knative服务时

Kubernetes “如何修复”;“快速回退”;当我部署knative服务时,kubernetes,google-kubernetes-engine,knative-serving,Kubernetes,Google Kubernetes Engine,Knative Serving,在我的GKE中尝试运行knative服务时。豆荚给了我一个快速回退的错误。如何解决这个问题?CrashLoopBackOff是Kubernetes吊舱状态。这意味着您的pod不断出现故障并重新启动,在某个时刻,Kubernetes会减慢pod的重新启动速度,以节省集群中的资源 有几种方法可以调试此错误: 这一个获得了所有关于pod状态的信息,让状态部分仔细查看这里是非常必要的 kubectl get pod $podname -o yaml 这张照片显示了pod发生了什么,带有时间线和一些附加

在我的GKE中尝试运行knative服务时。豆荚给了我一个快速回退的错误。如何解决这个问题?

CrashLoopBackOff是Kubernetes吊舱状态。这意味着您的pod不断出现故障并重新启动,在某个时刻,Kubernetes会减慢pod的重新启动速度,以节省集群中的资源

有几种方法可以调试此错误:

这一个获得了所有关于pod状态的信息,让状态部分仔细查看这里是非常必要的

kubectl get pod $podname -o yaml
这张照片显示了pod发生了什么,带有时间线和一些附加信息

kubectl describe pod $podname
这一个显示的是日志,但上一个pod显示的是日志,所以从开始到结束都是完整的。如果没有前面的部分,它将显示当前pod,并且可能不会显示所有日志

kubectl logs $podname --previous

最后一个不是命令,而是方法,如果您真的想挖掘容器,而上面的命令没有帮助,请将sidecar添加到pod并检查文件系统是否有ERORR,或者简单地将.spec.restart设置为Never并执行它。

根据以下步骤,上述答案是正确的

  • 检查崩溃容器的“退出代码”以找到问题的根本原因
  • 如上所述,在

    containers:[容器名称]:最后状态:退出代码
    字段

    • 如果退出代码为1,则由于应用程序崩溃,容器崩溃
    • 如果退出代码为0,请验证应用程序运行的时间。容器在应用程序的主进程退出时退出。若您的应用程序很快完成执行,那个么容器可能会继续重新启动

    • 连接到正在运行的容器 在Pod外壳中运行此命令
    kubectl exec-it[POD_NAME]--/bin/bash

    如果Pod中有多个容器,请添加-
    c[container\u NAME]

    现在,您可以通过运行bash命令来使用该容器进行测试


    以下是Kubernetes引擎所有问题的链接

    尝试使用kubectl descripe po pod name-n名称空间描述pod。最后的事件可能会帮助你理解原因。可能原因可能是无法成功提取docker映像。如果可能,请提供更多详细信息,如上述命令的结果,以获取帮助。尽管这个答案非常详尽,但我觉得它缺少最终的调试工具:
    kubectl debug
    。使用
    kubectl debug pod name
    启动一个新的pod,作为错误部署的副本。它不使用任何配置的入口点,而是启动一个shell并让您进入。然后,您可以复制/粘贴入口点命令以找出哪里出了问题。