ведение журнала пода 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и перезапускаем кубелет. Это нужно сделать на всех узлах.

Другие вопросы по тегам