我已经设法通过 CoreOS kube-aws 工具使用以下步骤在小型测试集群上运行集群级日志记录。请注意,虽然我已经运行过这个程序,但我还没有真正玩过它,无法保证一切正常!
在节点上启用日志收集
您需要编辑 cloud-config-worker 和 cloud-config-controller 以导出 kubelet 收集的日志并创建日志目录
[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 的组件(正如您已经尝试过的那样)。正如您所注意到的,这不会运行 fluentd,并假定它作为集群引导的一部分运行。为了让 fluentd 运行,我将 here 讨论的 fluentd 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"
}
}
]
}
}
}
}
此守护程序集在每个集群节点上运行流畅。
(注意:虽然我只是在集群已经运行后才尝试添加这些组件,但您没有理由不能将这些组件添加到 cloud-config-controller 以便同时启动这些组件集群已启动 - 这与引用的 issue 中讨论的更一致
这些说明都假设您正在使用一个您乐于重新启动或尚未启动的集群,以便让日志记录运行 - 我从您的问题中假设您的情况是通过手动编辑 AWS 设置,我还能够在预先存在的集群上使其工作,并且可以添加有关执行此操作的其他信息,如果这实际上是您正在尝试做的事情。