我正在使用kube-up.sh (v1.3.4)设置一个集群,并使用AWS作为提供者。一切都很好,我唯一的问题是我看不到我的日志(在Kibana和Elsaticsearch中)。如果我在fluentd-elasticsearch容器内附加docker,下面是我所拥有的:
在/var/logs/containers中,我看到一个指向节点上运行的每个pods的日志文件的符号链接,例如:
elasticsearch-logging-v1-9lwly_kube-system_POD-3bb54515d4e0e479c39cb7c35aa6675fdfe2970233e095420e2116c2f633ab50.log
是指向的符号链接
/mnt/ephemeral/docker/containers/3bb54515d4e0e479c39cb7c35aa6675fdfe2970233e095420e2116c2f633ab50/3bb54515d4e0e479c39cb7c35aa6675fdfe2970233e095420e2116c2f633ab50-json.log
但是,在我的fluentd-elasticsearch容器中,/mnt是空的。所以所有的符号链接都是错误的。
我猜这只是因为fluentd-elasticsearch容器中没有绑定挂载/mnt/ephemeral。我在kubernetes中还不够高级,不知道在哪里修复它,而且可能是一个bug,因为我使用标准过程来设置我的集群。
如果我在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中的错误?
发布于 2016-09-10 16:46:13
我使用集群插件来安装rackspace,而不是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
https://stackoverflow.com/questions/39315798
复制相似问题