Когда я начал использовать kubernetes, и, следовательно, kubectl
, выясняет, как быстро просмотреть журналы моего POD, всегда был боли. Почему был глагол/существительное использование не то же самое? Как я знаю, если в POD работает более одного контейнера? Как отфильтровать любое из этого, кроме как с магией CLI, как овладеть
или awk.
? В этом посте я надеюсь пролить свет на множество способов, которыми вы сможете схватить журналы локально из ваших кластеров Kubernetes.
Если у вас нет доступных кластеров Kubernetes, не стесняйтесь использовать любой из них:
- https://kind.sigs.k8s.io/
- https://kubernetes.io/docs/tasks/tools/install-minikube/
- https://github.com/rancher/k3d
kubectl logs
Во-первых, самый простой из всех вариантов регистрации: kubectl logs
Вот несколько ямл ниже, который будет генерировать дату и время каждую секунду. Если у вас есть только один контейнер в POD, вы можете просто запустить Kubectl Logs Echo-Date
Чтобы увидеть весь вывод.
apiVersion: v1 kind: Pod metadata: name: print-date namespace: default spec: containers: - name: main image: alpine args: - /bin/sh - -c - > while true; do date sleep 1 done
Теперь, что происходит, когда вы добавляете второе изображение в POD? Давайте применим тот же YAML со вторым изображением, добавленным в POD.
apiVersion: v1 kind: Pod metadata: name: print-dates namespace: default spec: containers: - name: main image: alpine args: - /bin/sh - -c - > while true; do date sleep 1 done - name: sidecar image: alpine args: - /bin/sh - -c - > while true; do date sleep 1 done
Когда внутри одного POD есть несколько контейнеров, вы должны выбрать контейнер. Для того, чтобы увидеть, сколько контейнеров находятся в POD, вы можете запустить Kubectl Получить стручки
Отказ Ниже Готов
Поле указывает на то, сколько контейнеров входят и работают в POD.
NAME READY STATUS RESTARTS AGE print-date 1/1 Running 0 5m25s print-dates 2/2 Running 0 5m56s
Теперь вы можете получить журналы для любого контейнера: Kubectl Logs Print-Dates Sidecar
Отказ И в случае, если вы работаете с POD, чьи имена контейнеров вы не знаете, вот необычная команда, используя JSON PARSING: Kubectl Получить Pod Print-Dates -o json | JQ .spec.containers []. Имя
Хорошо, так что у нас есть какие-то базовые знания о том, как увидеть журналы, но я действительно хотел бы отфильтровать, что они входят в систему, некоторые и видят их потоковую прогулку к терминалу. На данный момент давайте вернемся к одному контейнеру POD, чтобы немного легче сделать команды.
Во-первых, давайте будем следовать журналам Live: Kubectl Logs Print - Date --follow
Далее, давайте фильтруем на основе меток времени: Kubectl Logs Print Date
Я хочу следовать этой информации без всех предыдущих журналов, утонувших моим терминалом в рядах данных, хотя: Kubectl Logs Print - Date --follow
Отказ
Итак, это довольно очевидно Kubectl Logs
Предоставляет много расширяемости о том, как просматривать журналы контейнера, но давайте сделаем это дальше и посмотрим на некоторые варианты создания сообщества.
кормовой
Стерн Популярный вариант с открытым исходным кодом для просмотра журналов POD по имени, пространству имен, времени и многих других вариантах. Вы можете думать об этом как о Kubectl Logs
Агрегатор. Это отличное решение при попытке отладить решение, которое может охватывать несколько стручков по пространству имен.
Чтобы установить на Mac: Brew Установить Стерн
Поскольку у нас есть два PODS, заполняющие журналы в пространстве имен по умолчанию, давайте начнем с просмотра оба из них одновременно: Stern -n по умолчанию Print-
. Добавляя Распечатать-
, мы ограничиваем журналы только для подвижников, которые предложены с помощью имени POD. Одно из великих вещей о Стерн
Это классифицирует журналы каждого POD как другой цвет, позволяющий легко различите между двумя. Это, возможно, лучшая функция, которую я столкнулся с отладкой.
Хотя этот вывод не является цветом, закодированным в расцеплении ниже, стоит отметить, что POD и контейнер добавляются в журналы:
print-date main Thu Oct 8 04:06:52 UTC 2020 print-dates main Thu Oct 8 04:06:52 UTC 2020 print-dates sidecar Thu Oct 8 04:06:53 UTC 2020 print-date main Thu Oct 8 04:06:53 UTC 2020
Стерн --help
Обеспечивает тонны действительно хороших вариантов для фильтрации стручков, поэтому я не буду слишком глубины с примерами. Однако я хотел бы показать пример выше для аналогичного решения печати с определенного времени. За исключением того, что мы будем печатать вывод для нескольких контейнеров сейчас.
- Печать по пространству имен:
Stern -n по умолчанию.
- Распечатать все стручки:
Стерн.
- Распечатайте последние 15 секунд как для журналов Pods:
Stern -t --since 15s print date
Определенно проверил Readme Для дополнительных примеров также.
kubectl плагины
Для окончательной итерации давайте посмотрим на kubectl плагины , которые в основном просто двухпозиточные занятия … kubectl-
. Трек это менеджер по пакетам, который позволяет легко установить их. Мы можем использовать kubectl хвост
Для достижения больших возможностей одинаковых возможностей ведения журнала как Стерн
Отказ
Хотя это может быть установлено Kubectl krew Установка хвоста
Github Reppo находится здесь Отказ
Для того, чтобы сравнить с кормовой
Вот в основном те же примеры:
- Печать по пространству имен:
Kubectl хвост - по умолчанию
- Распечатать все стручки:
kubectl хвост
- Распечатайте последние 15 секунд как для журналов Pods:
Kubectl Hail --pod Date-Date --Pod Print-Dates --since 15s
Обязательно проверите флаги с kubectl хвост --help
Чтобы увидеть все варианты потенциалов!
заворачивать
Несмотря на то, что ничто из этого не было точно новаторской информацией, я надеюсь, что она создала некоторую мышечную память об использовании Kubectl Logs
и показал решения с открытым исходным кодом, которые являются отличной альтернативой, поскольку вы становитесь более продвинутым пользователем K8S. Счастливое программирование!
слияние — это произносится kube
— Посмотреть
— тройник
— эль
:п
Оригинал: «https://dev.to/lucassha/kubectl-show-me-the-logs-1ld»