K8s 部署 elasticsearch-7.14.0 集群 及 kibana 客户端

news2024/12/23 9:52:07

一、K8s 部署 elasticsearch-7.14.0 集群

安装规划

组件replicas类型
es3StatefulSet
kibana1Deployment

使用 k8s 版本为:v1.18.0

本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创建和管理持久化存储卷。它支持各种存储后端,包括但不限于 ZFSBtrfsXFS 等。同时,OpenEBS 具有高度的可扩展性和可配置性,可以满足不同的存储需求。

安装 OpenEBS

kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml

验证OpenEBS是否正确安装:

kubectl get pods -n openebs

在这里插入图片描述
所有的 OpenEBS pods 都处于Running状态表示正常。

1. 创建命名空间

vi es-ns.yml
apiVersion: v1
kind: Namespace
metadata:
  name: es
  labels:
    name: es
kubectl apply -f es-ns.yml

查看命名空间:

kubectl get ns

在这里插入图片描述

2. 创建存储卷

使用 OpenEBS 本地存储模式:

vi es-local-storage.yml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: es-local-storage
  annotations:
    openebs.io/cas-type: local
    cas.openebs.io/config: |
      - name: StorageType
        value: hostpath
      - name: BasePath
        value: /data/openebs/es 
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
kubectl apply -f es-local-storage.yml

查看存储卷:

kubectl get sc

在这里插入图片描述

3. 创建 ConfigMap 配置

主要声明 elasticsearch.yml 配置文件:

vi es-config.yml
apiVersion: v1
kind: ConfigMap
metadata:
  name: es-config
  namespace: es
  labels:
    app: es-config
data:
  elasticsearch.yml: |+     
    #集群名称
    cluster.name: cluster-es
    #节点名称,每个节点的名称不能重复,这里不指定,使用当前主机的名称
    # node.name: 
    #ip 地址,每个节点的地址不能重复
    network.host: 0.0.0.0
    #是不是有资格主节点
    node.master: true
    node.data: true
    http.port: 9200
    # head 插件需要这打开这两个配置,解决跨域问题
    http.cors.allow-origin: "*"
    http.cors.enabled: true
    http.max_content_length: 200mb
    #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
    cluster.initial_master_nodes: ["es-0"]
    #es7.x 之后新增的配置,节点发现
    discovery.seed_hosts: ["es-0.es-svc.es.svc.cluster.local:9300","es-1.es-svc.es.svc.cluster.local:9300","es-2.es-svc.es.svc.cluster.local:9300"]
    gateway.recover_after_nodes: 2
    network.tcp.keep_alive: true
    network.tcp.no_delay: true
    transport.tcp.compress: true
    #集群内同时启动的数据任务个数,默认是 2 个
    cluster.routing.allocation.cluster_concurrent_rebalance: 16
    #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
    cluster.routing.allocation.node_concurrent_recoveries: 16
    #初始化数据恢复时,并发恢复线程的个数,默认 4 个
    cluster.routing.allocation.node_initial_primaries_recoveries: 16

注意这里的集群间的访问使用域名:es-X.es-svc.es.svc.cluster.local ,格式为:

(podname).(headless server name).(namespace).svc.cluster.local

所以注意下面创建 Headless Service 服务名字需要为 es-svcStatefulSetPod 的名字需要为 es

kubectl apply -f es-config.yml

查看 ConfigMap:

kubectl get cm -n es

在这里插入图片描述

4. 创建 Service 服务

这里需要创建两个,一个用于集群建访问的 Headless Service ,一个用于外部访问的 NodePort Service :

vi es-svc.yml
# headless service 
apiVersion: v1
kind: Service
metadata:
  name: es-svc
  namespace: es
  labels:
    app: es-svc
spec:
  clusterIP: None
  ports:
  - name: rest-port
    port: 9200
  - name: cluster-port
    port: 9300
  selector:
    app: es

---
# NodePort service 
apiVersion: v1
kind: Service
metadata:
  name: es-svc-nodeport
  namespace: es
  labels:
    app: es-svc
spec:
  clusterIP: 
  ports:
  - name: rest-port
    port: 9200
    nodePort: 31920
    targetPort: 9200
  selector:
    app: es
  type: NodePort
  target-port:
  externalTrafficPolicy: Cluster # Local 只有所在node可以访问,Cluster 公平转发
kubectl apply -f es-svc.yml

查看创建的 Service

kubectl get svc -n es

在这里插入图片描述

5. 创建 StatefulSet 应用

vi es-sfe.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: es
  namespace: es
