K8s 部署 Apache Kudu 集群

一、K8s 部署 Apache Kudu 集群

安装规划

组件replicas
kudu-master3
kudu-tserver3

1. 创建命名空间

vi kudu-ns.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: apache-kudu
  labels:
    name: apache-kudu
kubectl apply -f kudu-ns.yaml

查看命名空间:

kubectl get ns

在这里插入图片描述

2. 创建存储卷

vi local-kudu-storage.yaml
kind: StorageClass 
apiVersion: storage.k8s.io/v1
metadata:
  name: local-kudu-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer 	# 绑定模式为等待消费者,即当Pod分配到节点后,进行与PV的绑定
kubectl apply -f local-kudu-storage.yaml

查看存储卷

kubectl get sc

在这里插入图片描述

3. node 填加标签

kubectl label nodes node1 kudu-master-node=true
kubectl label nodes node2 kudu-master-node=true
kubectl label nodes node3 kudu-master-node=true
kubectl label nodes node1 kudu-tserver-node=true
kubectl label nodes node2 kudu-tserver-node=true
kubectl label nodes node3 kudu-tserver-node=true

查看 node 标签

kubectl get node --show-labels=true

在这里插入图片描述

4. 创建 kudu-master 和 tserver 的 PV 和 PVC

预先创建好存储目录,在需要分配的 node 上,并授予权限:

mkdir -p {/opt/kudu/master-data,/opt/kudu/tserver-data} && chmod 777  {/opt/kudu/master-data,/opt/kudu/tserver-data}
vi local-kudu-pv-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-kudu-master-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 5Gi
  local:
    path: /opt/kudu/master-data # 需要在指定的节点创建相应的目录
  nodeAffinity: # 指定节点,对节点配置label
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kudu-master-node
          operator: In
          values:
          - "true"
  persistentVolumeReclaimPolicy: Retain  # 回收策略为保留,不会删除数据,即当pod重新调度的时候,数据不会发生变化.
  storageClassName: local-kudu-storage

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: local-kudu-master-pvc
  namespace: apache-kudu
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-kudu-storage
  resources:
    requests:
      storage: 5Gi

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-kudu-tserver-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 5Gi
  local:
    path: /opt/kudu/tserver-data # 需要在指定的节点创建相应的目录
  nodeAffinity: # 指定节点,对节点配置label
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kudu-tserver-node
          operator: In
          values:
          - "true"
  persistentVolumeReclaimPolicy: Retain # 回收策略为保留,不会删除数据,即当pod重新调度的时候,数据不会发生变化.
  storageClassName: local-kudu-storage
  
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: local-kudu-tserver-pvc
  namespace: apache-kudu
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-kudu-storage
  resources:
    requests:
      storage: 5Gi
kubectl apply -f local-kudu-pv-pvc.yaml

查看 PV:

kubectl get pv

在这里插入图片描述

查看 PVC :

kubectl get pvc -n apache-kudu

在这里插入图片描述

5. 创建 Service 服务

vi kudu-svc.yaml
# headless service for kudu masters
apiVersion: v1
kind: Service
metadata:
  name: kudu-masters
  namespace: apache-kudu
  labels:
    app: kudu-master
spec:
  clusterIP: None
  ports:
    - name: ui
      port: 8051
    - name: rpc-port
      port: 7051
  selector:
    app: kudu-master

---
# NodePort service for masters
apiVersion: v1
kind: Service
metadata:
  name: kudu-master-ui
  namespace: apache-kudu
  labels:
    app: kudu-master
spec:
  clusterIP:
  ports:
    - name: ui
      port: 8051
      nodePort: 30051
      targetPort: 8051
  selector:
    app: kudu-master
  type: NodePort
  target-port:
  externalTrafficPolicy: Cluster # Local 只有所在node可以访问,Cluster 公平转发

---
# headless service for tservers
apiVersion: v1
kind: Service
metadata:
  name: kudu-tservers
  namespace: apache-kudu
  labels:
    app: kudu-tserver
spec:
  clusterIP: None
  ports:
    - name: ui
      port: 8050
    - name: rpc-port
      port: 7050
  selector:
    app: kudu-tserver
kubectl apply -f kudu-svc.yaml

查看创建的 service:

kubectl get svc -n apache-kudu

在这里插入图片描述

6. 创建 kudu-master 和 tserver 服务容器

vi kudu-master-tserver-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kudu-master
  namespace: apache-kudu
  labels:
    app: kudu-master
