在核心

时间:2016-04-24 22:43:10

标签: amazon-web-services kubernetes coreos

我正在关注如何配置群集级别日志记录的k8s logging instructions。我正在使用kube-aws cli Tool来配置群集,而我似乎无法找到使其工作的方法。 在运行kube-aws up之前,我已尝试按照k8s日志记录指南(KUBE_ENABLE_NODE_LOGGING和KUBE_LOGGING_DESTINATION)中的说法设置env vars,但这似乎没有任何改变。

之后,我尝试通过k8s github repo上的 cluster / addons / fluentd-elasticsearch 目录手动运行es和kibana rc和服务,但只运行那些特定的服务而不是流利的弹性搜索服务,该服务也应该由教程示例运行。

运行kubectl get pods --namespace=kube-system会返回以下内容:

enter image description here

我们可以看到fluentd-elasticsearch-kubernetes-node缺失。

还尝试连接到群集,但失败了:

  

未经授权的

k8s logging instructions之后并且运行命令kubectl config view没有返回任何用户名和密码,并且在尝试访问es url时,我没有得到任何询问用户名和密码的对话框。不确定它是否与第一期有关。

不确定我在这里缺少什么。

感谢。

3 个答案:

答案 0 :(得分:1)

目前似乎没有对 kube-aws 的支持,引用其中一位作者:

  

我们目前正在研究这种方法的kube-is发行版,其中包括用于可视化弹性搜索数据的Kibana。

此问题页面中还会显示建议的解决方法,其中包含有关其状态的额外详细信息:https://github.com/coreos/coreos-kubernetes/issues/320

答案 1 :(得分:1)

我已设法通过CoreOS kube-aws工具使用以下步骤启动在小型测试群集上运行的群集级日志记录。请注意,虽然我已经开始运行,但我还没有充分发挥其作用,以确保一切正常运行!

在节点上启用日志收集

您需要修改cloud-config-workercloud-config-controller以导出收集日志的日志并创建日志目录

[Service] Environment="RKT_OPTS=--volume var-log,kind=host,source=/var/log --mount volume=var-log,target=/var/log" Environment=KUBELET_VERSION=v1.2.4_coreos.1 ExecStartPre=/usr/bin/mkdir -p /var/log/containers ExecStart=/usr/lib/coreos/kubelet-wrapper \ --api-servers=http://127.0.0.1:8080 \ --config=/etc/kubernetes/manifests ...other flags...

(摘自'使用群集日志记录加载项'部分here

安装日志记录组件 我使用了here中的组件(正如您已经尝试过的那样)。正如您所注意到的,这不会流畅地运行,并假设它是作为群集引导的一部分运行的。为了能够流畅地运行,我已将here中流利的Daemonset定义提取到一个单独的文件中:

{ "apiVersion": "extensions\/v1beta1", "kind": "DaemonSet", "metadata": { "name": "fluent-elasticsearch", "namespace": "kube-system", "labels": { "k8s-app": "fluentd-logging" } }, "spec": { "template": { "metadata": { "name": "fluentd-elasticsearch", "namespace": "kube-system", "labels": { "k8s-app": "fluentd-logging" } }, "spec": { "containers": [ { "name": "fluentd-elasticsearch", "image": "gcr.io\/google_containers\/fluentd-elasticsearch:1.15", "resources": { "limits": { "memory": "200Mi" }, "requests": { "cpu": "100m", "memory": "200Mi" } }, "volumeMounts": [ { "name": "varlog", "mountPath": "\/var\/log" }, { "name": "varlibdockercontainers", "mountPath": "\/var\/lib\/docker\/containers", "readOnly": true } ] } ], "terminationGracePeriodSeconds": 30, "volumes": [ { "name": "varlog", "hostPath": { "path": "\/var\/log" } }, { "name": "varlibdockercontainers", "hostPath": { "path": "\/var\/lib\/docker\/containers" } } ] } } } }

此Daemonset在每个群集节点上都流畅地运行。

(注意:虽然我已经尝试在群集运行后尝试添加这些组件,但您没有理由不能将这些组件添加到cloud-config-controller为了在启动集群的同时启动它们 - 这与引用的issue上讨论的内容更加一致)

这些说明都假设您正在使用您很乐意重新启动或尚未启动的群集,以便让日志记录正常运行 - 我从您的问题中假设是你所处的情况。通过手动编辑AWS设置,我也能够在预先存在的集群上工作,并且可以添加有关执行此操作的其他信息,如果这实际上是什么你正试图这样做。

答案 2 :(得分:0)

KUBE_ENABLE_NODE_LOGGING脚本使用

KUBE_LOGGING_DESTINATIONkube-up.sh env变量。我不太了解你提到的aws cli工具,但是看一下代码,它看起来并不像那些env vars影响那个cli。

http://kubernetes.io/docs/getting-started-guides/aws/详细说明了使用kube-up脚本在AWS上启动kubernetes集群所需的步骤。