Чтобы проверить, синхронизирован ли файл в томе 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
Вопрос : это вызвано
- tail
- медленной скоростью ввода-вывода диска узла
- Kubernetes Volume Syn c Logi c
- что-то еще?
PS .: Я также отметил, что обрезать порт модуля веб-службы во время индекса. html при записи nginx возвращается пустое тело ответа.