Рубрики
Uncategorized

Kubectl: Покажите мне журналы

Когда я начал использовать kubernetes, и, следовательно, Kubectl, выясняет, как быстро просмотреть мою стружку … с меткой Kubernetes, DevOps, Docker.

Когда я начал использовать kubernetes, и, следовательно, kubectl , выясняет, как быстро просмотреть журналы моего POD, всегда был боли. Почему был глагол/существительное использование не то же самое? Как я знаю, если в POD работает более одного контейнера? Как отфильтровать любое из этого, кроме как с магией CLI, как овладеть или awk. ? В этом посте я надеюсь пролить свет на множество способов, которыми вы сможете схватить журналы локально из ваших кластеров Kubernetes.

Если у вас нет доступных кластеров Kubernetes, не стесняйтесь использовать любой из них:

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»