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

本文涉及的产品
推荐全链路深度定制开发平台,高级版 1个月
简介: 本次分享内容为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 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
    云原生实践公开课
    课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
    目录
    相关文章
    |
    3天前
    |
    Kubernetes Cloud Native 微服务
    微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
    微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
    13 3
    |
    4天前
    |
    算法 量子技术 数据库
    量子计算:从理论到实践的深度解析
    在当前科技迅猛发展的时代,量子计算作为一项颠覆性的技术正在不断引起广泛关注。本文旨在深入探讨量子计算的理论基础、关键技术和实际应用,并分析其未来发展前景及面临的挑战。通过对量子比特、纠缠态和量子门操作等核心概念的详细阐述,读者将能够全面理解量子计算的基本原理和潜在影响。
    7 0
    |
    2天前
    |
    存储 前端开发 Java
    深入解析Java类加载机制:原理、过程与实践
    深入解析Java类加载机制:原理、过程与实践
    8 2
    |
    2天前
    |
    机器学习/深度学习 搜索推荐 算法
    推荐系统的算法与实现:深入解析与实践
    【6月更文挑战第14天】本文深入探讨了推荐系统的原理与实现,包括用户和项目建模、协同过滤、内容过滤及混合推荐算法。通过收集用户行为数据,系统预测用户兴趣,提供个性化推荐。实践中,涉及数据处理、建模、算法选择及结果优化。随着技术发展,推荐系统将持续改进,提升性能和用户体验。
    |
    3天前
    |
    Kubernetes 应用服务中间件 API
    Kubernetes关键组件解析
    【6月更文挑战第12天】Kubernetes是一个用于管理容器集群的平台,由Master节点负责集群控制,而Node节点执行管理命令。
    |
    3天前
    |
    缓存 Linux API
    深入解析 JMeter TPS 测试:从理论到实践
    本文档介绍了如何使用Apache JMeter进行TPS测试。TPS(Transactions Per Second)是衡量系统性能的关键指标,表示每秒处理的事务数。在JMeter中,创建测试计划包括配置线程组、HTTP请求、定时器和监听器。运行测试后,通过聚合报告分析吞吐量、平均响应时间和错误率来计算TPS。当TPS不足时,可优化服务器资源、应用程序代码、数据库查询或引入缓存来提升性能。掌握TPS测试有助于系统性能优化。
    7 0
    |
    4天前
    |
    监控 Cloud Native 持续交付
    云原生架构:从理念到实践的全面解析
    云原生架构已经成为现代软件开发和部署的核心理念。它不仅改变了传统的软件开发模式,还为企业提供了更高的灵活性、可扩展性和可靠性。本篇文章将深入探讨云原生架构的基本概念、关键组件以及实际应用案例,帮助读者更好地理解和应用这一先进的技术框架。
    26 3
    |
    4天前
    |
    编译器 PHP 开发者
    PHP 8.0 新特性解析与实践
    PHP 8.0的发布带来了许多令人激动的新特性和改进,本文将深入解析PHP 8.0的一些重要特性,包括JIT编译器、命名参数、属性声明的初始化等,并结合实际案例进行详细讨论,帮助开发者更好地理解和应用这些新特性。
    17 5
    |
    5天前
    |
    Kubernetes 数据处理 调度
    天呐!部署 Kubernetes 模式的 Havenask 集群太震撼了!
    【6月更文挑战第11天】Kubernetes 与 Havenask 集群结合,打造高效智能的数据处理解决方案。Kubernetes 如指挥家精准调度资源,Havenask 快速响应查询,简化复杂任务,优化资源管理。通过搭建 Kubernetes 环境并配置 Havenask,实现高可扩展性和容错性,保障服务连续性。开发者因此能专注业务逻辑,享受自动化基础设施管理带来的便利。这项创新技术组合引领未来,开启数据处理新篇章。拥抱技术新时代!
    |
    5天前
    |
    Kubernetes 前端开发 Serverless
    Serverless 应用引擎产品使用合集之如何调用Kubernetes集群内服务
    阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

    推荐镜像

    更多