kubernetes StatefulSet 部署 elasticsearch cluster

2024-02-29 19:48

本文主要是介绍kubernetes StatefulSet 部署 elasticsearch cluster,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用Kubernetes StatefulSet部署Elasticsearch.

Service 配置

下面是一份elasticsearch service的配置。

apiVersion: v1
kind: Service
metadata:name: es-cluster-node
spec:clusterIP: Noneselector:app: es-clusterports:- name: transportport: 9300protocol: TCP---# cluster ip
apiVersion: v1
kind: Service
metadata:name: es-cluster-external
spec:selector:app: es-clusterports:- name: httpport: 80targetPort: 9200type: ClusterIP
  • 上面的service es-cluster-nodeclusterIP设置为None,这种service被称为headless service。具体什么是headless service请自行搜索一下。es-cluster-node设置的端口是9300,用于elasticsearch node之间通信,选举等,走的是tcp协议。
  • 下面的service es-cluster-external 是一个常用的service类型,映射920080端口,这个service用于外部访问elasticsearch
  • 2serviceselector都为app: es-cluster,说明这2service对应的pod都是相同的。

Ingress 配置

apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: es-cluster-external
spec:rules:- host: xxx.comhttp:paths:- backend:serviceName: es-cluster-externalservicePort: 80path: /

ingress配置的servicees-cluster-externalelasticsearch能够让外部访问。因为es-cluster-node只需要内部node之间通信,所以我们不需要将它暴露。

ConfigMap 配置

用来配置elasticsearch.yml

apiVersion: v1
kind: ConfigMap
metadata:name: es-config
data:elasticsearch.yml: |node.name: ${HOSTNAME}cluster.name: my-elastic-clusternetwork.host: "0.0.0.0"bootstrap.memory_lock: falsediscovery.zen.ping.unicast.hosts: esnode-0.es-cluster-node.xxx.svc.cluster.local,esnode-1.es-cluster-node.xxx.svc.cluster.local,esnode-2.es-cluster-node.xxx.svc.cluster.localdiscovery.zen.minimum_master_nodes: 1xpack.security.enabled: falsexpack.monitoring.enabled: false

我们要重点专注discovery.zen.ping.unicast.hosts配置,这里配置的值为esnode-0.es-cluster-node.xxx.svc.cluster.local…

由于headless service能够让pod之间直接通信,而不需要走kube-proxy。使用headless service时,poddns规则如下 {stateful-set-name}-{0…N}.{service-name}.{namespace}.svc.cluster.local

这里配置的service-nameheadless service name

StatefulSet 配置

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:name: esnodelabels:app: es-cluster
spec:serviceName: es-cluster-nodereplicas: 3updateStrategy:type: RollingUpdatetemplate:metadata:labels:app: es-clusterspec:securityContext:fsGroup: 1000initContainers:- name: init-sysctlimage: busyboximagePullPolicy: IfNotPresentsecurityContext:privileged: true# increase mmap limitscommand: ["sysctl", "-w", "vm.max_map_count=262144"]containers:- name: elasticsearchresources:requests:memory: 300Micpu: 0.01limits:memory: 1.5Gicpu: 1securityContext:privileged: truerunAsUser: 1000capabilities:add:- IPC_LOCK- SYS_RESOURCEimage: docker.elastic.co/elasticsearch/elasticsearch:6.5.0imagePullPolicy: IfNotPresentenv:- name: ES_JAVA_OPTSvalue: "-Xms800m -Xmx800m"readinessProbe:httpGet:scheme: HTTPpath: /_cluster/health?local=trueport: 9200initialDelaySeconds: 5ports:- containerPort: 9200name: es-http- containerPort: 9300name: es-transportvolumeMounts:- name: es-datamountPath: /usr/share/elasticsearch/data- name: elasticsearch-configmountPath: /usr/share/elasticsearch/config/elasticsearch.ymlsubPath: elasticsearch.ymlvolumes:- name: elasticsearch-configconfigMap:name: es-configitems:- key: elasticsearch.ymlpath: elasticsearch.ymlvolumeClaimTemplates:- metadata:name: es-dataspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1GistorageClassName: rbd

上面配置一份elasticsearch statefulset配置。

  1. volumeClaimTemplates配置了pvc
  2. volumeMounts配置了pvc,指定挂在路径。配置了elasticsearch.yml,这个配置内容我们在上面的configmap里指定了。
  3. spec.serviceName必须和headless service metadata.name一致。

最后通过ingress配置的url,访问xxx.com/_nodes查看是否部署成功。

这篇关于kubernetes StatefulSet 部署 elasticsearch cluster的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/759873

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制