spec:
  serviceName: "es-svc"   #填写无头服务的名称
  replicas: 3
  selector: 
    matchLabels: 
      app: es
  template:
    metadata:
      labels:
        app: es
    spec:
      containers:
      - name: es
        image: elasticsearch:7.14.0
        ports:
        - containerPort: 9200
          name: es-rest-port
        - containerPort: 9200
          name: es-cluster-port
        env:
        - name: ES_JAVA_OPTS
          value: "-Xms1g -Xmx1g"
        volumeMounts:                           
          - name: es-config     #挂载配置
            mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
            subPath: elasticsearch.yml
          - name: es-data       #挂载数据
            mountPath: /usr/share/elasticsearch/data 
      volumes:
      - name: es-config
        configMap:                                
          name: es-config
  volumeClaimTemplates:
    - metadata:
        name: es-data
      spec:
        accessModes: ["ReadWriteOnce"]
        storageClassName: es-local-storage
        resources:
          requests:
            storage: 5Gi

这里使用 volumeClaimTemplates 动态创建 pvpvc

kubectl apply -f es-sfe.yml

查看 statefulset :

kubectl get statefulset -n es

在这里插入图片描述

查看 pod:

kubectl get pods -n es

在这里插入图片描述

使用 http 请求验证 es 服务是否正常:

http://ip:31920/_cluster/health?pretty

在这里插入图片描述

从结果上可以看出 ES 启动正常。

二、K8s 部署 kibana 客户端

1. 创建 Service 服务

vi kibana-svc.yml
apiVersion: v1
kind: Service
metadata:
  name: kibana-svc-nodeport
  namespace: es
  labels:
    app: kibana-svc
spec:
  clusterIP: 
  ports:
  - name: kibana
    port: 5601
    nodePort: 31561
    targetPort: 5601
  selector:
    app: kibana
  type: NodePort
  target-port:
  externalTrafficPolicy: Cluster # Local 只有所在node可以访问,Cluster 公平转发
kubectl apply -f kibana-svc.yml

2. 创建 Deployment 应用

vi kibana-dm.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
  namespace: es
spec:
  replicas: 1
  selector: 
    matchLabels: 
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec:
      containers:
      - name: kibana
        image: kibana:7.14.0
        ports:
        - containerPort: 5601
          name: ui-port
        env:
        - name: ELASTICSEARCH_HOSTS
          value: http://es-0.es-svc.es.svc.cluster.local:9200
kubectl apply -f kibana-dm.yml

查看 pod :

kubectl get pods -n es

在这里插入图片描述

下面在浏览器访问 kibana 页面:

http://ip:31561/

在这里插入图片描述

三、测试

使用 kibana 创建一个 test_index 索引:

PUT /test_index

在这里插入图片描述

查看 test_index 索引信息:

GET /test_index

在这里插入图片描述

test_index 索引中添加数据:

PUT /test_index/user/1
{
	"name": "张三",
	"age": 15,
	"sex": "男"
}

在这里插入图片描述

查询添加的数据:

GET /test_index/user/1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外贸公司应该怎么选择企业邮箱?哪个企业邮箱最好?

外贸公司业务的特殊性需要他们频繁进行跨国的沟通交流,那么外贸公司应该如何选择适合的企业邮箱呢?首先,传输邮件的稳定安全是前提,另外由于沟通多是国外客户,邮件的翻译也成为外贸公司企业邮箱的刚需。小编今天就详细…

linux——Bash特性

bash是一个命令解释器,其支持命令行展开{}写法 alias是命令别称,即为命令等同于,使用unalias对应命令可以取消该别称 alias可以对命令进行更改

Docker+Uwsgi+Nginx部署Django项目保姆式教程

之前,我和大家分享了在docker中使用uwsgi部署django项目的教程。这次,为大家带来的是使用DockerUwsgiNginx部署Django项目。废话不多说,我们开干。 步骤1:使用命令创建一个django项目 我这里python版本使用的是3.9.x 首先&#…

HarmonyOS实战开发-自定义分享

介绍 自定义分享主要是发送方将文本,链接,图片三种类型分享给三方应用,同时能够在三方应用中展示。本示例使用数据请求 实现网络资源的获取,使用屏幕截屏 实现屏幕的截取,使用文件管理 实现对文件,文件目录的管理&…

【C++成长记】C++入门 | 类和对象(上) |面向过程和面向对象初步认识、类的引入、类的定义、类的访问限定符及封装

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:C❤️感谢大家点赞👍收藏⭐评论✍️ 一、面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步…

