我试着测试一个场景,在这个场景中,pod将挂载一个卷,并且它将尝试将一个文件写入其中。当排除命令和args时,下面提到的yaml工作得很好。然而,对于命令和args,它在“崩溃回退”中失败。describe命令没有为失败提供太多信息。这里怎么了?
注意:我在katacoda上运行这个yaml。
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描述命令输出:
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发布于 2022-01-08 13:49:26
您已经将pod配置为运行单个shell命令:
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt"]这意味着吊舱启动,运行echo 'test complete' > /var/testOut.txt,然后立即退出。从库伯内特斯的角度来看,这是一场撞车。
您已经用一个nginx命令替换了映像的默认行为("run“)。
如果您希望荚继续运行,您将需要安排它运行某种长时间运行的命令。一个简单的解决方案应该是:
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,因此它没有使用该卷。
https://stackoverflow.com/questions/70632482
复制相似问题