Kubernetes 日志收集之 EFK 部署

阅读时长 9 分钟读完

随着容器技术的快速发展,Kubernetes 成为了现代云原生应用中最流行的编排工具,越来越多的企业、组织、开发者将应用部署到 Kubernetes 集群中。而在应用运行过程中,日志是重要的运行时信息之一,但是如何有效地收集、存储、检索这些日志成为了一个很值得深入研究的问题。

在 Kubernetes 集群中,Elasticsearch、Fluentd、Kibana 这三个开源工具可以组成一个完整的日志收集、存储、检索解决方案,被称为 EFK。

本文将详细介绍 EFK 的原理、部署以及使用方法,帮助读者快速掌握 EFK 在 Kubernetes 日志收集中的应用。

EFK 的原理

  • Elasticsearch:提供了分布式搜索、实时分析和存储功能,可以高效地存储和索引海量日志数据。
  • Fluentd:负责从应用、宿主机、Kubernetes 等地方采集日志,并将其发送到 Elasticsearch 中进行存储。
  • Kibana:提供了友好的 Web UI,可以方便地查询、可视化、分析 Elasticsearch 中存储的日志数据。

在 Kubernetes 集群中,每个节点都可以运行 Fluentd,负责采集本节点上应用和宿主机的日志。Fluentd 会将日志发送到 Elasticsearch 中进行存储,并且会根据配置应用相应的过滤器进行数据处理。用户可以使用 Kibana 查询 Elasticsearch 中的日志数据,并在 Web UI 中进行可视化操作。

EFK 的部署

以 Helm Chart 方式安装 EFK:

1. 安装 Elasticsearch

  • 添加 Elasticsearch Helm repo:

  • 安装 Elasticsearch:

    values-elasticsearch.yaml 配置文件示例:

    -- -------------------- ---- -------
    --------- ------
    ---------- ------
    ------------ -------------
    --------- -
    ----------
      ---------
        ---- ----
        ------- ---
      -------
        ---- ----
        ------- ---

2. 安装 Fluentd

  • 添加 Fluentd 引擎仓库:

  • 安装 Fluentd:

    values-fluentd.yaml 配置文件示例:

3. 安装 Kibana

  • 添加 Kibana Helm repo:

  • 安装 Kibana:

    values-kibana.yaml 配置文件示例:

    -- -------------------- ---- -------
    --------- ------
    ------------------- ------------------------------------------------------------
    ----------
      ---------
        ---- ----
        ------- ---
      -------
        ---- -----
        ------- ---

以上是一个简单的 EFK 部署示例,当然在实际生产环境中还需要考虑 HA、安全等方面的部署。

使用 EFK 收集 Kubernetes 日志

1. 部署日志收集

  • 安装 Fluentd DaemonSet:

    -- -------------------- ---- -------
    ----------- -------
    ----- ---------
    ---------
      ----- -------
      -------
        ---- -------
    -----
      ---------
        ------------
          ---- -------
      ---------
        ---------
          -------
            ---- -------
        -----
          ------------------- -------
          -----------
            - ----- -------
              ------ -------------------------------------------------------------------
              ----
                - ----- -------------------------
                  ------ ------------------------------------------------
                - ----- -------------------------
                  ------ ------
              ----------
                -------
                  ------- -------
                ---------
                  ---- ------
                  ------- -------
              -------------
                - ----- ------
                  ---------- --------
                - ----- ----------------------
                  ---------- --------------------------
                  --------- ----
            - ----- -----------------------
              ------ ----------------------------------
              -------------
                - ----- ------
                  ---------- ------------
              ----
                - ----- -----------
                  ------ ------------------------
              ----------
                -------
                  ------- -------
                ---------
                  ---- -----
                  ------- ------
          ------------------------------ --
          --------
            - ----- ------
              ----------
                ----- --------------
                ------
                  - ---- -----------
                    ----- -----------
            - ----- ------
              ---------
                ----- ---------
            - ----- ----------------------
              ---------
                ----- --------------------------
                ----- ---------

    注意:需要自行创建 serviceAccount fluentd,授权 ClusterRole fluentd-kubernetes-daemonset、ClusterRoleBinding fluentd-kubernetes-daemonset。

  • 配置应用日志输出到标准输出,例如:

    -- -------------------- ---- -------
    ----------- -------
    ----- ----------
    ---------
      ----- ----------
    -----
      --------- -
      ---------
        ------------
          ---- ----------
      ---------
        ---------
          -------
            ---- ----------
        -----
          -----------
            - ----- ----------
              ------ -------------------
              ------
                - -------------- ----
              ----
              - ----- ---------
                ------ -------
              - ----- -------------
                ------ ------
              - ----- ----------
                ------ --------

2. 使用 Kibana 查询日志

  • 打开 Kibana 的 Web UI,选择左侧的 "Discover" 菜单。
  • 进行日志查询以及数据展示。

总结

本文详细介绍了 EFK 的原理、部署以及使用方法,在 Kubernetes 环境中可以快速搭建容器日志收集、存储、检索的解决方案。在实际生产环境中需要注意 HA、安全等方面的部署,以及合理的日志采集和数据处理配置。希望本文能够对读者有所启发,帮助大家更好地掌握 Kubernetes 日志收集的应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64832fc148841e98942a6903

纠错
反馈