Почему модуль 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 это крах.

Вы заменили стандартное поведение nginximage («запустить nginx») с помощью команды оболочки.

Если вы хотите, чтобы модуль продолжал работать, вам нужно настроить его на выполнение какой-либо длительной команды. Простое решение будет примерно таким:

      command: ["/bin/sh"]
args: ["-c", "echo 'test complete' > /var/testOut.txt; sleep 3600"]

Это приведет к тому, что модуль будет спать в течение часа перед выходом, что даст вам время проверить результаты вашей команды оболочки.


Обратите внимание, что ваша команда оболочки не тестирует ничего полезного; ты смонтировал свой mydirгромкость включена /var/local/aaa, но ваша команда оболочки пишет в /var/testOut.txt, поэтому он не использует объем.

Другие вопросы по тегам