前言
最近收到一个小任务:熟悉kubesphere实现一个日志平台。基于这样的机会,将最近所整理的笔记进行汇总。
kubesphere开启日志收集
-
根据
官网介绍
只需要将 enabled 的 false 改为 true即可
-
执行kubectl get pod -n kubesphere-logging-system命令来检查容器组的状态
fluent-operator在kubesphere中是如何工作的
-
kubesphere开启日志后会生成fluentBit相关自定义资源
1.1 FluentBit:定义 Fluent Bit DaemonSet 及其配置。kubesphere/fluent-bit需要自定义 Fluent Bit 映像才能与 FluentBit Operator 一起使用以进行动态配置重新加载。1.2 FluentBitConfig:选择命名空间级别的过滤器/输出/解析器和集群级别的解析器插件,并将最终配置生成到 Secret 中
-
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
2.2
DaemonSet
确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod2.3 添加如下配置,避免部署在edgenode上
2.4 最终在集群所有节点(总共6节点:三个master,三个node)都部署了fluent-bit(可以收集每个节点日志)
-
每个Input, Parser, Filter,Output代表一个 Fluent Bit 配置部分,由 via 标签选择器选择ClusterFluentBitConfig
3.1 Fluent Operator 监视这些对象,构建最终配置,最后创建一个 Secret 来存储将安装到 Fluent Bit DaemonSet 中的配置
束语
本篇文章主要介绍了fluent-operator在kubepshere中是如何工作的,后面会继续介绍具体的input、output,了解其收集哪些日志以及怎么存入es中。