2011年认证杯SPSSPRO杯数学建模A题(第一阶段)客机水面迫降时的姿态全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 A题 客机水面迫降时的姿态 原题再现: 2009 年 1 月 15 日下午(美国东部时间),US Airways 所属第 1549 航班(空中客车 A320 客机)在起飞后不久在纽约哈德逊河紧急迫降。经及…

强化学习实践0

gym是目前强化学习最常用的工具之一,一直在迭代升级。2021年gym库不再更新,推出了gymnasium作为替代 1。 gymnasium与gym之间的主要不同在于reset和step的返回参数数目发生了变化,具体变化见版本变化。 gym目前并不支持python3.11版本…

基于ssm的大学生租房平台的设计与实现(java源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的大学生租房平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 大学生租房平台的设计与实现的主…

Vue3整合wangEditor(富文本编辑器框架) 以及提供存储渲染方案

目录 概述 Vue3整合wagnEditor 图片的上传 图片的删除 文章存储 文章渲染 概述 实现功能:管理端使用富文本编辑器编写文章内容,将编辑好的文章存入数据库或服务器中,前端应用读取存储的文章内容作展示。 本文章能提供 ①Vue3整合wangEdi…

C++ - 二叉搜索树的基本实现

目录 0. 引言 1. 二叉搜索树 1.1 定义 1.2 特点 2. 二叉搜索树的实现 2.1 基本框架 2.2 查找 2.3 插入 2.4 删除 2.4.1 右子树为空 2.4.2 左子树为空 2.4.3 左右都不为空 2.4.4 代码 0. 引言 在C语言数据结构中,我们已经基本了解过二叉树&#xff…

Golang 开发实战day10 - Maps

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 教程10 - Maps 1. M…

WordPress网站上添加看板娘

续接上篇——基于LNMP部署wordpress-CSDN博客 目录 一.下载并解压 二.设置头文件 修改header.php 修改配置文件footer.php 三.将你设置的主题包上传到/usr/share/nginx/html/wp-content这个目录里 四.扩展——将看板娘修改到左侧 一.下载并解压 [rootaliyun ~]# wget htt…

2024年阿里云优惠券领取,买前必看的多渠道代金券获取方法

阿里云优惠代金券领取入口,阿里云服务器优惠代金券、域名代金券,在领券中心可以领取当前最新可用的满减代金券,阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法: 阿里云优惠券…

Leetcode刷题之删除有序数组的重复项

一、题目描述 删除有序数组的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums…

360安全卫士去除广告方法

大安全时代,360 安全卫士为您提供全面安全服务,电脑端下载: https://urlqh.cn/orQqc 在当今数字化时代,网络安全已成为人们日常生活中的重要关切。在这片浩瀚的网络海洋中,360安全卫士犹如一座坚不可摧的灯塔&#xf…

TL431内部架构学习

在V/I转换那个篇章里面看到了TL431的内部架构,那我们这一篇一点点的解析TL431的构成,首先TL431的内部详细原理图如下图1所示,为了便于理解我对管子进行了标注,倒时候我们好分析 图1:TL431内部原理图 拿到原理图后我们先简单的拆分,Q10和Q11就是达林顿管,控制Cathode的电压的Q2…

【RHEL】redhat yum 报错: not registered to Red Hat Subscription Management.

【RHEL】redhat yum 报错: not registered to Red Hat Subscription Management. 问题描述解决方法参考博客: 问题描述 使用redhat7用yum install -y dos2unix命令时出现这个错误 This system is not registered to Red Hat Subscription Management. You can use …

Zotero插件ZotCard中AI-NNDL文献笔记卡

github&#xff1a;ZotCard插件AI-NNDL论文卡片模板 Issue #67 018/zotcard (github.com) ZotCard插件AI-NNDL论文卡片模板是关于人工智能神经网络与深度学习论文的笔记卡片&#xff0c;效果预览如下图&#xff1a; 经过了整理代码如下&#xff1a; <h1><span styl…

Vue2 —— 学习(六)

一、Vue 脚手架 &#xff08;一&#xff09;介绍 Vue 脚手架是 Vue 官方提供的标准化开发工具 &#xff08;开发平台&#xff09; 脚手架版本最新版本 是 4.x 文档可以查看 http://cli.vuejs.org/zh/ 就是vue 官网文档中 的 vue.cli command line interface &#xff08;…

最齐全,最简单的免费SSL证书获取方法——实现HTTPS访问

一&#xff1a;阿里云 优势&#xff1a;大平台&#xff0c;在站长中知名度最高&#xff0c;提供20张免费单域名SSL证书 缺点&#xff1a;数量有限&#xff0c;并且只有单域名证书&#xff0c;通配符以及多域名没有免费版本。并且提供的单域名证书只有三个月的期限。 二&#…