Есть ли способ сделать системный журнал из контейнера в базовый узел k8s? - PullRequest
1 голос
/ 30 июня 2019

Я хочу вести системный журнал из контейнера на узел хоста -

Targeting fluentd (@ 127.0.0.1: 5140), который работает на узле - https://docs.fluentd.org/input/syslog

например, системный журнал от hello-сервер к узлу (в котором размещены все эти пространства имен)

Я хочу выводить системный журнал из контейнера hello-сервера на fluentd, работающий на узле (@ 127.0.0.1: 5140).

kubectl get pods --all-namespaces
NAMESPACE     NAME                                             READY   STATUS    RESTARTS   AGE
default       hello-server-7d8589854c-r4xfr                    1/1     Running   0          21h
kube-system   event-exporter-v0.2.4-5f7d5d7dd4-lgzg5           2/2     Running   0          6d6h
kube-system   fluentd-gcp-scaler-7b895cbc89-bnb4z              1/1     Running   0          6d6h
kube-system   fluentd-gcp-v3.2.0-4qcbs                         2/2     Running   0          6d6h
kube-system   fluentd-gcp-v3.2.0-jxnbn                         2/2     Running   0          6d6h
kube-system   fluentd-gcp-v3.2.0-k58x6                         2/2     Running   0          6d6h
kube-system   heapster-v1.6.0-beta.1-7778b45899-t8rz9          3/3     Running   0          6d6h
kube-system   kube-dns-autoscaler-76fcd5f658-7hkgn             1/1     Running   0          6d6h
kube-system   kube-dns-b46cc9485-279ws                         4/4     Running   0          6d6h
kube-system   kube-dns-b46cc9485-fbrm2                         4/4     Running   0          6d6h
kube-system   kube-proxy-gke-test-default-pool-040c0485-7zzj   1/1     Running   0          6d6h
kube-system   kube-proxy-gke-test-default-pool-040c0485-ln02   1/1     Running   0          6d6h
kube-system   kube-proxy-gke-test-default-pool-040c0485-w6kq   1/1     Running   0          6d6h
kube-system   l7-default-backend-6f8697844f-bxn4z              1/1     Running   0          6d6h
kube-system   metrics-server-v0.3.1-5b4d6d8d98-k7tz9           2/2     Running   0          6d6h
kube-system   prometheus-to-sd-2g7jc                           1/1     Running   0          6d6h
kube-system   prometheus-to-sd-dck2n                           1/1     Running   0          6d6h
kube-system   prometheus-to-sd-hsc69                           1/1     Running   0          6d6h

По какой-то причине k8s не позволяет нам использовать встроенный драйвер системного журнала docker run --log-driver syslog.

Кроме того, k8s не позволяет мне подключаться к базовому хосту с помощью --network = "host"

Кто-нибудь пробовал что-нибудь подобное?Может быть, было бы проще удаленно вести системный журнал, чем пытаться использовать базовый системный журнал, работающий на каждом узле?

1 Ответ

2 голосов
/ 30 июня 2019

На самом деле вы видите Агент регистрации Stackdriver . Согласно документации на https://kubernetes.io/docs/tasks/debug-application-cluster/logging-stackdriver/#prerequisites:

Если вы используете GKE и в вашем кластере включено ведение журнала Stackdriver, вы не сможете изменить его конфигурацию, поскольку он управляется и поддерживается GKE. Однако вы можете отключить интеграцию по умолчанию и развернуть свою собственную.

Затем в документации приведен пример добавления вашего собственного беглого DaemonSet с помощью пользовательского ConfigMap. Вам нужно было бы запустить собственный fluentd, чтобы вы могли настроить вход системного журнала для https://docs.fluentd.org/input/syslog.

Затем, поскольку fluentd работает как DaemonSet, вы должны настроить Сервис для предоставления его другим модулям и затем разрешить подключение к нему. Если вы используете официальный вышестоящий DaemonSet с https://github.com/fluent/fluentd-kubernetes-daemonset, то сервис может выглядеть следующим образом:

apiVersion: v1
kind: Service
namespace: kube-system
metadata:
  name: fluentd
spec:
  selector:
    k8s-app: fluentd-logging
  ports:
  - protocol: UDP
    port: 5140
    targetPort: 5140

Тогда ваши приложения могут войти в систему на fluentd.kube-system:5140 (см. Использование DNS на https://kubernetes.io/docs/concepts/services-networking/service/#dns).

...