fluent-operator在kubesphere中的实战详解

前言

  最近收到一个小任务:熟悉kubesphere实现一个日志平台。基于这样的机会,将最近所整理的笔记进行汇总。

kubesphere开启日志收集

  1. 根据官网介绍只需要将 enabled 的 false 改为 true即可
    fluent-operator在kubesphere中的实战详解_第1张图片
  2. 执行kubectl get pod -n kubesphere-logging-system命令来检查容器组的状态
    fluent-operator在kubesphere中的实战详解_第2张图片

fluent-operator在kubesphere中是如何工作的

  1. kubesphere开启日志后会生成fluentBit相关自定义资源
    fluent-operator在kubesphere中的实战详解_第3张图片
    1.1 FluentBit:定义 Fluent Bit DaemonSet 及其配置。kubesphere/fluent-bit需要自定义 Fluent Bit 映像才能与 FluentBit Operator 一起使用以进行动态配置重新加载。

    1.2 FluentBitConfig:选择命名空间级别的过滤器/输出/解析器和集群级别的解析器插件,并将最终配置生成到 Secret 中

  2. FluentBit的配置如下

    apiVersion: logging.kubesphere.io/v1alpha2
    kind: FluentBit
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: >
          {"apiVersion":"logging.kubesphere.io/v1alpha2","kind":"FluentBit","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"fluent-bit"},"name":"fluent-bit","namespace":"kubesphere-logging-system"},"spec":{"affinity":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node-role.kubernetes.io/edge","operator":"DoesNotExist"}]}]}}},"fluentBitConfigName":"fluent-bit-config","image":"kubesphere/fluent-bit:v1.8.11","positionDB":{"emptyDir":{}},"resources":{"limits":{"cpu":"500m","memory":"200Mi"},"requests":{"cpu":"10m","memory":"25Mi"}},"tolerations":[{"operator":"Exists"}]}}
      finalizers:
        - fluentbit.logging.kubesphere.io
      labels:
        app.kubernetes.io/name: fluent-bit
      name: fluent-bit
      namespace: kubesphere-logging-system
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: node-role.kubernetes.io/edge
                    operator: DoesNotExist
      fluentBitConfigName: fluent-bit-config
      image: 'kubesphere/fluent-bit:v1.8.11'
      positionDB:
        emptyDir: {}
      resources:
        limits:
          cpu: 500m
          memory: 200Mi
        requests:
          cpu: 10m
          memory: 25Mi
      tolerations:
        - operator: Exists
    

    2.1 fluentbit-operator的controller监听自定义资源部署DaemonSet
    fluent-operator在kubesphere中的实战详解_第4张图片
    2.2 DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod

    2.3 添加如下配置,避免部署在edgenode上 fluent-operator在kubesphere中的实战详解_第5张图片
    2.4 最终在集群所有节点(总共6节点:三个master,三个node)都部署了fluent-bit(可以收集每个节点日志)
    fluent-operator在kubesphere中的实战详解_第6张图片

  3. 每个Input, Parser, Filter,Output代表一个 Fluent Bit 配置部分,由 via 标签选择器选择ClusterFluentBitConfig
    fluent-operator在kubesphere中的实战详解_第7张图片
    fluent-operator在kubesphere中的实战详解_第8张图片
    3.1 Fluent Operator 监视这些对象,构建最终配置,最后创建一个 Secret 来存储将安装到 Fluent Bit DaemonSet 中的配置

束语

  本篇文章主要介绍了fluent-operator在kubepshere中是如何工作的,后面会继续介绍具体的input、output,了解其收集哪些日志以及怎么存入es中。

你可能感兴趣的:(云原生,kubernetes,java,容器)