0

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.htmlhtml-generatorfortune

両方のコンテナーで同じファイルをテーリングすると、コンテナーによる不完全な応答が出力されることがあり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. しっぽ
  2. ノードディスクの IO 速度が遅い
  3. Kubernetes ボリューム同期ロジック
  4. 他の何か?

PS .: また、index.html が書き込まれている間に Web サービス ポッド ポートを cURL すると、nginx が空の応答本文を返すことにも注意しました。

4

1 に答える 1