このセクションでは、emptyDir の Volume リソースについて紹介します。 emptyDir の Volume リソースは、Pod 用の一時的なディスク領域として利用することができます。ただし、Pod が再作成されるなどした場合には一時的なディスク領域も削除されます。また、ホスト上のファイルを参照することもできない Volume リソースとなります。

サンプルのマニフェストファイルを新規作成し、以下コードを記述します。

[root@kube-master sample-volume]# vi sample-emptydir.yaml 

spec の containers の volumeMounts に Volume のマウントパスを指定します。また、volumes に emptyDir を指定しています。ここでは、Volume のマウントパスとして、/cache ディレクトリを指定しています。

apiVersion: v1
kind: Pod
metadata:
  name: sample-emptydir
spec:
  containers:
    - name: nginx-container
      image: nginx:1.13
      volumeMounts:
      - mountPath: /cache
        name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

Master サーバーから 作成したマニフェストを実行し、Kubernetes クラスタ上にリソースを作成します。

[root@kube-master sample-volume]# kubectl apply -f sample-emptydir.yaml 
pod/sample-emptydir created
[root@kube-master sample-volume]# 

Master サーバーから Kubernetes クラスタ上の Pod リソースを確認します。

[root@kube-master sample-volume]# kubectl get pod sample-emptydir
NAME              READY   STATUS    RESTARTS   AGE
sample-emptydir   1/1     Running   0          10m
[root@kube-master sample-volume]# 

Master サーバーから Podの仮想ターミナルに接続します。

[root@kube-master sample-volume]# kubectl exec -it sample-emptydir bash
root@sample-emptydir:/#

Pod 上のディレクトリを確認します。ここでは、cache ディレクトリがあることが確認できます。

root@sample-emptydir:/# ls -la
total 8
drwxr-xr-x.   1 root root   41 Feb 11 07:35 .
drwxr-xr-x.   1 root root   41 Feb 11 07:35 ..
-rwxr-xr-x.   1 root root    0 Feb 11 07:35 .dockerenv
drwxr-xr-x.   2 root root 4096 Apr 26  2018 bin
drwxr-xr-x.   2 root root    6 Feb 23  2018 boot
drwxrwxrwx.   2 root root    6 Feb 11 07:35 cache
drwxr-xr-x.   5 root root  360 Feb 11 07:35 dev
drwxr-xr-x.   1 root root   66 Feb 11 07:35 etc
drwxr-xr-x.   2 root root    6 Feb 23  2018 home
drwxr-xr-x.   1 root root   45 Apr 26  2018 lib
drwxr-xr-x.   2 root root   34 Apr 26  2018 lib64
drwxr-xr-x.   2 root root    6 Apr 26  2018 media
drwxr-xr-x.   2 root root    6 Apr 26  2018 mnt
drwxr-xr-x.   2 root root    6 Apr 26  2018 opt
dr-xr-xr-x. 127 root root    0 Feb 11 07:35 proc
drwx------.   2 root root   37 Apr 26  2018 root
drwxr-xr-x.   1 root root   38 Feb 11 07:35 run
drwxr-xr-x.   2 root root 4096 Apr 26  2018 sbin
drwxr-xr-x.   2 root root    6 Apr 26  2018 srv
dr-xr-xr-x.  13 root root    0 Jan  6 13:59 sys
drwxrwxrwt.   1 root root    6 Apr 30  2018 tmp
drwxr-xr-x.   1 root root   66 Apr 26  2018 usr
drwxr-xr-x.   1 root root   19 Apr 26  2018 var
root@sample-emptydir:/cache#

Pod 内の cache ディレクトリに移動し、ファイルの作成します。cache ディレクトリにファイルが作成できることが確認できます。

root@sample-emptydir:/# cd cache/
root@sample-emptydir:/cache# ls -la
total 0
drwxrwxrwx. 2 root root  6 Feb 11 07:35 .
drwxr-xr-x. 1 root root 41 Feb 11 07:35 ..
root@sample-emptydir:/cache#

root@sample-emptydir:/cache# mkdir test
root@sample-emptydir:/cache#

root@sample-emptydir:/cache# ls -la
total 0
drwxrwxrwx. 3 root root 18 Feb 11 07:36 .
drwxr-xr-x. 1 root root 41 Feb 11 07:35 ..
drwxr-xr-x. 2 root root  6 Feb 11 07:36 test
root@sample-emptydir:/cache# 

Master サーバーから 作成したKubernetes クラスタ上の Pod リソースを削除します。

[root@kube-master sample-volume]# kubectl delete pod sample-emptydir
pod "sample-emptydir" deleted
[root@kube-master sample-volume]#