【技术解析 | 实践】部署Kubernetes模式的Havenask集群

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 本次分享内容为havenask的kubernetes模式部署,由下面2个部分组成(部署Kubernetes模式Havenask集群、 Kubernetes模式相关问题排查),希望可以帮助大家更好了解和使用Havenask。

一、部署Kubernetes模式Havenask集群

它主要分为四个步骤:首先准备 k8s 的环境,然后创建对应集群,然后创建表,最后在这个表中进行 SQL 语句的读写。

image.png

大家可以先参考 Havenask 官网或Github中的文档进行了解。

(hape工具参考: https://havenask.net/#/doc/sql/petool/intro

(kubernetes部署参考: https://havenask.net/#/doc/v1-2-0/sql/petool/startcluster/k8smode


1、准备环境

准备环境

  • 准备一个k8s集群,确保能够访问最新的havenask镜像。建议k8s集群至少包括10台集群4core cpu & 15G mem的机器
    • 找一台联通k8s集群的主控机用于后续运行hape命令。获取k8s集群的kubeconfig(可以从k8s集群的主节点机器的~/.kube/config中获取,或者从云服务厂商处直接获取), 拷贝到主控机的~/.kube/config上,使得这台机器可以使用kubectl访问k8s的接口
    • 创建并进入hape容器
    wget https://github.com/alibaba/havenask/releases/download/v1.2.0/create_container.sh
    /create_container.sh <container_name> <image>
    /<container_name>/sshme


    K8S集群需要有主控机,能够访问K8S 群的接口,一般来说需要去拷贝集群的kubeconfig到对应路径,集群也可以从主控机上访问,然后要在主控机上去下载链接,去创建 HAPE 容器。


    2、创建集群

    hdfs配置
    • 由于k8s模式的havenask集群需要在集群内部不同机器之间共享配置、索引等数据,因此需要搭建hdfs文件系统,用户要确保k8s集群池中的所有节点都能访问该hdfs地址
    • 接下来在havenask集群中k8s配置/ha3_install/hape_conf/k8s的global.conf中修改以下变量:
    • global.conf文件的dataStoreRoot:havenask的所有元数据和索引文件都会放在这个hdfs路径上面,需要确保存在且能被k8s集群中的机器访问
    • c2K8sNamespace(可选):表示集群admin和c2(介绍见c2调度器)所在的k8s命名空间,默认为havenask-master
    • k8sNamespace(可选):表示集群worker所在的k8s命名空间,默认为havenask-worker


    因为 havenask 集群中很多的文件都是通过 hdfs 共享的,所以要确保k8s 集群的池子当中所有节点都能够访问这个地址,需要把 hdfs 地址配置到 hdfs 的配置中,准备好了所有的配置,接下来可以用这个命令来验证一下集群是不是配置都比较正常。

    hape validate -c /ha3_install/hape_conf/k8s


    K8S 集群没法在所有物理机上预先准备镜像,所以有些进程创建时由于在拉镜像所以可能比较慢。可以预先用命令来帮助准备环境,把镜像都拉到这些机器上。它主要是拉起了一个k8s demonset。如果集群是第一次准备,大概可能要准备 20-30 分钟。可以用kubectl 的命令来看看 daemons 是否已经准备好。


    创建havenask集群

    hape start havenask -c /ha3_install/hape_conf/k8s
    • 无论集群是否创建成功,都可以执行gs子命令查看集群状态,也可以用kubectl get pods命令查看集群对应的容器。
    • 使用kubectl查看集群容器状态的时候,需要注意的是k8s模式下havenask集群的admin默认创建在havenask-master命名空间,worker默认创建在havenask-worker命名空间。其中havenask-master命名空间中可以看到一个c2和c2-proxy的无状态服务,介绍见c2调度器
    kubectl get pods -n havenask-master
    kubectl get pods -n havenask-worker


    这些容器可以分为两个部分,一个是 master 的一些节点,就是集群当中的admin。另一个 worker 节点,是被 admin 拉起来的一些工作节点。

    它们分别在两个命名空间里面。可以用kubectl 看到它们的一些容器的情况,可以看到很多节点都被拉起。然后创建表,可以执行下面命令去创建一个2分片的直写表。


    3、创建表

    • havenask表分为直写表和全量表两种,可以选择其中一种进行创建,或两种都创建
    • 创建直写表
    • -t表示表名字
    • -p表示分片数。多机模式下,假设有N张表,其中最大分片为M,那么所有表的分片要求必须要么是1,要么是M
    • -s表示schema路径
    hape create table -t in0 -p 2 -s /ha3_install/example/cases/normal/in0_schema.json -c /ha3_install/hape_conf/k8s


    可以执行下面命令去创建一个2分片的直写表。


    4、读取数据

    • 在完成建表后,可以使用以下命令查看集群状态,判断集群是否已经准备好可以读写。状态含义见Hape集群状态
    ### 当返回的结果中,sqlClusterInfo的clusterStatus为READY时集群已经准备好
    hape gs havenask -c /ha3_install/hape_conf/k8s


    二、Kubernetes模式相关问题排查

    • kubernetes 模式下,排查问题基本上与之前的多机模式跟单机模式相似。它唯一与普通的模式不同的地方在于它可能有些问题需要借助 kubectl 工具去排查。


    • 例如之前登录容器可能利用sshme 方法去登,然后看一些日志和问题排查,但是现在可能要用 kubectl 工具去登录容器。先重新建起来,看到集群的容器可能有问题,可以用 kubectl 这个命令去进去工作节点。


    image.png


    以上工作节点可能有问题,也有可能是 admin 节点有问题。也可以进入 admin 节点去看工作状态。

    相关问题排查链接:https://havenask.net/#/doc/v1-2-0/sql/petool/problem#k8s%E6%A8%A1%E5%BC%8F%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5


    三、结尾

    具体Havenask的Kubernetes模式视频可以通过链接查看,欢迎各位开发者使用。

    视频链接:https://developer.aliyun.com/live/253978?spm=a2c6h.14164896.0.0.604547c5N5yL9Z&scm=20140722.S_community@@%E8%A7%86%E9%A2%91@@253978._.ID_253978-RL_havenask-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_0


    关注我们:

    Havenask 开源官网:https://havenask.net/

    Havenask-Github 开源项目地址:https://github.com/alibaba/havenask

    阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch

    钉钉扫码加入 Havenask 开源官方技术交流群:

    1715594790746.png

    相关实践学习
    容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
    通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
    容器应用与集群管理
    欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
    目录
    相关文章
    |
    7天前
    |
    设计模式 监控 Java
    解析Spring Cloud中的断路器模式原理
    解析Spring Cloud中的断路器模式原理
    |
    5天前
    |
    存储 Kubernetes 监控
    Kubernetes 集群的持续性能优化策略
    【5月更文挑战第70天】 随着容器化技术的普及,Kubernetes 已成为管理微服务架构的首选平台。然而,在大规模部署和长期运行过程中,集群往往会遭遇性能瓶颈,影响服务的响应速度和稳定性。本文将探讨针对 Kubernetes 集群的性能优化策略,包括资源调度优化、网络延迟降低、存储效率提升及监控与日志分析等方面,旨在为运维工程师提供一套系统化的持续优化方法,确保集群性能的长期稳定。
    |
    4天前
    |
    设计模式 中间件 测试技术
    PHP中的中间件模式解析与实践
    【7月更文挑战第11天】在现代Web开发中,中间件模式已成为设计高效、可维护应用程序的关键。本文深入探讨了PHP环境下中间件模式的实现方法,并提供了一个实际示例来演示如何利用中间件优化请求处理流程。
    |
    7天前
    |
    Kubernetes Cloud Native 微服务
    企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
    这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
    |
    11天前
    |
    存储 弹性计算 运维
    阿里云容器服务Kubernetes版(ACK)部署与管理体验评测
    阿里云容器服务Kubernetes版(ACK)是一个功能全面的托管Kubernetes服务,它为企业提供了快速、灵活的云上应用管理能力。
    74 2
    |
    11天前
    |
    负载均衡 监控 安全
    微服务架构中的API网关模式解析
    【7月更文挑战第4天】在微服务架构中,API网关不仅是一个技术组件,它是连接客户端与微服务之间的桥梁,负责请求的路由、负载均衡、认证、限流等关键功能。本文将深入探讨API网关的设计原则、实现方式及其在微服务架构中的作用和挑战,帮助读者理解如何构建高效、可靠的API网关。
    |
    13天前
    |
    数据可视化 前端开发 大数据
    商场智能导视系统深度解析,AR与大数据融合创新商业运营模式
    **商场智能导视系统提升购物体验:** 通过三维电子地图、AR导航、AR营销、VR全景导购及可视化数据,解决顾客寻路困扰,增强店铺曝光,简化招商流程,优化商场管理,借助科技创新驱动顾客满意度、品牌曝光度及运营效率的全面提升。
    34 0
    商场智能导视系统深度解析,AR与大数据融合创新商业运营模式
    |
    15天前
    |
    消息中间件 Kubernetes Android开发
    消息队列 MQ产品使用合集之如何在kubernetes环境里面部署
    消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
    |
    17天前
    |
    前端开发 Devops 测试技术
    阿里云云效产品使用问题之更换所部署的环境关联的ACK集群该如何实现
    云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
    |
    1月前
    |
    Kubernetes 微服务 容器
    Aspire项目发布到远程k8s集群
    Aspire项目发布到远程k8s集群
    406 2
    Aspire项目发布到远程k8s集群

    推荐镜像

    更多