Openshift3.11で「The node was low on resource: ephemeral-storage. 」エラーが発生しBuildができない

# はじめに

minishift v1.34.1(openshift 3.11)にて
何度かPodのリビルドを続けていると「The node was low on resource: ephemeral-storage.」エラーが発生してリビルドできなくなりました。

```console
Status:
    The node was low on resource: ephemeral-storage. Container docker-build was using 16Ki, which exceeds its request of 0.  
```

# ディスクスペースの確認

minishift v1.34.1起動時のディスク領域チェックでは

```console
-- Checking available disk space ... 79% used OK
```
と出ていました。

具体的にどのような使われ方をしているか`minishift ssh`でDockerに入りディスク領域を調べます。

```console
[tak@centos7 ~]$ minishift ssh
[docker@minishift ~]$ df
Filesystem          1K-blocks     Used Available Use% Mounted on
/dev/mapper/live-rw  10190100   740772   9328132   8% /
devtmpfs              5091704        0   5091704   0% /dev
tmpfs                 5119112        0   5119112   0% /dev/shm
tmpfs                 5119112   307140   4811972   6% /run
tmpfs                 5119112        0   5119112   0% /sys/fs/cgroup
/dev/sr0               363294   363294         0 100% /run/initramfs/live
/dev/sda1            60385480 48366396  12019084  81% /mnt/sda1
tmpfs                 1023824        0   1023824   0% /run/user/1000
```
当初の状態が分からないので何とも言えませんが…
`/mnt/sda1`が作成しようとしているイメージに対し少ない状況です。

ちなみに起動では60GBを与えています。

```console
[tak@centos7 ~]$ minishift start --disk-size 60GB --memory 6GB --cpus 2
```

# 回避方法１：ディスクを増やす(笑)...失敗

何も考えずディスクを増やすとまぁ回避できますよね。

```console
[tak@centos7 ~]$ minishift start --disk-size 80GB --memory 6GB --cpus 2
```

20GB上乗せして起動してみた際のディスク領域チェック結果は以下の通りです。

```console
-- Checking available disk space ... 81% used !!! OK
```

あれあれ…どうやら`/mnt/sda1`の結果を表示しており、`--disk-size`で増やしても効いてないっぽいですね（汗

```console
[tak@centos7 ~]$ minishift ssh
[docker@minishift ~]$ df
Filesystem          1K-blocks     Used Available Use% Mounted on
/dev/mapper/live-rw  10190100   737232   9331672   8% /
devtmpfs              5091704        0   5091704   0% /dev
tmpfs                 5119112        0   5119112   0% /dev/shm
tmpfs                 5119112    20232   5098880   1% /run
tmpfs                 5119112        0   5119112   0% /sys/fs/cgroup
/dev/sr0               363294   363294         0 100% /run/initramfs/live
/dev/sda1            60385480 48366928  12018552  81% /mnt/sda1
tmpfs                 1023824        0   1023824   0% /run/user/1000
```

ん？増えてない。

# 回避方法２：無駄なImageを消し空き領域を確保する

本来論としてはこっちだよね。ということで無駄なImageを削除し空き領域を増やします。

```console
[docker@minishift ~]$ docker images
REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE
172.30.1.1:5000/test-fess/fess                           13.4.0              18f9e8db0b08        6 hours ago         2.02 GB
docker.io/openshift/origin-control-plane                 v3.11.0             3fad55d0b2bc        25 hours ago        831 MB
docker.io/openshift/origin-hypershift                    v3.11.0             9918b48caff6        25 hours ago        551 MB
docker.io/openshift/origin-hyperkube                     v3.11.0             593fa6cbb593        25 hours ago        510 MB
docker.io/openshift/origin-cli                           v3.11.0             c5caf3700de6        25 hours ago        385 MB
<none>                                                   <none>              2df9061d9027        5 days ago          1.51 GB
<none>                                                   <none>              613f7ad01fc0        5 days ago          1.96 GB
<none>                                                   <none>              54ee1668f60d        6 days ago          1.51 GB
<none>                                                   <none>              8c34875e82ee        7 days ago          1.96 GB
<none>                                                   <none>              69e3b9481ce3        7 days ago          1.51 GB
docker.io/openshift/origin-node                          v3.11.0             ae0264e3c7ee        10 days ago         1.19 GB
docker.io/openshift/origin-control-plane                 <none>              ce4e10190f41        10 days ago         831 MB
docker.io/openshift/origin-docker-builder                v3.11.0             1db44ea65bc5        10 days ago         462 MB
docker.io/openshift/origin-haproxy-router                v3.11.0             042c0b3dd43e        10 days ago         411 MB
docker.io/openshift/origin-hypershift                    <none>              8ce0da355fac        10 days ago         551 MB
docker.io/openshift/origin-pod                           v3.11.0             1d8edff9b53c        10 days ago         263 MB
docker.io/openshift/origin-docker-registry               v3.11.0             875b808526a0        8 months ago        310 MB
docker.io/openshift/origin-web-console                   v3.11.0             be30b6cce5fa        12 months ago       339 MB
docker.io/openshift/origin-service-serving-cert-signer   v3.11               47dadf9d43b6        12 months ago       276 MB
```

