在学习 K8S 过程中,使用 EFK (ElasticSearch + Fluentd + Kibana)做日志收集系统的部署清单,不一定适用于你,仅供参考。
NFS 部署请自行搜索,网上方案很多,此处不做过多赘述。
可以参考 K8S 官方方案
kubernetes-sigs/nfs-subdir-external-provisioner
或者直接使用对应的 Helm Charts
Elasticsearch 部署为有Statefulset
(状态集),因为它包含日志数据。我们还公开了 Fluentd 和 kibana 的服务端点以连接到它。多个副本使用无头服务相互连接。无头svc
有助于pod
的DNS
域。
statefulset
使用基于nsf-provisioner
创建的StorageClass
(参考上方nsf-provisioner)创建 PVC。如果您有 PVC 的自定义存储类,你可以修改volumeClaimTemplates
的storageClassName
参数来变动它。
Kibana 部署为Deployment
并连接到弹性搜索服务端点。
Kibana 和 ElasticSeach 版本兼容请参考官方仓库:https://github.com/elastic/kibana
我没有使用 Helm 部署,所以有两个资源文件建目录kibana
如果你想使用 Helm 部署,可以直接使用官方 Charts。
Fluentd 部署为守护程序集,因为它需要从所有节点收集容器日志。它连接到 Elasticsearch 服务端点以转发日志。
使用官方 Helm Charts 部署,对应目录下为自定义的 values
新版本的 K8S 默认使用containerd
作为运行时,需要使用cri
解析器,参考:Use CRI parser for containerd/cri-o logs
其他解析插件,可以阅读官方文档