## K8s部署EKF(Elasticsearch + Fluentd + Kibana)

### 整体流程

| 步骤 | 操作 | 工具/命令 |
| ---- | --------------------------- | --------------------- |
| 1 | 创建Elasticsearch资源 | kubectl apply -f |
| 2 | 创建Fluentd资源 | kubectl apply -f |
| 3 | 创建Kibana资源 | kubectl apply -f |

### 操作步骤

#### 步骤一:创建Elasticsearch资源

1. 下载并编辑Elasticsearch配置文件

```yaml
# elasticsearch.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch
spec:
replicas: 1
serviceName: elasticsearch
selector:
matchLabels:
app: elasticsearch
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
ports:
- containerPort: 9200
env:
- name: discovery.type
value: single-node
```

2. 应用Elasticsearch资源

```bash
kubectl apply -f elasticsearch.yaml
```

#### 步骤二:创建Fluentd资源

1. 下载并编辑Fluentd配置文件

```yaml
# fluentd.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
data:
fluent.conf: |

@type forward
port 24224



@type elasticsearch
host "elasticsearch"
port 9200
logstash_format true

```

2. 创建ConfigMap

```bash
kubectl apply -f fluentd.yaml
```

3. 创建Fluentd Deployment

```yaml
# fluentd-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fluentd
spec:
replicas: 1
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
volumeMounts:
- name: config-volume
mountPath: /fluentd/etc
volumes:
- name: config-volume
configMap:
name: fluentd-config
```

4. 部署Fluentd

```bash
kubectl apply -f fluentd-deployment.yaml
```

#### 步骤三:创建Kibana资源

1. 下载并编辑Kibana配置文件

```yaml
# kibana.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
spec:
replicas: 1
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
containers:
- name: kibana
image: docker.elastic.co/kibana/kibana:7.14.0
ports:
- containerPort: 5601
env:
- name: ELASTICSEARCH_URL
value: http://elasticsearch:9200
```

2. 部署Kibana

```bash
kubectl apply -f kibana.yaml
```

通过以上步骤,你已成功部署了Elasticsearch、Fluentd和Kibana在Kubernetes集群中,实现了EFK日志收集和展示的功能。欢迎继续探索各组件的功能和配置,加深对EFK的理解和应用。祝你早日成为Kubernetes和EFK的高手!