emptyDir ボリューム内のファイルがコンテナー間で同期されているかどうかをテストするために、tailを使用して 2 つのコンテナーで同じファイルを観察したところ、次の動作に遭遇しました。
ポッドの定義:
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
画像は、コンテナー内のファイルに幸運のテキストを書き込むだけです。10 秒ごとに、コンテンツが の出力である新しいファイルが書き込まれます。/var/htdocs/index.html
html-generator
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 サービス ポッド ポートを cURL すると、nginx が空の応答本文を返すことにも注意しました。