Kubernetes стал отраслевым стандартом для оркестровки контейнеров. Он обеспечивает необходимую абстракцию для успешного администрирования крупномасштабных контейнерных систем с четкими конфигурациями, простым методом развертывания и возможностями масштабирования. Как и любая другая система, журналы позволяют разработчикам видеть контейнеры и кластеры Kubernetes, с которыми они работают, и их важность очевидна во многих сбоях Kubernetes. Однако Kubernetes представляет собой отдельный набор проблем с журналированием. Журналы приложений могут помочь вам выяснить, что происходит внутри вашего приложения. Журналы очень полезны для устранения неполадок и отслеживания активности кластера. Функция ведения журнала присутствует практически во всех текущих программах. Контейнерные двигатели тоже созданы для ведения лесозаготовок. Публикация в стандартный поток вывода и стандартные потоки ошибок – самый простой и наиболее часто используемый вариант ведения журнала для контейнерных приложений. Эти журналы показывают, что происходит, и могут быть полезны для отладки проблем с главным узлом. К сожалению, эти журналы нельзя просмотреть с помощью команды kubectl; вместо этого их нужно просматривать прямо с компьютера. Возможно, вам потребуется подключиться к узлу напрямую по SSH, в зависимости от того, где вы размещаете компьютер. Это понимание позволяет вам наблюдать взаимосвязь между этими ресурсами и последствиями одного действия для другого. В этом руководстве мы проверяем различные способы отслеживания журналов в kubectl. Для выполнения всего этого процесса мы используем Ubuntu 20.04 LTS. Мы установили и запустили кластер minikube. Кроме того, kubectl уже установлен и настроен в нашей системе.
Базовое ведение журнала в Kubernetes с помощью подов
Изначально нам нужно создать файл конфигурации для подов с помощью команды touch. Мы назвали его «logs.yaml».
После выполнения файл можно будет увидеть в домашнем каталоге системы.
Журналы из операционного модуля – это, безусловно, самая обычная вещь, на которую вы хотели бы смотреть. Команда kubectl содержит операцию журнала, которая дает представление о ваших операционных модулях и предлагает различные варианты для быстрого получения того, что вам нужно. На следующих иллюстрациях мы будем использовать базовый контейнер, который печатает метку времени каждую секунду. Мы назвали его «примером» (отображается в строке №7).
Используйте следующую команду для запуска этого модуля:
$ kubectl create –f logs.yaml
Результат показывает, что он был создан эффективно. Давайте взглянем на журналы после того, как мы развернем этот модуль. Мы можем сделать это с помощью команды примера kubectl log, которая должна выдать следующий результат. Вам не нужно будет обращаться к узлам в кластере, если вы используете kubectl для получения журналов. Kubectl может отображать журналы только одного модуля за раз.
Теперь выполните следующую команду как:
$ kubectl log example
Базовое ведение журнала в Kubernetes с развертыванием
Изначально нам нужно создать файл конфигурации для развертываний с помощью команды touch. Мы назвали его «deploymentlog.yaml».
После выполнения файл можно будет увидеть в домашнем каталоге системы. Ниже приведен дескриптор развертывания:
Используйте следующую команду в терминале Ubuntu 20.04 для запуска этого развертывания:
$ kubectl create –f deploymentlog.yaml
Результат показывает, что он был создан эффективно. Каждый модуль теперь будет отображать свое имя, а также отметку времени. Используйте развертывание/пример журнала kubectl, чтобы отслеживать все эти различные модули и журналы их создания. К сожалению, будет выбрана только одна из капсул. Однако есть метод, позволяющий исследовать их все. Посмотрите на вышеупомянутую команду и выполните ее в терминале Ubuntu 20.04:
$ kubectl logs -f -l app=example
Флаг «–l» позволяет фильтровать результаты по метке. Мы могли видеть некоторые из наших модулей развертывания, потому что пометили их меткой примера. Флаг «–f» затем постоянно отображает вывод этих модулей. Теперь, когда мы получили их, нам нужно свести к минимуму количество выходящих журналов. Если вы выберете один модуль по умолчанию, он отобразит все. Если вы используете селектор для выбора нескольких модулей, он будет производить только 10 строк на модуль.
$ kubectl logs example --tail=10
Если вы используете выборку и хотите больше журналов на модуль, чем последние десять, просто увеличьте число «–tail» до соответствующего количества журналов. Если вы только выводите, журналы модуля группируются. Это не сводит воедино результаты. Теперь выполните в терминале команду, указанную ниже.
$ kubectl logs –c example
Флаг «–c» указывает, из какого контейнера должны быть получены журналы. Теперь выполните добавленную отображаемую команду в оболочке.
$ kubectl logs --timestamps example
Сообщения журнала часто находятся в конце, а метка времени – в начале, как вы можете видеть из приведенного выше примера. Это может помочь вам выяснить, откуда пришло сообщение журнала и когда что-то произошло, особенно если в тексте журнала нет встроенной отметки времени. Флаг «–timestamp» в команде kubectl добавляет к каждой записи временную метку.
Заключение
В целом, хвостовые журналы Kubernetes содержат много информации о состоянии вашего кластера и приложений. «Журналы Kubectl» хороши для начала работы с Kubernetes, но быстро демонстрируют свои ограничения. Надеюсь, эта статья помогло вам лучше ознакомиться с инструкцией по журналам kubectl и поможет вам при просмотре журналов в кластере Kubernetes.