为了测试 emptyDir Volume 中的文件是否在容器之间同步,我使用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: {}
示例取自Marko Luksa的Kubernetes in Action一书。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
问题:这是由
- 尾巴
- 节点磁盘IO速度慢
- Kubernetes 卷同步逻辑
- 别的东西?
PS.:我还注意到,在写入 index.html 时卷曲 Web 服务 pod 端口会导致 nginx 返回一个空的响应正文。