2016-09-04 4 views
1

Я настраиваю кластер с использованием kube-up.sh (v1.3.4) с AWS в качестве поставщика. Все хорошо, моя единственная проблема в том, что я не вижу свои журналы (в Kibana и Elsaticsearch). Если я докер прикрепить внутри fluentd-elasticsearch контейнер здесь является то, что у меня есть:Kubernetes на AWS с kube-up.sh нет журналов

в /var/logs/containers я вижу символическую ссылку в лог-файл для каждого стручков, работающих на моем узле, например:

elasticsearch-logging-v1-9lwly_kube-system_POD-3bb54515d4e0e479c39cb7c35aa6675fdfe2970233e095420e2116c2f633ab50.log

это символическая ссылка на

/mnt/ephemeral/docker/containers/3bb54515d4e0e479c39cb7c35aa6675fdfe2970233e095420e2116c2f633ab50/3bb54515d4e0e479c39cb7c35aa6675fdfe2970233e095420e2116c2f633ab50-json.log

Однако /mnt пуст в моем fluentd-elasticsearch контейнере. Таким образом, все символические ссылки неверны.

Я полагаю, что это /mnt/ephemeral не является связующим, установленным в контейнере fluentd-elasticsearch. Я недостаточно продвинулся в кубернетах, чтобы узнать, где это исправить, и может быть ошибкой, так как я использовал стандартную процедуру для настройки моего кластера.

Если я бегу kubectl describe на стручок я получаю:

Name:  fluentd-elasticsearch-ip-172-20-0-168.eu-west-1.compute.internal 
Namespace: kube-system 
Node:  ip-172-20-0-168.eu-west-1.compute.internal/172.20.0.168 
Start Time: Fri, 02 Sep 2016 17:15:03 +0200 
Labels:  k8s-app=fluentd-logging 
Status:  Running 
IP:  10.244.3.2 
Controllers: <none> 
Containers: 
    fluentd-elasticsearch: 
    Container ID: docker://d376a900ef770e65dfbf75bf5bc1c711c650868bb4e4ea74002818852a81aa04 
    Image:  gcr.io/google_containers/fluentd-elasticsearch:1.17 
    Image ID:  docker://sha256:e74f564e4c316e0f6baebf838015f516e26d7501c96ead5f115523ff80c614fd 
    Port:  
    Limits: 
     memory: 200Mi 
    Requests: 
     cpu:   100m 
     memory:   200Mi 
    State:   Running 
     Started:   Fri, 02 Sep 2016 17:15:36 +0200 
    Ready:   True 
    Restart Count:  0 
    Environment Variables: <none> 
Conditions: 
    Type  Status 
    Initialized True 
    Ready  True 
    PodScheduled True 
Volumes: 
    varlog: 
    Type: HostPath (bare host directory volume) 
    Path: /var/log 
    varlibdockercontainers: 
    Type: HostPath (bare host directory volume) 
    Path: /var/lib/docker/containers 
QoS Tier: Burstable 
No events. 

Так, очевидно, объемы неверны (/var/lib/docker/containers вместо /mnt/ephemeral/docker/containers

Где/как я могу это исправить Если это будет сообщено как.? ошибка в k8s repos?

ответ

0

Я использую кластерный аддон для установки rackspace, а не aws. Но базой нужно искать файл развертывания кубернетов. В случае с rackspace вам нужен набор демонов, а не re контроллер распространения, я уверен, что материал AWS построен таким же образом.

Вам нужно добавить в YAML файл развертывания:

containers: 
     ... 
     volumeMounts: 
     - name: mntephemeraldockercontainers 
      mountPath: /mnt/ephemeral/docker/containers 
      readOnly: true 
     ... 
     volumes: 
     - name: mntephemeraldockercontainers 
      hostPath: 
       path: /mnt/ephemeral/docker/containers 

Почему? Внутри модуля читайте путь/var/log/container/*, который является символической ссылкой, указывающей на конец «deak» внутри контейнера, потому что/mnt/ephemeral/docker/контейнеры там не установлены. Он существует только на хосте. Таким образом, его установка сделает fluentd доступным для чтения файла.

NB: Возможно, вы захотите также сделать плагин метаданных кубернетов правильно.

rgds, j