Я использую docker и kubernetes для развертывания демона. В daemonset yaml я установил эфемерное хранилище, как показано ниже:
resources:
requests:
ephemeral-storage: "100Gi"
Я применил этот yaml, ошибки не произошло, все выглядит нормально. Однако, хитрость в том, что моя файловая система имеет только 55 ГБ доступной емкости.
$ df -h | egrep -v "overlay|tmpfs|shm"
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 250G 196G 55G 79% / <--------
/dev/sdh2 1014M 221M 794M 22% /boot
/dev/sdh1 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home 1.6T 39M 1.6T 1% /home
Зашли в контейнер, тоже самое:
# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 250G 196G 55G 79% /
tmpfs 64M 0 64M 0% /dev
...
Как это случилось? Почему k8s посчитали, что контейнер может запросить эфемерное хранилище 100 ГиБ?
Когда я установил requests
в 200 ГиБ в yaml и повторно применил его, тогда модуль показывается в состоянии Terminating
, опишите это, найдено ниже событий:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 20s default-scheduler 0/1 nodes are available: 1 Insufficient ephemeral-storage.
Что имеет смысл.
Но все же, почему работало 100 запросов GiB?
версии программного обеспечения:
$ docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:24:18 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
[root@mc100]~/code/mc-log/deploy
$
[root@mc100]~/code/mc-log/deploy
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:23:11Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:13:49Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}