2015-11-18 6 views
5

imitieren kann Ich kann log-driver = syslog Befehlszeilenoption übergeben, Container-Protokolle an Syslog weiterzuleiten. Wie übergebe ich diese Docker-Argumente über den Kubernetes-YAML/JSON-Deskriptor?Wie "--log-driver = syslog" in Kubernetes

Antwort

3

Beginnend mit der verfügbaren Dokumentation: in Ihrem Fall auf logging und volumes. Wenn man diese beiden Quellen zusammen kommen wir in etwa wie folgt:

... 
containers: 
    - name: syslogtest 
    image: ubuntu:14.04 
    volumeMounts: 
     - name: logvol 
     mountPath: /dev/log 
     readOnly: false 
volumes: 
    - name: logvol 
    source: 
     hostDir: 
     path: /dev/log 
... 
+0

Ich bin mit der Option --log-driver = syslog docker Option anstatt Montage Volumes betrachten. Auf diese Weise kann ich dem Best Practice folgen, ein Docker-Image so zu erstellen, dass der Container sich in stdout/stderr, aber in der Cloud einloggt, indem ich --log-driver = syslog/fluentd einnehme und die Logs zu einem zentralen Logging-Store wie elasticsearch sammle. –

+0

Wie gesagt, oben ist die beste Praxis, siehe auch Beispiel https://github.com/kubernetes/kubernetes/blob/release-1.0/contrib/logging/fluentd-sidecar-gcp/README.md –

+0

oh ich sehe. Ich werde einen Blick darauf werfen .. Danke @Michael –

1

Ich glaube nicht, Kubernetes solche --log-Treiberoptionen in pod JSON-Datei tun müssen. Nach meiner Erfahrung können Sie diese Einstellung im Andockdienst festlegen. d.h überprüfen

/etc/systemd/system/docker.service 

und ExecStart =/usr/bin/Docker Daemon --log-driver = json-Datei blablabla gesetzt. Weitere Informationen erhalten Sie hier: https://docs.docker.com/engine/admin/logging/overview/#configure-logging-drivers

weiter mehr, wenn Sie diesen --log-Treiber nicht einstellen, wird standardmäßig die JSON-Datei erstellt, die alle Protokolle Ihrer Container in kubernetes Pods sammelte, können Sie finden Sie diese Dateien auf

your_docker_runtime_root/docker/containers/container_id/container_id-json.json