Неполный вывод хвоста из одного и того же файла в разных контейнерах в томе Kubernetes emptyDir - PullRequest
0 голосов
/ 03 апреля 2020

Чтобы проверить, синхронизирован ли файл в томе emptyDir между контейнерами, я использовал tail , чтобы наблюдать один и тот же файл в двух контейнерах, и наткнулся на следующее поведение:

Определение Pod :

apiVersion: v1
kind: Pod
metadata:
  name: fortune
spec:
  containers:
    - image: luksa/fortune
      name: html-generator
      volumeMounts:
        - name: html
          mountPath: /var/htdocs
    - image: nginx:alpine
      name: web-server
      volumeMounts:
        - name: html
          mountPath: /usr/share/nginx/html
          readOnly: true
      ports:
        - containerPort: 80
          protocol: TCP
  volumes:
    - name: html
      emptyDir: {}

Пример взят из книги Kubernetes in Action Марко Лукса. Изображение luksa/fortune просто записывает текст fortune в файл /var/htdocs/index.html внутри контейнера html-generator. Каждые 10 секунд записывается новый файл, в котором содержимое является выводом fortune.

Хвост того же файла в обоих контейнерах выдает иногда неполный ответ контейнера web-server .

Часть вывода контейнера html-generator:

kubectl exec -c html-generator -it fortune -- tail -f /var/htdocs/index.html

The very ink with which all history is written is merely fluid prejudice.
                -- Mark Twain

Часть вывода контейнера web-server

kubectl exec -c web-server -it fortune -- tail -f /usr/share/nginx/html/index.html

h all history is written is merely fluid prejudice.
                -- Mark Twain

Вопрос : это вызвано

  1. tail
  2. медленной скоростью ввода-вывода диска узла
  3. Kubernetes Volume Syn c Logi c
  4. что-то еще?

PS .: Я также отметил, что обрезать порт модуля веб-службы во время индекса. html при записи nginx возвращается пустое тело ответа.

1 Ответ

0 голосов
/ 09 апреля 2020

Проблема с неполным выводом из контейнера вызвана nginx alpine, использованным в определении модуля. Когда вы изменяете изображение с nginx:alpine на nginx, проблема исчезает из-за различных концевых двоичных файлов, используемых в этих изображениях.

Синхронизация томов Kubernetes c кажется маловероятной, как написано в emptyDir документация

По умолчанию тома emptyDir хранятся на любом носителе, поддерживающем узел - это может быть диск, SSD или сетевое хранилище, в зависимости от вашей среды.

Раздел , созданный emptyDir , является эфемерным, и приложения не могут ожидать никаких SLA производительности (например, Disk IOPS) от этого раздела, поэтому «2. низкая скорость ввода-вывода диска узла» может также может вызвать такую ​​проблему, но может быть исключено на основе воспроизведения и изменения изображения (что, казалось, решило проблему).

...