実際にイメージを消すとどうなるのか確認してみましょう。
目下チャレンジ中のFess(IMAGE ID:`18f9e8db0b08`)を消します。

```console
[docker@minishift ~]$ docker rmi 18f9e8db0b08
Untagged: 172.30.1.1:5000/test-fess/fess:13.4.0
Deleted: sha256:18f9e8db0b08f1fc89b2e9e4b91155bf76ac4ef4327ddc187ff2ac0af78eecd9
Deleted: sha256:421699e9e96fd96bc94514f63a6f95c1b0cd227469aac94a2be97c9abc183c37
：
Deleted: sha256:28c59e17fba422b953b6a798ea3c4ef3810ed30d2f2d55034e7b2afb7abca25c
Deleted: sha256:87b68ee0cb1ae89dc14deaf24268f327cc69ca4d75a6d05c106fe24cbebb66a2
Deleted: sha256:2e6f13bce48836ea3db2009e6ccafa21b52a5bc9a94de7669a908792fda64ca9
Deleted: sha256:83950d1edbaf18e9874bd954f1818030afc686990c439422d5254dcdf8aad953
[docker@minishift ~]$ df
Filesystem          1K-blocks     Used Available Use% Mounted on
/dev/mapper/live-rw  10190100   737276   9331628   8% /
devtmpfs              5091704        0   5091704   0% /dev
tmpfs                 5119112        0   5119112   0% /dev/shm
tmpfs                 5119112    28440   5090672   1% /run
tmpfs                 5119112        0   5119112   0% /sys/fs/cgroup
/dev/sr0               363294   363294         0 100% /run/initramfs/live
/dev/sda1            60385480 46851424  13534056  78% /mnt/sda1
tmpfs                 1023824        0   1023824   0% /run/user/1000
```

`/mnt/sda1`の空き領域が少し増えました。(81% → 78%)

怪しい使ってなさそうな中間イメージが多数あるので消します。

```console
[docker@minishift ~]$ docker rmi 2df9061d9027 613f7ad01fc0 54ee1668f60d 8c34875e82ee 69e3b9481ce3
Error response from daemon: conflict: unable to delete 2df9061d9027 (must be forced) - image is being used by stopped container f4cc480e3848
Error response from daemon: conflict: unable to delete 613f7ad01fc0 (must be forced) - image is being used by stopped container 1c2d6d5cfb0a
Error response from daemon: conflict: unable to delete 54ee1668f60d (must be forced) - image is being used by stopped container b9ae0bae20d3
Error response from daemon: conflict: unable to delete 8c34875e82ee (must be forced) - image is being used by stopped container 3c5c19f843f6
Error response from daemon: conflict: unable to delete 69e3b9481ce3 (must be forced) - image is being used by stopped container b40662336d85
```

あれ…使ってる？
では強権発動(`-f`)

```console
[docker@minishift ~]$ docker rmi -f 2df9061d9027 613f7ad01fc0 54ee1668f60d 8c34875e82ee 69e3b9481ce3
Deleted: sha256:2df9061d90277de098c29a7bbe95e43467645322f86db9ec6f05276fa6c7955d
Deleted: sha256:52e750df79d4fb658190b5561ac5abec0d71907db3c9ae1dc61b790b52605248
：
Deleted: sha256:a1c3dcffb385ac34f75b4d20c08bad683bd145f3566ba7a27e5b5125efdc76de
Deleted: sha256:1a6b802d187bdab95c4f3fe011d973706a3cfaae093a7409528f4c9dc1f4b884
Deleted: sha256:88ba605b06ba70275740312b05b6272a0e234ca18e29a7c873d4c6a9144e1513
Deleted: sha256:a0b6d1db4580647aede85c2f998a8f078286280c58c16bd7bdfeb681b19ba071
[docker@minishift ~]$ df
Filesystem          1K-blocks     Used Available Use% Mounted on
/dev/mapper/live-rw  10190100   737320   9331584   8% /
devtmpfs              5091704        0   5091704   0% /dev
tmpfs                 5119112        0   5119112   0% /dev/shm
tmpfs                 5119112    28456   5090656   1% /run
tmpfs                 5119112        0   5119112   0% /sys/fs/cgroup
/dev/sr0               363294   363294         0 100% /run/initramfs/live
/dev/sda1            60385480 46850364  13535116  78% /mnt/sda1
tmpfs                 1023824        0   1023824   0% /run/user/1000
```

