k8s以StatefulSet方式部署elasticsearch集群,其中filebeat以sidecar方式部署。当前最新版本:7.10.1
namespace
mkdir -p /home/k8s/elfk/{
elasticsearch-head,elasticsearch,logstash,kibana,filebeat}
cd /home/k8s/elfk
vim namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: log
pv
mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport xxx.cn-hangzhou.nas.aliyuncs.com:/ /mnt
mkdir -p /mnt/elfk-data/{
elasticsearch-0,elasticsearch-1,elasticsearch-2}
vim alicloud-nas-elfk-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: alicloud-nas-elfk-pv0
labels:
alicloud-pvname: alicloud-nas-elfk-pv
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteMany
csi:
driver: nasplugin.csi.alibabacloud.com
volumeHandle: alicloud-nas-elfk-pv0
volumeAttributes:
server: "xxx.cn-hangzhou.nas.aliyuncs.com"
path: "/elfk-data/elasticsearch-0"
mountOptions:
- nolock,tcp,noresvport
- vers=4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: alicloud-nas-elfk-pv1
labels:
alicloud-pvname: alicloud-nas-elfk-pv
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteMany
csi:
driver: nasplugin.csi.alibabacloud.com
volumeHandle: alicloud-nas-elfk-pv1
volumeAttributes:
server: "xxx.cn-hangzhou.nas.aliyuncs.com"
path: "/elfk-data/elasticsearch-1"
mountOptions:
- nolock,tcp,noresvport
- vers=4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: alicloud-nas-elfk-pv2
labels:
alicloud-pvname: alicloud-nas-elfk-pv
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteMany
csi:
driver: nasplugin.csi.alibabacloud.com
volumeHandle: alicloud-nas-elfk-pv2
volumeAttributes:
server: "xxx.cn-hangzhou.nas.aliyuncs.com"
path: "/elfk-data/elasticsearch-2"
mountOptions:
- nolock,tcp,noresvport
- vers=4
elasticsearch-haed
vim elasticsearch-head/head.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: head
namespace: log
spec:
rules:
- host: head.lzxlinux.cn
http:
paths:
- path: /
backend:
serviceName: head
servicePort: 9100
---
apiVersion: v1
kind: Service
metadata:
name: head
namespace: log
labels:
app: head
spec:
selector:
app: head
ports:
- port: 9100
protocol: TCP
targetPort: 9100
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: head
namespace: log
labels:
app: head
spec:
replicas: 1
selector:
matchLabels:
app: head
template:
metadata:
labels:
app: head
spec:
containers:
- name: head
image: mobz/elasticsearch-head:5
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 9100
elasticsearch
vim elasticsearch/elasticsearch.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: elasticsearch
namespace: log
spec:
rules:
- host: elasticsearch.lzxlinux.cn
http:
paths:
- path: /
backend:
serviceName: elasticsearch
servicePort: 9200
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
namespace: log
labels:
app: elasticsearch
spec:
selector:
app: elasticsearch
ports:
- name: api
port: 9200
- name: discovery
port: 9300
clusterIP: None
---
apiVersion: apps/v1
kind: Stateful