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

简介: 本次分享内容为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

    相关实践学习
    深入解析Docker容器化技术
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
    目录
    相关文章
    |
    11月前
    |
    传感器 人工智能 物联网
    穿戴科技新风尚:智能服装设计与技术全解析
    穿戴科技新风尚:智能服装设计与技术全解析
    886 85
    |
    11月前
    |
    人工智能 API 语音技术
    HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
    本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
    814 31
    |
    11月前
    |
    编解码 监控 网络协议
    RTSP协议规范与SmartMediaKit播放器技术解析
    RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
    601 5
    |
    11月前
    |
    数据采集 机器学习/深度学习 存储
    可穿戴设备如何重塑医疗健康:技术解析与应用实战
    可穿戴设备如何重塑医疗健康:技术解析与应用实战
    434 4
    |
    11月前
    |
    机器学习/深度学习 人工智能 自然语言处理
    AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
    本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
    718 6
    |
    4月前
    |
    人工智能 算法 调度
    阿里云ACK托管集群Pro版共享GPU调度操作指南
    本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
    444 3
    |
    4月前
    |
    弹性计算 监控 调度
    ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
    ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
    306 89
    |
    9月前
    |
    资源调度 Kubernetes 调度
    从单集群到多集群的快速无损转型:ACK One 多集群应用分发
    ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
    479 9
    |
    9月前
    |
    资源调度 Kubernetes 调度
    从单集群到多集群的快速无损转型:ACK One 多集群应用分发
    本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
    |
    11月前
    |
    存储 Kubernetes 监控
    K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
    总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
    1024 33

    推荐镜像

    更多
  • DNS