【问题标题】:container does not start with status CrashLoopBackOff容器不以状态 CrashLoopBackOff 开始
【发布时间】:2018-10-17 20:44:24
【问题描述】:

我正在尝试在 kubernetes 集群中运行一个简单的 ubuntu 容器。它继续以 CrashLoopBackOff 状态失败。我什至看不到任何日志以找到它的原因。

我的 yaml 文件如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ubuntu
  labels:
     app: jubuntu
spec:
    selector:
      matchLabels:
        app: jubuntu
    template:
      metadata:
         labels:
            app: jubuntu
      spec:
         containers:
            - name: ubuntu
              image: ubuntu

【问题讨论】:

  • 如果你运行kubectl describe pod <your-pod-name>,它会说什么?

标签: kubernetes containers


【解决方案1】:

那是因为您使用的是Deployment,它假定您有一个长时间运行的任务。在您的情况下,它启动容器并立即退出,因为那里没有什么可做的。换句话说,这种部署没有多大意义。您可以在containers: 字段中添加以下内容以查看它运行(仍然没用,但至少您不再看到它崩溃了):

command:
- sh
- '-c'
- "while true; do echo working ; sleep 5; done;"

另见this troubleshooting guide

为方便起见,如果您不想通过编辑 YAML 清单来执行此操作,也可以使用以下命令:

$ kubectl run --image=ubuntu -- sh while true; do echo working ; sleep 5; done;

如果你超级好奇并想检查它是否相同,那么你可以将以下内容附加到运行命令中:--dry-run --output=yaml(在--image 之后,-- sh 之前)。

【讨论】:

  • 整个想法是让 pod 使用 vanila ubuntu 运行,这样我就可以登录它并在那里安装一些工具.. 我真的不需要它作为部署,但即使在更改之后pod 的类型,问题依旧。
  • 感谢您提出我所缺少的建议。进一步搜索我遇到这个 [link] stackoverflow.com/questions/31870222/… 的文章
  • 是的,这个答案和我上面提供的一样,只是在 YAML 中,你已经在 CLI 上得到了它。是的,你是对的,从技术上讲,这同样适用于吊舱。 kubelet 注意到容器退出并认为它坏了,所以重新启动它,但由于它不是一个长时间运行的进程(while 循环或简单地睡眠)它实际上从未出现过。
  • 用它更新了答案。两者是等价的。
猜你喜欢
  • 2021-11-27
  • 2020-05-23
  • 2023-03-26
  • 1970-01-01
  • 2020-10-26
  • 2014-09-14
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多