【问题标题】:Kubernetes on AWS with kube-up.sh no logsAWS 上的 Kubernetes,带有 kube-up.sh 没有日志
【发布时间】:2017-01-11 22:49:38
【问题描述】:

我正在使用 kube-up.sh (v1.3.4) 和 AWS 作为提供者来设置集群。一切都很好,我唯一的问题是我没有看到我的日志(在 Kibana 和 Elsaticsearch 中)。如果我 docker attach 在 fluentd-elasticsearch 容器内,这就是我所拥有的:

/var/logs/containers 中,我看到一个符号链接指向我节点上运行的每个 pod 的日志文件,例如:

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 方面不够先进,不知道在哪里解决这个问题,并且可能是一个错误,因为我使用标准过程来设置我的集群。

如果我在 pod 上运行 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 中的错误?

【问题讨论】:

    标签: amazon-web-services logging kubernetes fluentd


    【解决方案1】:

    我将集群插件用于机架空间设置,而不是 aws 插件。但基本上你需要查找 kubernetes 部署文件。在 rackspace 的情况下,您需要一个守护程序集,而不是复制控制器,我敢打赌 AWS 的构建方式是相同的。

    需要添加到部署yaml文件中:

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

    为什么? pod 内的 Fluentd 读取路径 /var/log/containers/* 这是一个符号链接,指向容器内的“deak end”,因为 /mnt/ephemeral/docker/containers 没有安装在那里。它只存在于主机上。因此,将其挂载将使 fluentd 能够读取文件。

    注意:您可能还需要让 kubernetes 元数据插件也正常工作。

    rgds, j

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 2017-12-24
      • 2015-12-29
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2020-11-27
      相关资源
      最近更新 更多