- 自定义dockerfile
FROM docker.elastic.co/elasticsearch/elasticsearch:7.14.0
RUN mkdir /usr/share/elasticsearch/plugins/ik
WORKDIR /usr/share/elasticsearch/plugins/ik
COPY elasticsearch-analysis-ik-7.14.0.zip ./
RUN unzip elasticsearch-analysis-ik-7.14.0.zip
- 制作镜像
sudo docker build . -t elasticsearchik:v1.1
- 在/home/ellis/k8s/elasticsearch/elasticsearchplugins/ 创建ik文件夹,并将运行
unzip elasticsearch-analysis-ik-7.14.0.zip - k8s部署
kind: PersistentVolume
apiVersion: v1
metadata:
name: elasticsearch-pv-volume
namespace: logging
labels:
type: local
app: elasticsearch
spec:
#storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/home/ellis/k8s/elasticsearch/elasticsearchdata/"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: elasticsearch-pv-claim
namespace: logging
labels:
app: elasticsearch
spec:
storageClassName: ""
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: elasticsearch-pv-volume-plugins
namespace: logging
labels:
type: local
app: elasticsearch-plugins
spec:
#storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/home/ellis/k8s/elasticsearch/elasticsearchplugins/"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: elasticsearch-pv-claim-plugins
namespace: logging
labels:
app: elasticsearch-plugins
spec:
storageClassName: ""
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch
namespace: logging
spec:
replicas: 1
selector:
matchLabels:
component: elasticsearch
template:
metadata:
labels:
component: elasticsearch
spec:
containers:
- name: elasticsearch
image: elliselasticsearch:v1.1
imagePullPolicy: IfNotPresent
env:
- name: discovery.type
value: single-node
ports:
- containerPort: 9200
name: http
protocol: TCP
volumeMounts:
- mountPath: /usr/share/elasticsearch/plugins/
name: elasticsearchplugin
- mountPath: /usr/share/elasticsearch/data
name: elasticsearch
- name: elasticsearch-config
mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
subPath: elasticsearch.yml
resources:
limits:
cpu: 500m
memory: 2Gi
requests:
cpu: 500m
memory: 2Gi
volumes:
- name: elasticsearch
persistentVolumeClaim:
claimName: elasticsearch-pv-claim
- name: elasticsearchplugin
persistentVolumeClaim:
claimName: elasticsearch-pv-claim-plugins
- name: elasticsearch-config
configMap:
name: elasticsearch-config
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
namespace: logging
labels:
service: elasticsearch
spec:
type: NodePort
selector:
component: elasticsearch
ports:
- port: 9200
targetPort: 9200
nodePort: 31200
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
namespace: logging
labels:
service: elasticsearch
spec:
type: NodePort
selector:
component: elasticsearch
ports:
- port: 9200
targetPort: 9200
nodePort: 31200
参考
https://blog.csdn.net/weixin_43632687/article/details/121032943
https://www.elastic.co/guide/en/cloud-on-k8s/master/k8s-custom-images.html