Kubernetes에서 로그를 보려고 해도 "no space left on device"라고 불린다



Minikube 이야기



직장에서 Minikube를 사용할 때의 이야기.
어느 때 갑자기 이런 메시지가 나왔습니다.
$ kubectl log -f hogehoge-controller-xxx
failed to watch file "/var/log/pods/hogehoge/hogehoge-controller/1.log": no space left on device

상황으로서는 복수의 컨테이너를 몇개나 출시해, 로그 축제가 되고 있는 것 같은 환경에서 Minikube인 것도 물론 로컬 환경
이것을 조사해도 영어 밖에 나오지 않기 때문에 일본어로 정리해 두려고 생각합니다.

Chk.1 정말 디스크 여유 공간이 없습니다.



알아보자
$ minikube ssh

からの

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
tmpfs            6344536    464280   5880256   8% /
devtmpfs         3454136         0   3454136   0% /dev
tmpfs            3524740         0   3524740   0% /dev/shm
tmpfs            3524740     34288   3490452   1% /run
tmpfs            3524740         0   3524740   0% /sys/fs/cgroup
tmpfs            3524740        12   3524728   1% /tmp
/dev/sda1       17784772  12684384   4060148  76% /mnt/sda1 <=ここが大事
/Users         488245288 148308708 339936580  31% /Users
$
<=ここが大事 로 하고 있는 「/mnt/sda1」의 빈 용량이 Docker 엔진이 사용하는 스페이스의 모양.
이 예에서는 80% 미만이므로 여유가 있습니다. 따라서 디스크 공간에는 문제가 없으며 다른 문제처럼 보입니다.

만약 여기가 100%라든지 95%라든가라면 정말로 디스크 용량이 부족하기 때문에 자기 책임 에 있어서
$ minikube ssh
$ docker system prune -a

등으로 정리 해주세요. 다만, 상기는 바르스 동등의 파괴적 클린 업이므로 소중한 DockerImage가 있는 경우는 적시에 바꾸어 주세요.

Chk.2 디스크 공간이 충분하지만 오류가 발생합니다.



이것이 본고의 본제.
stackoverflow적인 해외 서버로 화제에 오르고 있었습니다.
htps : /// r ゔぇr ふぁる lt. 코 m / 쿠에 s 치온 s / 963529 / 미니 쿠베 k8s - 쿠베 ctl - ぁ ぇ d - 와 t ch - ぃ ぇ - s Pase - ft - 온 - ゔ

무엇을 말하는가 하면 fs.inotify.max_user_watches = 파일 시스템적으로 유저가 감시할 수 있는 파일수의 상한
그것이 기본적으로 한없이 적게 설정되어 있기 때문에 문제가 일어나요! 라고 하는 것 같습니다.

그래서 여기에서 대답되고 있는 것이 어디까지 정답인지는 불명합니다만,
성공할 때까지 2배씩 늘리면서 시도해 보세요. 라는 것

사실

fs.inotify.max_user_watches 변경



minikube 안에서 조작합니다.

우선 지금의 설정을 확인
$ minikube  ssh

...中略...

$ sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192

8192. . . 적다. . . 의지도 모르는 웃음
앱 단체가 아니라 OS로서의 감시수이므로 정말 말할 수 없습니다만 이것을 2배로 설정합니다.

※ 어바웃에 2배 해도 괜찮습니다! (이유는 후술)
sudo sysctl fs.inotify.max_user_watches=16000

이 상태에서 한 번 시도해, 변하지 않는 것 같으면 더 2배로. . . 라고 말한 상태로 늘려 보세요.
그래도 안된다면 더 다른 원인이라고 생각되지만, 나는 만나지 않습니다.

후술:아바웃에 2배란



왜 아바웃에 2배로 해도 좋을까.
이것은 이것이 휘발성 설정이기 때문입니다.

minikube stop이라든가 해 버리면 리셋되어 버립니다.
그래서 로컬 환경인 것도 기다리고, 이상해지면 리셋하고 제대로 설정하면 됩니다.

엄밀히 말하면 2의 승수로 설정하는 것이 좋습니다.



저는 최근 제품 개발을 통해 Kubernetes, Istio, Docker, YAML 등의 핫 토픽을 만날 기회가 많습니다. 어려운, 하지만 깊고 재미있는 세계를 볼 수 있다고 생각합니다.

수많은 OSS에 뒷받침된 차세대 시스템 개발을 Qiita와 같은 미디어를 통해 보치보치 유포하고 있으므로, 꼭 팔로우해 보세요!

좋은 웹페이지 즐겨찾기