2016-06-01 3 views
0

Ich habe mehrere Microservices auf Kubernetes läuft. Jeder Microservice ist ein Pod bestehend aus Microservice Container und Sidecar Container zur Protokollierung. Ich am Ende zu den Beiwagen für jeden Dienst zu definieren, und es ist ziemlich ausführliches:Wie vorformulierten von Kubernetes Beiwagen Behälter zu reduzieren?

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: thing-doer 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: thing-doer 
    spec: 
     containers: 
     - name: thing-doer 
     image: myregistry/thingdoer 
     ports: 
     - containerPort: 8080 
     volumeMounts: 
     - mountPath: /logs 
      name: logs 
     - name: logger 
     image: myregistry/logger 
     volumeMounts: 
     - mountPath: /logs 
      name: logs 
     - mountPath: /logger-config 
      name: logger-config 
     volumes: 
     - name: logs 
     emptyDir: {} 
     - name: logger-config 
     configMap: 
      name: logger-configmap 
      items: 
      - key: config-yaml 
      path: config.yaml 

ich am Ende mit den gleichen Schritten für jeden Micro wiederholen:

  1. erstellen Lügt-Volume
  2. erstellen Sie log-config Volumen von ConfigMap bevölkerten
  3. erstellen Logger Behälter
  4. Montage Log-Volume zu Logger Behälter
  5. Berg Protokollvolumenbehälter
  6. Berg log-config Volumen Micro Container Logger

Gibt es diese vorformulierten zu reduzieren und es irgendwie zusammensetzbare machen? Kann ich einfach angeben, dass dieser Pod "logbar" sein soll und die erforderlichen Schritte ausführen soll?

Antwort

1

Sie könnten vielleicht die Beiwagen als Daemonset auf jedem Host ausgeführt werden, und entweder schreiben Protokolle an einen Host-Datenträger oder Protokolle von Docker abholen und zentralisieren sie von dort aus.

+0

Das Problem dabei ist, dass jeder Dienst seine eigene Protokollierungskonfiguration hat. Wenn ich den Logger als Daemonset laufen denke ich, ich werde alle Logging-Config zu zentralisieren haben, die würde ich lieber nicht tun. –

1

Kubernetes bietet keine Art von Konfigurationsdatei Templat oder Zusammensetzung. Aber es wäre nicht schwierig sein, ein Werkzeug zu schreiben, die dies tun würden, und erzeugen die YAML-Dateien (beispielsweise ein Vorverarbeitungsschritt).

+0

Gibt es Pläne, die Konfig-Dateizusammensetzung hinzuzufügen? Ich hatte vorher ein Templating-System, aber ich entfernte mich davon, weil ich lieber mit den rohen YAML-Dateien arbeitete. Müsste vielleicht zurückgehen, wenn ich mehr Seitenwagen hinzufüge ... –

+0

Wahrscheinlich nicht zum Kern von Kubernetes, da dies etwas ist, das leicht oben drauf gebaut werden kann. Sie sollten [Helm] (https://github.com/kubernetes/helm) auschecken, das eine deklarative Syntax für das unterstützt, was Sie in Ihrem Cluster haben möchten, und ich glaube, dass auch die Aufteilung der Konfiguration auf mehrere Dateien unterstützt wird. –