spec:
  serviceName: kudu-masters
  podManagementPolicy: "Parallel"
  replicas: 3
  selector:
    matchLabels:
      app: kudu-master
  template:
    metadata:
      labels:
        app: kudu-master
    spec:
      containers:
        - name: kudu-master
          image: apache/kudu:1.15.0
          imagePullPolicy: IfNotPresent
          env:
            - name: GET_HOSTS_FROM
              value: dns
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: KUDU_MASTERS
              value: "kudu-master-0.kudu-masters.apache-kudu.svc.cluster.local,kudu-master-1.kudu-masters.apache-kudu.svc.cluster.local,kudu-master-2.kudu-masters.apache-kudu.svc.cluster.local"
          args: ["master"]
          ports:
            - containerPort: 8051
              name: master-ui
            - containerPort: 7051
              name: master-rpc
          volumeMounts:
            - name: kudu-master-data
              mountPath: /mnt/data0
            - name: kudu-master-data
              mountPath: /var/lib/kudu
      volumes:
      - name: kudu-master-data
        persistentVolumeClaim:
          claimName: local-kudu-master-pvc
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kudu-tserver
  namespace: apache-kudu
  labels:
    app: kudu-tserver
spec:
  serviceName: kudu-tservers
  podManagementPolicy: "Parallel"
  replicas: 3
  selector:
    matchLabels:
      app: kudu-tserver
  template:
    metadata:
      labels:
        app: kudu-tserver
    spec:
      containers:
        - name: kudu-tserver
          image: apache/kudu:1.15.0
          imagePullPolicy: IfNotPresent
          env:
            - name: GET_HOSTS_FROM
              value: dns
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: KUDU_MASTERS
              value: "kudu-master-0.kudu-masters.apache-kudu.svc.cluster.local,kudu-master-1.kudu-masters.apache-kudu.svc.cluster.local,kudu-master-2.kudu-masters.apache-kudu.svc.cluster.local"
          args: ["tserver"]
          ports:
            - containerPort: 8050
              name: tserver-ui
            - containerPort: 7050
              name: tserver-rpc
          volumeMounts:
            - name: kudu-tserver-data
              mountPath: /mnt/data0
            - name: kudu-tserver-data
              mountPath: /var/lib/kudu
      volumes:
      - name: kudu-tserver-data
        persistentVolumeClaim:
          claimName: local-kudu-tserver-pvc
kubectl apply -f kudu-master-tserver-statefulset.yaml

查看 statefulset :

kubectl get statefulset -n apache-kudu

在这里插入图片描述

查看 pod:

kubectl get pods -n apache-kudu

在这里插入图片描述

7. 查看 web页面

http://nodel2:30051

在这里插入图片描述
查看 Master 情况:

在这里插入图片描述

查看 tserver 情况:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JUC高级-0614

5.LockSupport与线程中断 5.1 线程中断 蚂蚁金服面试题:如何中等一个线程,如何停止一个线程什么是中断机制 首先:一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.…

【spring源码系列-06】refresh中obtainFreshBeanFactory方法的执行流程

Spring源码系列整体栏目 内容链接地址【一】spring源码整体概述https://blog.csdn.net/zhenghuishengq/article/details/130940885【二】通过refresh方法剖析IOC的整体流程https://blog.csdn.net/zhenghuishengq/article/details/131003428【三】xml配置文件启动spring时refres…

十个实用MySQL函数

函数 0. 显示当前时间 命令:。 作用: 显示当前时间。 应用场景: 创建时间,修改时间等默认值。 例子: 1. 字符长度 命令:。 作用: 显示指定字符长度。 应用场景: 查看字符长度时。 例子: 2. 日期格式化 命令…

面试---简历

项目 1.1、商品管理 新增商品 同时插入商品对应的使用时间数据,需要操作两张表:product,product_usetime。在productService接口中定义save方法,该方法接受一张Dto对象,dto对象继承自product类,并将prod…

Stable Diffusion webui 基础参数学习

哈喽,各位小伙伴们大家好,最近一直再研究人工智能类的生产力,不得不说随着时代科技的进步让人工智能也得到了突破性的发展。而小编前段时间玩画画也是玩的不可自拔,你能想想得到,一个完全不会画画的有一天也能创作出绘…

【测试基础01】

软件测试 一、软件测试基本概念(1)、软件测试的定义(2)、软件错误的定义(3)、测试分类 二、需求文档的评审三、软件测试计划(1)、测试范围(2)、测试环境(3)、测试策略(4)、测试管理(5)、测试风险(6)、模板 一、软件测试基本概念 (1)、软件测试的定义 软件测试是从前期需求文档…

