【云原生】k8s集群部署最新版ELFK日志采集平台

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Golang开发,Rust开发,Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生k8s,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:云原生K8S,零基础到进阶实战
景天的主页:景天科技苑

在这里插入图片描述

<think>好的,我现在需要帮助用户在Kubernetes部署ELFK栈,也就是包含ElasticsearchLogstash、Fluentd(或者Filebeat)、Kibana日志系统。根据用户提供的引用内容,用户可能更倾向于使用Filebeat而不是Logstash,因为引用中提到了EFK架构,其中Filebeat或Fluentd取代Logstash。不过用户明确提到了ELFK,所以可能需要确认是否需要Logstash。不过根据引用[4],ELK现在常被扩展为EFK,用Filebeat或Fluentd替代Logstash。但用户的问题明确是ELFK,所以可能需要包含Logstash,或者可能是打字错误,实际需要EFK?需要进一步分析。 根据引用内容,用户之前的引用提到ELK转变为EFK,使用Filebeat或Fluentd。而用户现在的问题是想部署ELFK,可能是指ElasticsearchLogstash、Fluentd、Kibana?但不太常见。或者可能是ELK + Filebeat,即EFK?需要明确。根据用户的问题描述,“ELFK”可能是ElasticsearchLogstashFilebeatKibana的组合,但通常ELK中的L是Logstash,如果替换成Filebeat的话,可能变成EFK。但用户的问题里同时提到了ELK Stack和Filebeat,所以可能用户希望ELK加上Filebeat,即使用Filebeat作为日志收集器,然后发送到Logstash处理,再存储到Elasticsearch,最后由Kibana展示。这种情况下,部署的组件包括FilebeatLogstashElasticsearchKibana,即ELFK中的F是Filebeat。 接下来,根据引用中的内容,用户提供的引用[1]、[2]、[3]、[4]都是关于在k8s部署ELK并集成Filebeat的。例如,引用[1]详细说明了如何通过创建Namespace、ServiceAccount、RBAC、ConfigMap、DaemonSet等资源来部署Filebeat。引用[4]则提到使用StatefulSet部署Elasticsearch,并创建相关的服务和配置。 所以,用户的问题是如何在k8s部署ELK Stack和Filebeat。结合引用中的信息,部署步骤大致如下: 1. 创建命名空间:例如kube-logging,用于集中管理日志相关资源。 2. 部署Elasticsearch:通常使用StatefulSet,因为ES是有状态应用,需要持久化存储。 3. 部署Kibana:作为前端展示,需要连接到Elasticsearch。 4. 部署Logstash(如果需要):如果使用Logstash处理日志,则需要部署其Deployment和Service,但根据引用[4],可能更倾向于用Filebeat直接发送到ES,或者用Fluentd。 5. 部署Filebeat:作为DaemonSet在每个节点上运行,收集容器日志,并发送到LogstashElasticsearch。 6. 配置RBAC:因为Filebeat需要访问集群中的日志,需要相应的ServiceAccount和权限。 7. 验证各组件状态,确保日志正常收集和展示。 需要注意的几点: - Filebeat需要以DaemonSet形式部署,确保每个节点都有一个Pod收集日志。 - Elasticsearch可能需要配置持久卷(PV)和持久卷声明(PVC)。 - Kibana需要正确指向Elasticsearch的服务地址。 - 根据引用[1],Filebeat的配置通过ConfigMap来管理,包括输出到ElasticsearchLogstash的设置。 - 可能需要调整资源限制(如CPU和内存)以确保各组件稳定运行。 现在,用户可能需要详细的步骤说明,包括YAML文件的示例和配置要点。需要参考引用中的示例,例如创建Namespace、ServiceAccount、RBAC角色绑定、ConfigMap、DaemonSet等。 同时,用户可能需要了解如何验证部署是否成功,例如检查Pod状态,查看Elasticsearch中是否有索引生成,或者通过Kibana界面查看日志数据。 另外,潜在的问题可能包括网络策略导致组件间无法通信,持久化存储配置错误,或者资源不足导致Pod无法启动。需要提醒用户注意这些方面。 最后,根据用户的要求,生成相关问题,可能涉及性能优化、高可用配置、日志处理流程的调整等。</think>### Kubernetes部署ELFK栈(Elasticsearch/Logstash/Filebeat/Kibana)步骤 #### 一、核心组件说明 - **Elasticsearch**:日志存储与检索 - **Filebeat**:轻量级日志收集器(DaemonSet模式部署采集节点/容器日志)[^2] - **Logstash**(可选):日志过滤与转发(若无需复杂处理,Filebeat可直接输出到Elasticsearch) - **Kibana**:数据可视化界面 #### 二、详细部署流程 ##### 1. 创建专用命名空间 ```yaml # elk-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: kube-logging ``` 执行命令:`kubectl apply -f elk-namespace.yaml` ##### 2. 部署Elasticsearch集群(StatefulSet) ```yaml # elasticsearch-statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch namespace: kube-logging spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2 resources: limits: memory: 4Gi requests: memory: 2Gi volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data volumes: - name: data persistentVolumeClaim: claimName: elasticsearch-pvc --- # 创建Headless Service apiVersion: v1 kind: Service metadata: name: elasticsearch namespace: kube-logging spec: clusterIP: None ports: - port: 9200 name: http selector: app: elasticsearch ``` ##### 3. 部署Kibana ```yaml # kibana-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: kibana namespace: kube-logging spec: replicas: 1 selector: matchLabels: app: kibana template: metadata: labels: app: kibana spec: containers: - name: kibana image: docker.elastic.co/kibana/kibana:7.16.2 env: - name: ELASTICSEARCH_HOSTS value: "http://elasticsearch.kube-logging.svc.cluster.local:9200" --- # 创建Kibana Service apiVersion: v1 kind: Service metadata: name: kibana namespace: kube-logging spec: type: NodePort ports: - port: 5601 nodePort: 30601 selector: app: kibana ``` ##### 4. 配置Filebeat DaemonSet ```yaml # filebeat-configmap.yaml(日志采集规则) apiVersion: v1 kind: ConfigMap metadata: name: filebeat-config namespace: kube-logging data: filebeat.yml: | filebeat.inputs: - type: container paths: - /var/log/containers/*.log processors: - add_kubernetes_metadata: host: ${NODE_NAME} matchers: - logs_path: logs_path: "/var/log/containers/" output.elasticsearch: hosts: ["elasticsearch.kube-logging.svc.cluster.local:9200"] --- # filebeat-daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: filebeat namespace: kube-logging spec: selector: matchLabels: app: filebeat template: metadata: labels: app: filebeat spec: serviceAccountName: filebeat containers: - name: filebeat image: docker.elastic.co/beats/filebeat:7.16.2 args: ["-c", "/etc/filebeat.yml", "-e"] volumeMounts: - name: config mountPath: /etc/filebeat.yml subPath: filebeat.yml - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true volumes: - name: config configMap: name: filebeat-config - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers ``` ##### 5. 配置RBAC权限 ```yaml # filebeat-serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: filebeat namespace: kube-logging --- # filebeat-rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: filebeat subjects: - kind: ServiceAccount name: filebeat namespace: kube-logging roleRef: kind: ClusterRole name: view apiGroup: rbac.authorization.k8s.io ``` #### 三、验证部署 1. 检查Pod状态: ```bash kubectl get pods -n kube-logging # 预期输出包含ElasticsearchKibanaFilebeat相关Running状态的Pod ``` 2. 访问Kibana界面: - 通过NodePort `http://<NodeIP>:30601` 进入Kibana - 在Management > Index Patterns 中创建`filebeat-*`索引模式[^3] #### 四、关键优化点 - **Elasticsearch持久化**:使用StorageClass动态供应PV,确保数据持久性 - **资源限制**:为Elasticsearch配置合适的内存/CPU请求与限制,避免OOM - **高可用**:通过`replicas: 3`实现Elasticsearch节点冗余[^4]
评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

景天科技苑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值