ведение журнала пода kubernetes нарушено драйвером журналирования журнала
Похоже, что ведение журнала модуля journald (команда 'kubectl logs') не работает с kubernetes v1.18.x. Есть ли способ заставить это работать с v1.18.x? Я настроил многоузловой кластер с драйвером ведения журнала докеров как "journald" (используя /etc/docker/daemon.json) и использую systemd-journal-gatewayd с методом pull для агрегирования исторических журналов. Однако меня очень интересует возможность отслеживать текущие журналы, используя "журналы kubectl" или "журналы kubectl -l" app=label --prefix -f "(для журналов всего кластера).
# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
# docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:20:16 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:23:58 2018
OS/Arch: linux/amd64
Experimental: false
# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
Запуск "журналов kubectl" дает следующую ошибку:
# kubectl logs <pod-name>
failed to try resolving symlinks in path "/var/log/pods/default_<pod-name>_xxxx/<container-name>/0.log": lstat /var/log/pods/default_<pod-name>_xxxx/<container-name>/0.log: no such file or directory
1 ответ
После того, как вы изменили драйвер ведения журнала, расположение журналов изменилось на журнал хоста. Пока что журналы могут быть получены докером, но вы должны сообщить kubelet об изменениях.
Вы можете сделать это, пройдя --log-dir=/var/log
кубелет. После добавления флага вы запустилиsystemctl daemon-reload
и перезапускаем кубелет. Это нужно сделать на всех узлах.