我正在关注如何配置群集级别日志记录的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
会返回以下内容:
我们可以看到fluentd-elasticsearch-kubernetes-node
缺失。
还尝试连接到群集,但失败了:
未经授权的
在k8s logging instructions之后并且运行命令kubectl config view
没有返回任何用户名和密码,并且在尝试访问es url时,我没有得到任何询问用户名和密码的对话框。不确定它是否与第一期有关。
不确定我在这里缺少什么。
感谢。
答案 0 :(得分:1)
目前似乎没有对 kube-aws 的支持,引用其中一位作者:
我们目前正在研究这种方法的kube-is发行版,其中包括用于可视化弹性搜索数据的Kibana。
此问题页面中还会显示建议的解决方法,其中包含有关其状态的额外详细信息:https://github.com/coreos/coreos-kubernetes/issues/320
答案 1 :(得分:1)
我已设法通过CoreOS kube-aws
工具使用以下步骤启动在小型测试群集上运行的群集级日志记录。请注意,虽然我已经开始运行,但我还没有充分发挥其作用,以确保一切正常运行!
在节点上启用日志收集
您需要修改cloud-config-worker
和cloud-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_DESTINATION
和kube-up.sh
env变量。我不太了解你提到的aws cli工具,但是看一下代码,它看起来并不像那些env vars影响那个cli。
http://kubernetes.io/docs/getting-started-guides/aws/详细说明了使用kube-up
脚本在AWS上启动kubernetes集群所需的步骤。