【Kubernetes】emptyDirとは

スポンサーリンク

はじめに

KubernetesのemptyDirについて、どんなものなのか、使い方を紹介したいと思います。

emptyDirとは

emptyDirは、ボリュームのひとつで、Podが実行されている間だけ使える最も単純なボリュームです。

最初のボリュームの中身は空(empty)になります。

用途としては、

  • ダウンロードしたファイルの一時保管
  • 生成したデータのキャッシング
  • データ処理のワークスペース

など、永続的に保存する必要はないが、ストレージが欲しい場合に使えます。

Podが削除されると、empryDirのデータも削除されてしまうので注意してください。

使い方

下記のようにemptyDir: {}とすることで、emptyDirのボリュームを定義し、使うことができるようになります。

  volumes:
  - name: volume-name
    emptyDir: {}

あとは、ボリュームと同じ用途で使うことができます。

設定例としては、下記を参考にしてください。

apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
  - name: busybox
    image: busybox
    args:
      - sleep
      - "999"
    volumeMounts:
    - mountPath: /tmp
      name: emptydir-volume
  volumes:
  - name: emptydir-volume
    emptyDir: {}

使ってみる

試しにemptyDirを使ってみます。

作成するPod(pod.yml)は下記の通りです。

apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
  - name: busybox-1
    image: busybox:latest
    args:
      - sleep
      - "999"
    volumeMounts:
    - mountPath: /tmp
      name: emptydir-volume
  - name: busybox-2
    image: busybox:latest
    args:
      - sleep
      - "999"
    volumeMounts:
    - mountPath: /tmp
      name: emptydir-volume
  volumes:
  - name: emptydir-volume
    emptyDir: {}

Podの中に2つのコンテナが含まれており、それぞれにemptyDirのボリュームをマウントしています。

kubectl apply -f pod.yml

busybox-1コンテナに入り、ボリュームをマウントしているディレクトリにファイルを作成してみます。

kubectl exec -it myapp -c busybox-1 -- /bin/sh
/tmp # pwd
/tmp

/tmp # vi hoge.txt

/tmp # cat hoge.txt
hoge

busybox-2にも同じファイルが作られていることが確認できます。

kubectl exec -it myapp -c busybox-2 -- /bin/sh
/tmp # pwd
/tmp

/tmp # ls
hoge.txt

/tmp # cat hoge.txt
hoge

一度Podを削除して、再度Podを作成してみます。

kubectl delete pod myapp
kubectl apply -f pod.yml

先ほど作成したファイルは無くなっていることが確認できます。

kubectl exec -it myapp -c busybox-1 -- /bin/sh
/tmp # pwd
/tmp

/tmp # ls

参考

タイトルとURLをコピーしました