変わってない…。はて？合計8.45GBのImage削除効果はどこにあったのでしょうか？？？
そもそもProjectを削除したのに`/mnt/sda1`が45GBも消費されているのは何故なんでしょうか？

```console
[docker@minishift ~]$ cd /mnt/sda1
[docker@minishift sda1]$ sudo du -m | sort -n
：
1	./var/lib/minishift/base/openshift.local.pv/registry/docker/registry/v2/repositories/fess/fess/_layers/sha256
：
31348	./var/lib/minishift/base/openshift.local.pv/registry/docker/registry/v2/blobs
31348	./var/lib/minishift/base/openshift.local.pv/registry/docker/registry/v2/blobs/sha256
32818	./var/lib/minishift/base/openshift.local.pv
32818	./var/lib/minishift/base/openshift.local.pv/registry
32818	./var/lib/minishift/base/openshift.local.pv/registry/docker
32818	./var/lib/minishift/base/openshift.local.pv/registry/docker/registry
32818	./var/lib/minishift/base/openshift.local.pv/registry/docker/registry/v2
32820	./var/lib/minishift/base
32935	.
32935	./var
32935	./var/lib
32935	./var/lib/minishift
[docker@minishift sda1]$ exit
```

結果を眺めていると以前作成したProject名のディレクトリもチラホラ
Openshift上でProject消してもディスク上からは消えていない疑惑が…

この辺情報入手できたら記載していきたいと思います。


# 回避方法３：minishiftなので一回消す(笑)…最悪

本番環境では対応できないけどminishiftならではの対処法。
それはminishiftを一度消してクリアする。

```console
[tak@centos7 ~]$ minishift stop
Stopping the OpenShift cluster...
Cluster stopped.
[tak@centos7 ~]$ minishift delete
You are deleting the Minishift VM: 'minishift'. Do you want to continue [y/N]?: y
Removing entries from kubeconfig for cluster: 192-168-42-42:8443
Deleting the Minishift VM...
Minishift VM deleted.
[tak@centos7 ~]$ minishift start --disk-size 60GB --memory 6GB --cpus 2
-- Starting profile 'minishift'
-- Check if deprecated options are used ... OK
-- Checking if https://github.com is reachable ... OK
-- Checking if requested OpenShift version 'v3.11.0' is valid ... OK
-- Checking if requested OpenShift version 'v3.11.0' is supported ... OK
-- Checking if requested hypervisor 'kvm' is supported on this platform ... OK
-- Checking if KVM driver is installed ... 
   Driver is available at /usr/local/bin/docker-machine-driver-kvm ... 
   Checking driver binary is executable ... OK
-- Checking if Libvirt is installed ... OK
-- Checking if Libvirt default network is present ... OK
-- Checking if Libvirt default network is active ... OK
-- Checking the ISO URL ... OK
-- Checking if provided oc flags are supported ... OK
-- Starting the OpenShift cluster using 'kvm' hypervisor ...
-- Minishift VM will be configured with ...
   Memory:    6 GB
   vCPUs :    2
   Disk size: 60 GB
-- Starting Minishift VM .............
```

やっぱり`--disk-size`、`--memory`、`--cpus`は最初じゃないと効かないのね

記録としてminishift構築初期のdf結果を載せておきます。

```console
[tak@centos7 ~]$ minishift ssh
[docker@minishift ~]$ df
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/mapper/live-rw  10190100  737316   9331588   8% /
devtmpfs              3027480       0   3027480   0% /dev
tmpfs                 3054888       0   3054888   0% /dev/shm
tmpfs                 3054888   20220   3034668   1% /run
tmpfs                 3054888       0   3054888   0% /sys/fs/cgroup
/dev/sr0               363294  363294         0 100% /run/initramfs/live
/dev/sda1            60385480 3514896  56870584   6% /mnt/sda1
tmpfs                  610980       0    610980   0% /run/user/1000
```

# 最後に

今回は最悪の手段で領域確保を強行してしまいましたが
いずれまた訪れるであろうディスク領域枯渇時には対処できるよう
情報あさってみます。