一、安装NFS

ubuntu16.04.4 部署NFS共享

二、创建PV和pvc,用于持久化es的data和plugins目录

pv.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch01-data
  namespace: elk
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /nfs_data/elasticsearch01/data
    server: 192.168.1.2

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch01-plugins
  namespace: elk
spec:
  capacity:
    storage: 500Mi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /nfs_data/elasticsearch01/plugins
    server: 192.168.1.2

pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elasticsearch01-data-pvc
  namespace: elk
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elasticsearch01-plugins-pvc
  namespace: elk
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi

三、部署es

这里部署的是es的单机版,使用Deployment部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
  namespace: elk
spec:
  selector:
    matchLabels:
      app: elasticsearch
  replicas: 1
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      nodeSelector:
        productLine: elk
        area: wuhan
      restartPolicy: Always
      containers:
        - name: elasticsearch
          image: elasticsearch:7.9.1
          imagePullPolicy: Always
          command:
            - /bin/bash
            - -c
            - chown -R 1000 /usr/share/elasticsearch/{data,plugins};/tini -- /usr/local/bin/docker-entrypoint.sh eswrapper
          env:
            - name: ES_JAVA_OPTS
              value: -Xms512m -Xmx512m
            - name: discovery.type
              value: single-node
          ports:
            - containerPort: 9200
          resources:
            requests:
              memory: 1024Mi
              cpu: 50m
            limits:
              memory: 1024Mi
              cpu: 300m
          volumeMounts:
            - mountPath: /usr/share/elasticsearch/data
              name: data
            - mountPath: /usr/share/elasticsearch/plugins
              name: plugins
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: elasticsearch01-data-pvc
        - name: plugins
          persistentVolumeClaim:
            claimName: elasticsearch01-plugins-pvc

---
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  namespace: elk
spec:
  ports:
    - name: elasticsearch
      port: 9200
      targetPort: 9200
  selector:
    app: elasticsearch

四、部署kibana

创建kibana-cm的configMap

kibana.yml

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"	#kibana汉化

kubectl create cm kibana-cm --from-file=kibana.yml -n elk

Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
  namespace: elk
spec:
  selector:
    matchLabels:
      app: kibana
  replicas: 1
  template:
    metadata:
      labels:
        app: kibana
    spec:
      nodeSelector:
        productLine: elk
        area: wuhan
      restartPolicy: Always
      containers:
        - name: kibana
          image: kibana:7.9.1
          imagePullPolicy: Always
          ports:
            - containerPort: 5601
          resources:
            requests:
              memory: 1024Mi
              cpu: 50m
            limits:
              memory: 1024Mi
              cpu: 1000m
          volumeMounts:
            - name: kibana-config
              mountPath: /usr/share/kibana/config/kibana.yml
              subPath: kibana.yml
      volumes:
        - name: kibana-config
          configMap:
            name: kibana-cm
            items:
            - key: "kibana.yml"
              path: "kibana.yml"
---
apiVersion: v1
kind: Service
metadata:
  name: kibana
  namespace: elk
spec:
  type: NodePort
  ports:
    - name: kibana
      port: 5601
      targetPort: 5601
      nodePort: 25601
  selector:
    app: kibana

五、访问服务

在这里插入图片描述

六、参考文章

K8S之持久卷(PV和PVC)
docker部署es
Docker部署ELK

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