Получите доступ к лог-файлам модуля Kubernetes изнутри? - PullRequest
0 голосов
/ 07 июня 2018

В настоящее время я выполняю миграцию устаревшего сервера в Kubernetes и обнаружил, что kubectl или панель инструментов показывает только последний файл журнала, а не более старые версии.Чтобы получить доступ к старым файлам, мне нужно подключиться к узлу ssh и найти его.

В дополнение к тому, что моя команда хочет ограничить доступ к самим узлам, потому что они будутзапуск модулей из разных команд и неограниченный доступ могут быть проблемой безопасности.

Итак, мой вопрос: могу ли я настроить Kubernetes (или образ Docker) так, чтобы эти старые (повернутые) файлы журналов хранились в некотором каталогедоступны изнутри самого модуля?

  • Конечно, в крайнем случае, я мог бы просто выполнить что-то вроде run_server.sh | tee /var/log/my-own.log при запуске модуля ... но затем, чтобы сделать это правильно, я 'Придется добавить всю функциональность ротации лог-файлов, в основном дублируя то, что Kubernetes уже делает.

1 Ответ

0 голосов
/ 07 июня 2018

Так что есть несколько способов и сценариев для этого.Если вы просто интересуетесь журналом того же модуля с момента последнего перезапуска, вы можете использовать флаг --previous для просмотра журналов:

kubectl logs -f <pod-name-xyz> --previous

Но так как в вашем случае вы заинтересованы в поискев журналах за один оборот, вот как вы можете это сделать.Добавьте контейнер с дополнительной тележкой к контейнеру вашего приложения:

 volumeMounts:
    - name: varlog
      mountPath: /tmp/logs
  - name: log-helper
    image: busybox
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/*.log']
    volumeMounts:
    - name: varlog
      mountPath: /tmp/logs
volumes:
  - name: varlog
    hpostPath: /var/log

Это позволит каталогу, в котором все журналы из каталога /var/log, от хоста до /tmp/log внутри контейнера, и команда обеспечит, чтобы содержимое всехфайлы сбрасываются.Теперь вы можете запустить:

kubectl logs <pod-name-abc> -c count-log-1

Это решение избавляет от доступа SSH, но все еще нуждается в доступе к kubectl и добавлении контейнера с коляской.Я до сих пор считаю, что это плохое решение, и вы рассматриваете один из вариантов из документации архитектуры журналирования на уровне кластера Kubernetes, например 1 или 2

...