freeswitch 使用 silero-vad 静音拆分使用 fastasr 识别

silero-vad 在git 的评分挺高的测试好像比webrtc vad好下面测试下 silero-vad 支持c 和py 由于识别c的框架少下面使用py 以下基于python3.8torch1.12.0torchaudio 1.12.0 1.由于fastasr 需要16k 所以 将freeswitch的实时音频mediabug 8k转成16k 用socket传到py 模块代码…

ChatGLM-6B 在 ModelWhale和本地 平台的部署与微调教程

ChatGLM-6B 在 ModelWhale 平台的部署与微调教程 工作台 - Heywhale.com ChatGLM-6B 介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费…

高压放大器在介电材料测试中的应用

介电材料测试是一项重要的材料性能测试,它涉及到物理学、化学、材料科学等多个学科领域。高压放大器是介电材料测试中的一种重要设备,它可以放大微弱的电信号,提高测试的准确性和精度。下面将详细介绍高压放大器在介电材料测试中的应用。 图&…

Web前端开发技术储久良第三版课后选择答案(1-10章)

P16-第1章 练习与实验答案 练习1 1.选择题 【1】Html是一种()语言。 【A】编译型 【B】超文本标记 【C】高级程序设计 【D】面向对象编程【2】世界上第一个网页是()。 【A】http://www.w3c.org 【B】http:/info.cern.ch 【C】http://www.microsoft.com…

【论文阅读】(2023.06.09-2023.06.18)论文阅读简单记录和汇总

(2023.06.09-2023.06.12)论文阅读简单记录和汇总 2023/06/09:虽然下周是我做汇报,但是到了周末该打游戏还是得打的 2023/06/12:好累好困,现在好容易累。 目录 (TCSVT 2023)Facial Image Compression via …

2021电工杯数学建模B题解题思路

目录 一、前言 二、问题背景 三、具体问题 四、解题思路 (一)整体思路 (二)问题一 (三)问题二 (四)问题三 (五)问题四 (六)…

使用parcel搭建threejs开发环境

一、什么是parcel parcel官网:https://www.parceljs.cn/ Parcel是一个快速、零配置的Web应用打包器,可将JavaScript、CSS、HTML和图像等静态文件打包到一个捆绑文件中。它的主要目标是简化Web应用程序的打包过程,使开发人员可以更快速地创建…

【深度学习】1 感知机(人工神经元)

认识感知机 感知机接收多个输入信号,输出一个信号 感知机的信号只有“流/不流”(1/0)两种取值 0对应“不传递信号”,1对应“传递信号”。 输入信号被送往神经元时,会被分别乘以固定的权重。神经元会计算传送过来的信号的综合,只有…

怎么利用代理IP优化网络爬虫

网络爬虫会自动扫描互联网,搜集大量数据并将它们组织起来。但是,许多网站都采取了反爬虫策略,限制了网络爬虫的活动。这时候,代理IP就起到了关键作用。 一、代理ip在网络爬虫中的作用 代理ip爬虫中使用代理IP有很多好处。首先&…

OpenCV 笔记_3

文章目录 笔记_3直方图匹配(直方图规定化) 主要针对单通道图像模板匹配matchTemplate 模板匹配函数 图像卷积filter2D 卷积函数 过滤器图像噪声的产生cvflann::rand_double 产生随机浮点数在(0~1)之间cvflann::rand_int 产生随机整数在(0~RAN…

golang实现webgis后端开发

目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 (5)数据返回 2.前端传入的geojson储存到数据库 3、其他功能实现 总结 前言 停更了…

系列二、RuoYi前后端分离(登录密码加密去除公钥)

一、问题描述 系列一虽然实现了登录时密码加密,但是/getPublicKey返回的结果中,把私钥也返回了,这样显然是不合理的,如下: 二、后端代码修改 2.1、RSAUtil package com.tssl.business.utils;import org.apache.comm…

【自监督论文阅读 2】MAE

文章目录 一、摘要二、引言2.1 引言部分2.2 本文架构 三、相关工作3.1 Masked language modeling3.2 Autoencoding3.3 Masked image encoding3.4 Self-supervised learning 四、方法4.1 Masking4.2 MAE encoder4.3 MAE decoder4.4 Reconstruction target 五、主要实验5.1 不同m…

flutter:数据持久化

简单的数据持久化 保存数据到本地磁盘是应用程序常用功能之一,比如保存用户登录信息、用户配置信息等。而保存这些信息通常使用 shared_preferences,它保存数据的形式为 Key-Value(键值对),支持 Android 和 iOS。shar…