У вас есть несколько вариантов чтения логов модулей GKE
из Stackdriver. Вот некоторые из них:
Чтение журналов
Чтобы читать записи журнала в журнале, вы можете выполнить любое из следующих действий:
Что касается:
Нужно ли мне делать что-то особенное, чтобы включить ведение журнала в кластере? А если нет, как мне получить доступ к журналам для определенного c развертывания / модуля / контейнера?
См.: Cloud.google.com: Ведение журнала: Контроль доступа
Ответ ниже:
Кроме того, эти журналы постоянны? Например, когда развертывание завершается, могу ли я получить доступ к этим журналам?
Да, вы все равно можете получить доступ к этим журналам, даже если развертывание было удалено. Вы все равно можете получить доступ к журналам, даже если удалите свой кластер. Журналы, хранящиеся в Stackdriver, имеют политики хранения , которые будут хранить журналы в течение установленного периода времени. См .:
Пожалуйста, посмотрите на пример ниже, который показывает, как получить доступ к журналам с помощью команды gcloud
:
Шаги:
- Создайте
Deployment
, который будет отправлять журналы в Stackdriver - Проверьте, хранятся ли журналы в Stackdriver
- Получите журналы из Stackdriver с помощью
gcloud
Создать развертывание
Следуйте инструкциям по Google Cloud Platform, чтобы создать Deployment
, который будет отправлять данные в Stackdriver:
Проверьте, находятся ли журналы в Stackdriver.
Журналы, экспортированные с помощью вышеуказанного развертывания, будут храниться в Stackdriver. Пример этого должен выглядеть так:
{
insertId: "REDACTED"
labels: {
k8s-pod/pod-template-hash: "545464fb5"
k8s-pod/run: "custom-metric-sd"
}
logName: "projects/REDACTED/logs/stderr"
receiveTimestamp: "2020-05-26T10:17:16.161949129Z"
resource: {
labels: {
cluster_name: "gke-logs"
container_name: "sd-dummy-exporter"
location: "ZONE"
namespace_name: "default"
pod_name: "custom-metric-sd-545464fb5-2rdvx"
project_id: "REDACTED"
}
type: "k8s_container"
}
severity: "ERROR"
textPayload: "2020/05/26 10:17:10 Finished writing time series with value: 0xc420015290
"
timestamp: "2020-05-26T10:17:10.356684667Z"
}
Вышеуказанная запись в журнале поможет создать команду gcloud
для получения только указанных журналов из Stackdriver.
Получите журналы из Stackdriver с помощью gcloud
Как вы указали:
Я пытался сделать что-то вроде записи журнала gcloud, прочитав "resource.labels. pod_id = "" ", но ничего не возвращается.
Тот факт, что ничего не возвращается, скорее всего связан с тем, что запрошенный ресурс не был найден с помощью использованной вами команды.
Чтобы получить эти журналы из Stackdriver, вызовите команду ниже:
$ gcloud logging read "resource.type=k8s_container AND resource.labels.container_name=sd-dummy-exporter"
Разделение вышеуказанной команды на более мелкие части:
resource.type=k8s_container
- он получит журналы с типом k8s_container
resource.labels.container_name=XYZ
- он получит журналы с указанным container_name
.
Эти части напрямую связаны с примером единственной записи журнала, упомянутой ранее.
Подсказка:
resources.labels.container_name
можно использовать для сбора журналов из нескольких модулей, поскольку на конкретный модуль c можно ссылаться с помощью pod_name
.