Title

k8s部署elasticsearch8.13.3版本集群并安装ik分词器和kibana

创建svc

apiVersion: v1
kind: Service
metadata:
name: elastic-svc #这里根据名称而定
namespace: dev #根据所在命名空间
labels:
app: elastic-cluster
spec:
selector:
app: elastic-cluster
type: NodePort
ports:
- name: rest-api
port: 9200
protocol: TCP
targetPort: 9200
nodePort: 30200
- name: inter-node
port: 9300
protocol: TCP
targetPort: 9300
nodePort: 30201
 
创建statefulset
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elastic-cluster #根据实际情况调整
namespace: dev #根据所在命名空间
labels:
app: elastic-cluster
spec:
serviceName: elastic-svc #要跟上吗的service的名称对齐
replicas: 3
selector:
matchLabels:
app: elastic-cluster
kubernetes.io/cluster-service: "true"
template:
metadata:
labels:
app: elastic-cluster
kubernetes.io/cluster-service: "true"
spec:
initContainers:
- name: fix-permissions
image: busybox
imagePullPolicy: IfNotPresent
command: ["sh", "-c", "chown -R 1000:1000 /usr/share/elasticsearch/data"]
securityContext:
privileged: true
volumeMounts:
- name: data
mountPath: /usr/share/elasticsearch/data
- name: localtime
readOnly: true
mountPath: /etc/localtime
- name: increase-vm-max-map
image: busybox
imagePullPolicy: IfNotPresent
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
- name: increase-fd-ulimit
image: busybox
imagePullPolicy: IfNotPresent
command: ["sh", "-c", "ulimit -n 65536"]
volumes:
- name: localtime
hostPath:
path: /etc/localtime
type: ''
containers:
- name: elasticsearch
image: elasticsearch:8.13.3-p12 #根据镜像所在位置进行调整
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9200
name: rest-api
protocol: TCP
- containerPort: 9300
name: inter-node
protocol: TCP
volumeMounts:
- name: data
mountPath: /usr/share/elasticsearch/data
- name: localtime
readOnly: true
mountPath: /etc/localtime
env:
- name: node.name
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
#- name: discovery.zen.minimum_master_nodes
# value: "2"
- name: discovery.seed_hosts
value: "elastic-svc" #要跟上吗的service名称对齐
- name: cluster.initial_master_nodes
value: "elastic-cluster-0,elastic-cluster-1,elastic-cluster-2" #根据集群名称进行调整
- name: ES_JAVA_OPTS
value: "-Xms1024m -Xmx1024m" #这里根据业务需求而定,要求是要一样的配置大小
- name: xpack.security.enabled
value: "true"
- name: xpack.security.transport.ssl.enabled
value: "true"
- name: xpack.security.transport.ssl.verification_mode
value: "certificate"
- name: xpack.security.transport.ssl.keystore.path
value: "elastic-certificates.p12"
- name: xpack.security.transport.ssl.truststore.path
value: "elastic-certificates.p12"
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "managed-nfs-storage"
resources:
requests:
storage: 2Gi
 
创建kibana
apiVersion: v1
kind: Service
metadata:
name: kibana
namespace: dev
labels:
k8s-app: kibana
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
kubernetes.io/name: "Kibana"
srv: srv-kibana
spec:
type: NodePort
ports:
- port: 5601
nodePort: 30202
protocol: TCP
targetPort: ui
selector:
k8s-app: kibana
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
namespace: dev
labels:
k8s-app: kibana
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
srv: srv-kibana
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kibana
template:
metadata:
labels:
k8s-app: kibana
spec:
containers:
- name: kibana
image: kibana:8.13.3
volumeMounts:
- name: kibana-config
mountPath: /usr/share/kibana/config/kibana.yml
readOnly: true
subPath: kibana.yml
ports:
- containerPort: 5601
name: ui
protocol: TCP
volumes:
- name: kibana-config
configMap:
name: kibana
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kibana
namespace: dev
labels:
k8s-app: kibana
data:
kibana.yml: |-
 
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://10.50.195.2:30200" ]
elasticsearch.username: "kibana"
elasticsearch.password: "zwzk@2024"
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
#kibana.index: ".kibana
创建即可

 

浏览器访问

 

重点

构建es的镜像是自己需要生成的,因为需要开启密码验证

构建镜像的步骤包括集群创建完成后进入pod创建账号密码都可看k8s部署elasticsearch8.13.3版本并配置密码以及ik分词器 - Esurts~ - 博客园

 

安装ik分词器

在上面构建镜像的步骤加入一条内容即可

将本地创建的ik目录拷贝到es镜像里的ik目录下(前提是本地需要创建一个ik目录并且把ik分词器解压在ik目录里)

 

kibana测试ik分词器是否生效

POST /my_index/_analyze
{
  "text": "我爱编程语言",
  "analyzer": "my_ik_analyzer"
}

posted @ 2024-10-23 09:58  Esurts~  阅读(800)  评论(0)    收藏  举报