首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么库伯内特斯吊舱没能启动?

为什么库伯内特斯吊舱没能启动?
EN

Stack Overflow用户
提问于 2022-01-08 12:53:31
回答 1查看 223关注 0票数 0

我试着测试一个场景,在这个场景中,pod将挂载一个卷,并且它将尝试将一个文件写入其中。当排除命令和args时,下面提到的yaml工作得很好。然而,对于命令和args,它在“崩溃回退”中失败。describe命令没有为失败提供太多信息。这里怎么了?

注意:我在katacoda上运行这个yaml。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: voltest
  name: voltest
spec:
  replicas: 1
  selector:
    matchLabels:
      run: voltest
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: voltest
    spec:
      containers:
      - image: nginx
        name: voltest
        volumeMounts:
        - mountPath: /var/local/aaa
          name: mydir
        command: ["/bin/sh"]
        args: ["-c", "echo 'test complete' > /var/local/aaa/testOut.txt"]
      volumes:
      - name: mydir
        hostPath:
            path: /var/local/aaa
            type: DirectoryOrCreate

描述命令输出:

代码语言:javascript
复制
    Events:
  Type     Reason     Age                From                   Message
  ----     ------     ----               ----                   -------
  Normal   Scheduled  49s                default-scheduler      Successfully assigned default/voltest-78678dd56c-h5frs to controlplane
  Normal   Pulling    19s (x3 over 48s)  kubelet, controlplane  Pulling image "nginx"
  Normal   Pulled     17s (x3 over 39s)  kubelet, controlplane  Successfully pulled image "nginx"
  Normal   Created    17s (x3 over 39s)  kubelet, controlplane  Created container voltest
  Normal   Started    17s (x3 over 39s)  kubelet, controlplane  Started container voltest
  Warning  BackOff    5s (x4 over 35s)   kubelet, controlplane  Back-off restarting failed container
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-08 13:49:26

您已经将pod配置为运行单个shell命令:

代码语言:javascript
复制
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt"]

这意味着吊舱启动,运行echo 'test complete' > /var/testOut.txt,然后立即退出。从库伯内特斯的角度来看,这是一场撞车。

您已经用一个nginx命令替换了映像的默认行为("run“)。

如果您希望荚继续运行,您将需要安排它运行某种长时间运行的命令。一个简单的解决方案应该是:

代码语言:javascript
复制
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt; sleep 3600"]

这将导致荚在离开前睡上一个小时,让您有时间检查shell命令的结果。

请注意,您的shell命令没有测试任何有用的内容;您已经在/var/local/aaa上挂载了您的/var/local/aaa卷,但是您的shell命令正在写入/var/testOut.txt,因此它没有使用该卷。

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

https://stackoverflow.com/questions/70632482

复制
相关文章

相似问题

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