2016-09-04 38 views
1

我使用kube-up.sh(v1.3.4)和AWS作爲提供程序來設置集羣。一切都很好,我唯一的問題是我沒有看到我的日誌(在Kibana和Elsaticsearch中)。如果我泊塢窗附上這裏的fluentd-elasticsearch容器內是我有:AWS上的Kubernetes與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容器。在kubernetes中我沒有足夠的先進知識來解決這個問題,並且可能是因爲我使用標準過程來設置集羣而造成的一個錯誤。

如果我運行莢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回購中的bug?

回答

0

我正在使用集羣插件作爲rackspace設置,而不是aws集羣,但basiaclly你需要尋找kubernetes部署文件在rackspace的情況下,你需要一個守護進程集,而不是一個re應用控制器,我敢打賭,AWS的東西是以同樣的方式構建的。

您需要添加到部署YAML文件:

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

爲什麼?因爲/ mnt/ephemeral/docker/containers沒有安裝在容器中,所以在容器中的Fluentd讀取路徑/ var/log/containers/*,這是一個指向容器內部「deak end」的符號鏈接。它只存在於主機上。所以,安裝它會使fluentd能夠讀取文件。

注意:您也許需要使kubernetes元數據插件也能正常工作。

rgds, j