【问题标题】:Config cluster level logging using kubernetes on aws with coreos在带有 coreos 的 AWS 上使用 kubernetes 配置集群级别日志记录
【发布时间】:2016-08-16 19:38:17
【问题描述】:

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

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

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

我们可以看到fluentd-elasticsearch-kubernetes-node 不见了。

也尝试连接到集群但失败:

未经授权

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

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

谢谢。

【问题讨论】:

    标签: amazon-web-services kubernetes coreos


    【解决方案1】:

    因此,引用其中一位作者的话,目前 kube-aws 似乎不支持此功能:

    我们目前正在为此方法开发 kube-was 分发,其中包括用于可视化弹性搜索数据的 Kibana。

    此问题页面中还显示了一个建议的解决方法,包括有关其状态的更多详细信息:https://github.com/coreos/coreos-kubernetes/issues/320

    【讨论】:

      【解决方案2】:

      我已经设法通过 CoreOS kube-aws 工具使用以下步骤在小型测试集群上运行集群级日志记录。请注意,虽然我已经运行过这个程序,但我还没有真正玩过它,无法保证一切正常!

      在节点上启用日志收集

      您需要编辑 cloud-config-workercloud-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 设置,我还能够在预先存在的集群上使其工作,并且可以添加有关执行此操作的其他信息,如果这实际上是您正在尝试做的事情。

      【讨论】:

        【解决方案3】:

        KUBE_ENABLE_NODE_LOGGINGKUBE_LOGGING_DESTINATION 环境变量由 kube-up.sh 脚本使用。我不太了解您提到的 aws cli 工具,但是查看代码,看起来那些 env var 不会影响该 cli。

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

        【讨论】:

        • 嗨,我知道替代方案,但我已经寻找一种方法来使用我正在使用的当前工具。
        猜你喜欢
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-11
        • 1970-01-01
        • 1970-01-01
        • 2016-11-27
        • 2023-03-23
        相关资源
        最近更新 更多