在k8s上搭建elasticsearch 服务
k8s搭建高可用elasticsearch集群:eck
Deploy ECK in your Kubernetes cluster
Deploy ECK in your Kubernetes cluster | Elastic Cloud on Kubernetes [2.1] | Elastic
部署 Elastic Stack
1. 安装ElasticSearch
1.Install custom resource definitions and the operator with its RBAC rules:
kubectl create -f https://download.elastic.co/downloads/eck/1.9.1/crds.yaml kubectl apply -f https://download.elastic.co/downloads/eck/1.9.1/operator.yaml
2. Monitor the operator logs:
kubectl -n elastic-system logs -f statefulset.apps/elastic-operator
3. 创建eck 集群
cat <<EOF | kubectl apply -f - apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: quickstart spec: version: 7.17.0 nodeSets: - name: default count: 1 config: node.store.allow_mmap: false EOF
kubectl -n es get elasticsearch kubectl logs -f quickstart-es-default-0
5. 获取es 集群访问权限
PASSWORD=$(kubectl -n es get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}') echo "$PASSWORD" # 在k8s集群同命名空间下的pod内 curl -u "elastic:IQ2DEORp61tfd70Goy76710g" -k "https://quickstart-es-http:9200"
2. 安装kibana
cat <<EOF | kubectl apply -f - apiVersion: kibana.k8s.elastic.co/v1 kind: Kibana metadata: name: quickstart spec: version: 7.9.2 count: 1 elasticsearchRef: name: quickstart EOF
2. Monitor Kibana health and creation progress.
Similar to Elasticsearch, you can retrieve details about Kibana instances:
kubectl get kibana
3. 配置 ingress 来访问 es 集群
安装 ingress
https://yuque.antfin.com/ke5an3/rgf45y/myuxgq
禁用 TLS
TLS certificates | Elastic Cloud on Kubernetes [master] | Elastic
You can explicitly disable TLS for Kibana, APM Server, Enterprise Search and the HTTP layer of Elasticsearch.
修改 elasticsearch 的yaml 文件,禁用自签名证书
spec: http: tls: selfSignedCertificate: disabled: true
es-ingress.yaml 文件
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: generation: 1 name: es-ingress namespace: es spec: ingressClassName: nginx rules: - host: es.suoyi.com http: paths: - backend: service: name: quickstart-es-http port: number: 9200 path: / pathType: Prefix
创建并验证请求
# 创建 ingress kubectl -n es apply -f es-ingress.yaml # 在节点外进行请求 curl -u "elastic:IQ2DEORp61tfd70Goy76710g" -k "http://es.suoyi.com:31201"
ECK会自动创建一个默认用户elastic,密码存储于k8s secret中:
kibana的用户名和密码同es集群:
4. 通过 自定义镜像 安装ik中文分词器
下载 es版本 对应 ik 分词器和拼音 插件
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.0.0/elasticsearch-analysis-ik-8.0.0.zip wget https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v8.0.0/elasticsearch-analysis-pinyin-8.0.0.zip
编写Dockerfile
FROM docker.elastic.co/elasticsearch/elasticsearch:8.0.0 COPY ./elasticsearch-analysis-ik-8.0.0.zip /home/ COPY ./elasticsearch-analysis-pinyin-8.0.0.zip /home/ RUN bin/elasticsearch-plugin install --batch file:/home/elasticsearch-analysis-ik-8.0.0.zip RUN bin/elasticsearch-plugin install --batch file:/home/elasticsearch-analysis-pinyin-8.0.0.zip
构建定制es镜像
docker build --tag elasticsearch-ik:8.0.0 .
在yaml 文件 指定es镜像
apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: quickstart spec: image: elasticsearch-ik:8.0.0 auth: {} http: service: metadata: {} spec: {} tls: certificate: {} selfSignedCertificate: disabled: true nodeSets: - config: node.store.allow_mmap: false count: 1 name: default podTemplate: spec: containers: null version: 8.0.0
4. ES 集群监控【TODO】
参考文档
参考资料
Ingress
how to configure ingress to direct traffic to an https backend using https
Elastic Cloud Kubernetes(ECK)安装Elasticsearch、Kibana实战教程
Elastic Cloud Kubernetes(ECK)安装Elasticsearch、Kibana实战教程-阿里云开发者社区
elasticsearch create custom images
Create custom images | Elastic Cloud on Kubernetes [2.1] | Elastic
k8s无脑系列(十一) helm安装ElasticSearch到集群并设置中文分词
更多推荐
所有评论(0)