Неполный вывод хвоста из одного и того же файла в разных контейнерах в томе emptyDir Kubernetes
Чтобы проверить, синхронизируется ли файл в томе emptyDir между контейнерами, я использовал tail для наблюдения за одним и тем же файлом в двух контейнерах, и я наткнулся на следующее поведение:
Определение стручка:
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 в действии. Вluksa/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
Вопрос: это вызвано
- хвост
- низкая скорость ввода-вывода узлового диска
- Логика синхронизации тома Kubernetes
- что-то другое?
PS: Я также заметил, что cURLing порта модуля веб-службы во время записи index.html заставляет nginx возвращать пустое тело ответа.
1 ответ
Проблема с неполным выводом из контейнера вызвана nginx alpine
используется в определении стручка. Когда вы меняете изображение сnginx:alpine
к nginx
проблема исчезает из-за того, что в этих изображениях используются разные хвостовые двоичные файлы.
Синхронизация томов Kubernetes вряд ли вызовет проблему - как написано в emptyDir
документация
По умолчанию,
emptyDir
тома хранятся на любом носителе, поддерживающем узел - это может быть диск, SSD или сетевое хранилище, в зависимости от вашей среды.
Раздел, созданный emptyDir недолговечна и приложения не могут ожидать каких - либо SLAs производительности (Disk IOPS, например) из этого раздела так "2. Медленная скорость ввода - вывода диска узла" также может привести к такой проблеме, но на основе воспроизводства и изменения образа (то, что казалось для решения проблемы) могут быть исключены.