Почему модуль Kubernetes не запускается?
Я пытался протестировать один сценарий, в котором модуль монтирует том и пытается записать в него один файл. Ниже упомянутый yaml отлично работает, когда я исключаю команду и аргументы. Однако с командой и аргументами происходит сбой с «crashloopbackoff». Команда описания не предоставляет много информации об ошибке. Что здесь не так?
Примечание. Я запускал этот yaml на katacoda.
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
1 ответ
Вы настроили свой модуль для запуска одной команды оболочки:
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt"]
Это означает, что модуль запускается, работает
echo 'test complete' > /var/testOut.txt
, а затем сразу выходит . С точки зрения kubernetes это крах.
Вы заменили стандартное поведение
nginx
image («запустить nginx») с помощью команды оболочки.
Если вы хотите, чтобы модуль продолжал работать, вам нужно настроить его на выполнение какой-либо длительной команды. Простое решение будет примерно таким:
command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt; sleep 3600"]
Это приведет к тому, что модуль будет спать в течение часа перед выходом, что даст вам время проверить результаты вашей команды оболочки.
Обратите внимание, что ваша команда оболочки не тестирует ничего полезного; ты смонтировал свой
mydir
громкость включена
/var/local/aaa
, но ваша команда оболочки пишет в
/var/testOut.txt
, поэтому он не использует объем.