我試圖測驗一種場景,其中 pod 將安裝一個卷,它會嘗試向其中寫入一個檔案。當我排除命令和引數時,下面提到的 yaml 作業正常。但是,對于命令和引數,它會因“crashloopbackoff”而失敗。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
uj5u.com熱心網友回復:
您已將 pod 配置為運行單個 shell 命令:
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt"]
這意味著 pod 啟動、運行echo 'test complete' > /var/testOut.txt,然后立即退出。從 Kubernetes 的角度來看,這是一個崩潰。
你已經更換了的默認行為nginx的影像(“運行Nginx的”)的shell命令。
如果您希望 pod 繼續運行,您需要安排它運行某種長時間運行的命令。一個簡單的解決方案是這樣的:
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt; sleep 3600"]
這將導致 pod 在退出前休眠一個小時,讓您有時間檢查 shell 命令的結果。
請注意,您的 shell 命令沒有測驗任何有用的東西;您已將mydir卷安裝在上/var/local/aaa,但您的 shell 命令正在寫入/var/testOut.txt,因此它沒有使用該卷。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/406324.html
標籤:
