【问题标题】:kubernetes giving CrashLoopBackOff error while creating podskubernetes 在创建 pod 时出现 CrashLoopBackOff 错误
【发布时间】:2020-05-04 03:52:28
【问题描述】:

我正在创建一个节点容器 pod,它给出了 CrashLoopBackOff 错误。

kubectl 获取 pod

kubectl 描述 pod test-node3

任何帮助将不胜感激。

【问题讨论】:

  • kubectl getkubectl describe 这样的命令通常应该将文本内容写入控制台,而不是图像。您能否将这些图像替换为命令的实际输出,并提供重现问题所需的源代码(例如、部署 YAML 文件)?

标签: linux docker kubernetes orchestration


【解决方案1】:

您的容器没有长时间运行的进程。容器中的主进程以退出代码 0 退出,这通常意味着该进程已成功终止。您可以在您共享的 kubectl describe 输出中看到它。

Reason: Completed 
Exit Code: 0

【讨论】:

  • 但是这个容器在 docker 下运行良好。
  • 你用什么命令来启动docker容器?您可能在命令行上指定了一个入口点,因此它必须工作。
  • docker run -t -p 3000:3000
  • 它以交互模式打开容器
  • 那是因为你使用了-t 选项,它分配了一个伪tty。试试docker run <image_name> -p 3000:3000,这就是你使用 pod 运行容器时会发生的情况。
【解决方案2】:

您可以添加如下命令,使 pod 保持运行状态。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

参考:Doc

【讨论】:

    【解决方案3】:

    一旦 Pod 被调度程序分配给一个节点,kubelet 就开始使用容器运行时创建容器。容器有三种可能的状态:Waiting、Running 和 Terminated。

    已终止:表示容器已完成执行并已停止运行

    容器在成功完成执行或由于某种原因失败时进入此状态。无论如何,都会显示原因和退出代码,以及容器的开始和结束时间。

    在您的屏幕截图中,可以清楚地看到 pod 内的容器正在运行并完成其工作,退出代码 0 如下所示 sn-p

      State:          Terminated
        Reason:       Completed
        Exit Code:    0
    

    您应该向容器中添加一个长时间运行的进程,或者在 pod 定义中定义 restartPolicy: Never

    通过添加正确的重启策略测试了您的映像,并且 POD 正确运行到完成,没有崩溃

    kubectl run test --image=abhishekk27/kube-pub:new --restart=Never
    
    $ kubectl get pods
    NAME      READY   STATUS      RESTARTS   AGE
    test      0/1     Completed   0          8m12s
    

    yaml 生成:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: test
    spec:
      containers:
      - image: abhishekk27/kube-pub:new
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    

    结果

    $ kubectl describe pod test
    Name:         test
    Namespace:    default
    Priority:     0
    Node:         dlv-k8s-node-1/131.160.200.104
    Start Time:   Fri, 17 Jan 2020 09:45:00 +0000
    Labels:       run=test
    Annotations:  <none>
    Status:       Succeeded
    IP:           10.244.1.12
    IPs:
      IP:  10.244.1.12
    Containers:
      test:
        Container ID:   docker://b335e5fef022dced824f85ba2bfe4c024608c9b5463599eb36591a14d709786d
        Image:          abhishekk27/kube-pub:new
        Image ID:       docker-pullable://abhishekk27/kube-pub@sha256:6a696bd733edaa48b9be781960f4ee178d16f1c9aea51e53bd0f54326a3d05b1
        Port:           <none>
        Host Port:      <none>
        State:          Terminated
          Reason:       Completed
          Exit Code:    0
          Started:      Fri, 17 Jan 2020 09:45:48 +0000
          Finished:     Fri, 17 Jan 2020 09:45:48 +0000
        Ready:          False
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-7f4mt (ro)
    Conditions:
      Type              Status
      Initialized       True
      Ready             False
      ContainersReady   False
      PodScheduled      True
    Volumes:
      default-token-7f4mt:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-7f4mt
        Optional:    false
    QoS Class:       BestEffort
    Node-Selectors:  <none>
    Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                     node.kubernetes.io/unreachable:NoExecute for 300s
    Events:
      Type    Reason     Age    From                     Message
      ----    ------     ----   ----                     -------
      Normal  Scheduled  6m50s  default-scheduler        Successfully assigned default/test to dlv-k8s-node-1
      Normal  Pulling    6m46s  kubelet, dlv-k8s-node-1  Pulling image "abhishekk27/kube-pub:new"
      Normal  Pulled     5m58s  kubelet, dlv-k8s-node-1  Successfully pulled image "abhishekk27/kube-pub:new"
      Normal  Created    5m58s  kubelet, dlv-k8s-node-1  Created container test
      Normal  Started    5m58s  kubelet, dlv-k8s-node-1  Started container test
    

    【讨论】:

    • 运行命令后状态显示完成 kubectl create -f app/node.yml 我需要运行更多命令来运行这个 pod ?
    • 这是真正的解决方案吗?
    • 如果你想要一个无限运行的容器,你需要更新你的镜像以有一个循环运行的任务......就像添加无限循环这样非常简单的事情会有所帮助......试试这个 yaml在您的测试中作为测试,您可以看到这将使您的容器无限运行.. apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: test name: test spec: containers: - command: - /bin/bash - -c - "while true; do :; done" image: abhishekk27/kube-pub:new name: test
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2018-10-03
    • 2020-10-28
    • 2020-04-24
    • 2020-02-28
    相关资源
    最近更新 更多