Kubernetes1.13.0+Elasticsearch:6.5.3+Filebeat:6.5.3+Elasticsearch-head(基于PVC来实现+有状态服务
Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。
Filebeat :轻量级数据收集引擎。基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 shipper 端的第一选择。
elasticsearch-head将是一款专门针对于elasticsearch的客户端工具.
1. 通过yaml来安装elasticsearch+pv
(最好下载源文件,避免格式错误)
yaml下载链接:https://pan.baidu.com/s/1CoCUnr2ZrJPr4nJhXxJqbQ 密码:8qz7
StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计)。
要先执行StatefulSet ,内容如下:
注意:
1 .image: 10.10.31.205/k8s/elasticsearch:6.5.3 ;
2.storageClassName: szy-cloud-nfs-1
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: elasticsearch
spec:
replicas: 1
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- env:
- name: discovery.type
value: single-node
- name: cluster.name
value: docker-cluster
image: 10.10.31.205/k8s/elasticsearch:6.5.3
name: elasticsearch
ports:
- containerPort: 9200
- containerPort: 9300
volumeMounts:
- mountPath: /usr/share/elasticsearch/data
name: esdata
restartPolicy: Always
volumeClaimTemplates:
- metadata:
name: esdata
spec:
accessModes: ["ReadWriteOnce"]
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: szy-cloud-nfs-1
再执行Service ,内容如下:
apiVersion: v1
kind: Service
metadata:
labels:
app: elasticsearch
name: elasticsearch
spec:
ports:
- name: "9200"
port: 9200
targetPort: 9200
- name: "9300"
port: 9300
targetPort: 9300
selector:
app: elasticsearch
type: NodePort
status:
loadBalancer: {}
效果查看,NAMESPACE一定是kube-system
StatefulSet
[root@test01 ~]# kubectl get StatefulSet --all-namespaces
NAMESPACE NAME READY AGE
kube-system elasticsearch 1/1 6h10m
service
[root@test01 ~]# kubectl get service -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch NodePort 10.110.225.212 <none> 9200:32306/TCP,9300:32737/TCP 6h12m
同时还能看到PV
我们的日志通过Filebeat收集,并写在这里:
/data/kube-system-esdata-elasticsearch-0-pvc-5bd84bbc-0365-11e9-8d69-00505681317e
2. 通过yaml来安装filebeat
yaml下载链接:https://pan.baidu.com/s/1CoCUnr2ZrJPr4nJhXxJqbQ 密码:8qz7
创建后,查看效果如下:
[root@test01 ~]# kubectl get ConfigMap,DaemonSet,ClusterRoleBinding,ServiceAccount -n kube-system | grep filebeat
configmap/filebeat-config 1 6h12m
configmap/filebeat-inputs 1 6h12m
daemonset.extensions/filebeat 3 3 3 3 3 <none> 6h12m
clusterrolebinding.rbac.authorization.k8s.io/filebeat 6h12m
serviceaccount/filebeat 1 6h12m
[root@test01 ~]#
创建filebeat时,应注意以下两点:
1.image: 10.10.31.205/k8s/filebeat:6.5.3
2. env:集群内部通信,所以用elasticsearch,端口用9200
- name: ELASTICSEARCH_HOST
value: “elasticsearch”
- name: ELASTICSEARCH_PORT
value: “9200”
可以查看filebeat收集的日志,存储在es所持久化的目录如下:
/data/kube-system-esdata-elasticsearch-0-pvc-5bd84bbc-0365-11e9-8d69-00505681317e
elasticsearch-head 安装与配置
https://github.com/mobz/elasticsearch-head
然后再根据自己的业务需要,将日志,通过api来展示在自己平台内: