【云原生系列--Longhorn的部署】

Longhorn部署手册

1.部署longhorn

longhorn架构图:
在这里插入图片描述

1.1部署环境要求

  • kubernetes版本要大于v1.21

  • 每个节点都必须装open-iscsi ,Longhorn依赖于 iscsiadm主机为 Kubernetes 提供持久卷。

    apt-get install -y open-iscsi
    
  • RWX 支持要求每个节点都安装 NFSv4 客户端

  • 主机文件系统支持file extents存储数据的功能

    1. ext4
    2. xfs
  • bashcurlfindmntgrepawkblkidlsblk 必须安装

  • Mount propagation 必须启用,它允许将一个容器挂载的卷与同一 pod 中的其他容器共享,甚至可以与同一节点上的其他 pod 共享

1.2 环境检查

root@master01:~/Longhorn# wget https://github.com/longhorn/cli/releases/download/v1.7.1/longhornctl-linux-amd64
root@master01:~/Longhorn# ll
total 192552
-rwxr-xr-x  1 root root  40878232 Nov 15 10:16 longhornctl-linux-amd64
root@master01:~/Longhorn# chmod a+x  longhornctl-linux-amd64
root@master01:~/Longhorn# export KUBECONFIG=/root/.kube/config
root@master01:~/Longhorn# ./longhornctl-linux-amd64 check preflight  #这个是每个节点启动pod来检查环境是否合格

在这里插入图片描述

1.3 使用helm部署longhorn

注意事项:longhorn默认的数据存放路径是/var/lib/longhorn,根据实际情况修改,可以在values.yaml文件里修改,但是我修改时没有生效,故采用传参的方式修改

1、添加helm仓库
helm repo add longhorn https://charts.longhorn.io
helm repo update
2、创建命名空间longhorn-system(在chart包中写死了命名空间必须是longhorn)
kubectl create ns longhorn-system
3、安装longhorn
(1)在线安装
helm install longhorn longhorn/longhorn --namespace longhorn-system --set defaultDataPath=/data/longhorn --create-namespace --version 1.7.1
(2)离线安装
wget  https://github.com/longhorn/longhorn/releases/download/v1.7.1/charts.tar.gz
helm install longhorn longhorn --namespace longhorn-system  --set defaultDataPath=/data/longhorn
root@master01:~/Longhorn/longhorn# kubectl get pod -n longhorn-system
NAME                                                READY   STATUS    RESTARTS      AGE
csi-attacher-644c7b7568-495hh                       1/1     Running   0             56m
csi-attacher-644c7b7568-cqb66                       1/1     Running   0             56m
csi-attacher-644c7b7568-v9p4r                       1/1     Running   1 (71m ago)   89m
csi-provisioner-58cc84b487-24gc4                    1/1     Running   0             56m
csi-provisioner-58cc84b487-hqtds                    1/1     Running   1 (71m ago)   89m
csi-provisioner-58cc84b487-jj8z5                    1/1     Running   0             56m
csi-resizer-6d5c898684-gk5kx                        1/1     Running   0             56m
csi-resizer-6d5c898684-lmln4                        1/1     Running   0             89m
csi-resizer-6d5c898684-rmwrs                        1/1     Running   0             56m
csi-snapshotter-68b686dc4-fgm4f                     1/1     Running   0             56m
csi-snapshotter-68b686dc4-lfgx5                     1/1     Running   0             56m
csi-snapshotter-68b686dc4-r552m                     1/1     Running   0             89m
engine-image-ei-f4f7aa25-54kmw                      1/1     Running   0             89m
engine-image-ei-f4f7aa25-bfnbt                      1/1     Running   0             89m
engine-image-ei-f4f7aa25-w4pmj                      1/1     Running   0             89m
instance-manager-2b871e5c27104071c7f8ae34c9384354   1/1     Running   0             54m
instance-manager-6d8ba5e2d6850b4dbd6df7e2bf4f9c16   1/1     Running   0             54m
instance-manager-95de354c4f2e1d5c13376714640f455c   1/1     Running   0             89m
longhorn-csi-plugin-2b2xc                           3/3     Running   0             89m
longhorn-csi-plugin-5zb6x                           3/3     Running   0             89m
longhorn-csi-plugin-9ccmx                           3/3     Running   0             89m
longhorn-driver-deployer-795c448b6c-vcg46           1/1     Running   0             56m
longhorn-manager-4pg48                              2/2     Running   5 (91m ago)   103m
longhorn-manager-dvjmd                              2/2     Running   0             87m
longhorn-manager-jgmhw                              2/2     Running   5 (91m ago)   103m
longhorn-ui-75f6f6bc8b-b5vkp                        1/1     Running   4 (90m ago)   91m
longhorn-ui-75f6f6bc8b-ktkfz                        1/1     Running   2 (56m ago)   56m#注意:部署longhorn需要拉取镜像
root@master01:~/Longhorn# cat pull-image.sh
nerdctl pull longhornio/longhorn-manager:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/longhorn-share-manager:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/longhorn-ui:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/csi-attacher:v4.6.1 --namespace=k8s.io
nerdctl pull longhornio/csi-provisioner:v4.0.1 --namespace=k8s.io
nerdctl pull longhornio/csi-resizer:v1.11.1 --namespace=k8s.io
nerdctl pull longhornio/csi-snapshotter:v7.0.2 --namespace=k8s.io
nerdctl pull longhornio/longhorn-engine:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/longhorn-instance-manager:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/csi-node-driver-registrar:v2.12.0 --namespace=k8s.io
nerdctl pull longhornio/livenessprobe:v2.14.0 --namespace=k8s.io
nerdctl pull  longhornio/longhorn-cli:v1.7.1 --namespace=k8s.io
nerdctl pull registry.k8s.io/pause:3.1 --namespace=k8s.io
nerdctl pull alpine:3.17 --namespace=k8s.io

1.4 检查longhorn

1.4.1查看storageclass存储卷
root@master01:~/Longhorn# kubectl get sc
NAME                 PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
longhorn (default)   driver.longhorn.io                            Delete          Immediate           true                   92m
longhorn-static      driver.longhorn.io                            Delete          Immediate           true                   21m
nfs-client           k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate           false                  49d#可以看出longhorn自动给集群创建两个Storageclass动态分配卷且会自动给longhorn设置为default,longhorn-static这个Storageclass是手动创建pv、pvc卷,手动将pvc和Storageclass绑定
1.4.2创建pod

在这里插入图片描述

因为我的集群只有三个节点,而longhorn是三副本存储机制,故我每个节点都存有pod的数据,如果你是四个node节点,你就会发现有个节点是没有mongodb-0 pod的数据
在这里插入图片描述

2.Longhorn组件的概念

2.1csi-attacher

  • 作用csi-attacher 负责将 Kubernetes 的持久卷(Persistent Volume, PV)与容器(Pod)关联。它会确保在 Pod 被调度到节点时,正确地挂载相关的卷。
  • 功能:主要处理 CSI 卷的挂载操作,即在 pod 创建时将卷“附加”(attach)到节点,或者在 pod 被删除时,卸载卷。

2.2csi-provisioner

  • 作用csi-provisioner 是 Longhorn 的自动存储卷创建控制器,它负责动态创建存储卷。它与 Kubernetes 的 PersistentVolumeClaim(PVC)资源配合使用,当 PVC 创建时,如果没有匹配的持久卷,csi-provisioner 会调用 CSI 驱动去创建一个新的 Longhorn 卷。
  • 功能:监听 PVC 事件,基于用户请求自动创建或删除卷。这个组件使得卷的动态供应成为可能。

2.3csi-resizer

  • 作用csi-resizer 负责在需要时调整卷的大小(即扩容或缩容),当用户通过 PVC 调整卷大小时,csi-resizer 会触发 Longhorn 进行相应的卷扩展或缩减。
  • 功能:监听 PVC 的 spec.resources.requests.storage 变化,并根据 PVC 的请求对卷进行扩展。它与 Longhorn 的存储引擎交互,确保实际存储卷的大小和请求一致。

2.4csi-snapshotter

  • 作用csi-snapshotter 负责对卷进行快照操作。它允许用户创建卷的快照,以便进行数据备份、恢复或克隆操作。
  • 功能:监听 Kubernetes 中的 VolumeSnapshot 资源,并与 Longhorn 交互来创建、删除和恢复卷快照。通过这个组件,用户可以在 Kubernetes 中管理 Longhorn 卷的快照。

2.5engine-image-ei

  • 作用engine-image-ei 负责管理 Longhorn 存储引擎的镜像版本。在 Longhorn 中,每个存储引擎(例如,块存储的实现)都与一个“引擎镜像”相关联,这些镜像包括特定版本的存储引擎和驱动程序。
  • 功能:通过这个组件,Longhorn 可以管理和更新其存储引擎的版本,确保引擎镜像正确地加载和部署。

2.6instance-manager

  • 作用instance-manager 管理 Longhorn 中的数据卷和节点之间的连接。它负责为每个卷启动和管理虚拟机实例(或容器)来进行数据管理和 I/O 操作。
  • 功能:在 Kubernetes 节点上创建并管理 Longhorn 数据卷的“实例”(实际运行的容器),这些实例负责数据的读取和写入操作。instance-manager 确保数据存储和访问的高可用性和可靠性。

2.7longhorn-csi-plugin

  • 作用longhorn-csi-plugin 是 Longhorn 提供的 CSI 插件,它允许 Kubernetes 使用 Longhorn 存储。它充当 Kubernetes 与 Longhorn 存储之间的中介,负责卷的挂载、卸载、创建等操作。
  • 功能:实现了 Kubernetes CSI 卷插件的接口,负责与 Longhorn 存储系统的交互,包括卷的创建、删除、挂载等操作。

2.8longhorn-manager

  • 作用longhorn-manager 是 Longhorn 的控制器组件,负责整个 Longhorn 系统的管理、协调和控制。它监视和管理 Longhorn 存储系统的各个组件,包括卷、节点、快照、卷克隆等。
  • 功能:主要负责 Longhorn 存储系统的整体操作,例如卷管理、快照管理、扩容和缩容操作、节点状态管理等。它确保系统的健康状态,协调各个组件的工作。

2.9longhorn-ui

  • 作用longhorn-ui 是 Longhorn 的用户界面组件,提供了一个 Web 界面,用户可以通过它来管理和监控 Longhorn 存储系统。它允许用户方便地查看存储卷的状态、创建和删除卷、管理快照等。
  • 功能:提供图形化界面用于卷管理、快照管理、节点监控和集群状态查看。用户可以通过 Web UI 来操作和配置 Longhorn 存储系统,进行卷的创建、删除、备份等操作。

总结:

  • csi-attacher:卷挂载
  • csi-provisioner:动态卷供应
  • csi-resizer:卷扩展
  • csi-snapshotter:卷快照
  • engine-image-ei:存储引擎镜像管理
  • instance-manager:管理存储实例
  • longhorn-csi-plugin:与 Kubernetes 的 CSI 插件接口
  • longhorn-manager:集群和组件管理
  • longhorn-ui:图形化管理界面

参考链接:https://www.cnblogs.com/misakivv/p/18436873

官网:https://longhorn.io/

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

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

相关文章

跟李笑来学美式俚语(Most Common American Idioms): Part 02

Most Common American Idioms: Part 02 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…

Molecular signatures database (MSigDB) 3.0

文献翻译和解读(解读在最后) 摘要 动机: 良好注释的基因集代表了生物学过程的全貌,对于大规模基因组数据的有意义和深入解读至关重要。分子特征数据库(MSigDB)是最广泛使用的此类基因集资源库之一。 结果…

【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验

实验三: HDFS Java API编程实践 实验题目 HDFS Java API编程实践 实验目的 熟悉HDFS操作常用的Java API。 实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 实验…

Flowable 构建后端服务(后端以及数据库搭建) Flowable Modeler 设计器搭建(前端)

案例地址&#xff1a;xupengboo-flowable-example Flowable 构建后端服务&#xff08;后端以及数据库搭建&#xff09; 以 Spring Boot 项目为例&#xff1a; 引入 Flowable 必要依赖。 <!-- flowable 依赖 --> <dependency><groupId>org.flowable</gr…

2022 年 9 月青少年软编等考 C 语言二级真题解析

目录 T1. 统计误差范围内的数思路分析 T2. 全在其中思路分析 T3. Lab 杯思路分析 T4. 有趣的跳跃思路分析 T5. 反反复复思路分析 T1. 统计误差范围内的数 统计一个整数序列中与指定数字 m m m 误差范围小于等于 x x x 的数的个数。 时间限制&#xff1a;1 s 内存限制&#…

ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品拍卖当然也不能排除在外&#xff0c;随着商品拍卖管理的不断成熟&#xff0c;它彻底改变了过去传统的经营管理方式&#xff0c;不仅使商品…

智慧农业的前世今生

智慧农业是将现代信息技术与传统农业相结合的新型农业生产方式&#xff0c;其发展历程如下&#xff1a; 20世纪70年代末&#xff0c;以美国为代表的欧美国家率先开始农业信息化、智能化的应用研究&#xff0c;以农业专家系统为代表的农业信息化应用开始在农业生产领域萌芽。我…

BERT模型核心组件详解及其实现

摘要 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Transformer架构的预训练模型&#xff0c;在自然语言处理领域取得了显著的成果。本文详细介绍了BERT模型中的几个关键组件及其实现&#xff0c;包括激活函数、变量初始化…

Transformer中的算子:其中Q,K,V就是算子

目录 Transformer中的算子 其中Q,K,V就是算子 一、数学中的算子 二、计算机科学中的算子 三、深度学习中的算子 四、称呼的由来 Transformer中的算子 其中Q,K,V就是算子 “算子”这一称呼源于其在数学、计算机科学以及深度学习等多个领域中的广泛应用和特定功能。以下是…

ElementPlus el-upload上传组件on-change只触发一次

ElementPlus el-upload上传组件on-change只触发一次 主要运用了:on-exceed方法 废话不多说&#xff0c;直接上代码 <el-uploadclass"avatar-uploader"action"":on-change"getFilesj":limit"1":auto-upload"false"accep…

厦大南洋理工最新开源,一种面向户外场景的特征-几何一致性无监督点云配准方法

导读 本文提出了INTEGER&#xff0c;一种面向户外点云数据的无监督配准方法&#xff0c;通过整合高层上下文和低层几何特征信息来生成更可靠的伪标签。该方法基于教师-学生框架&#xff0c;创新性地引入特征-几何一致性挖掘&#xff08;FGCM&#xff09;模块以提高伪标签的准确…

Conda环境与Ubuntu环境移植详解

Conda环境与Ubuntu环境移植详解 在计算机科学中&#xff0c;环境迁移是一项常见的任务&#xff0c;特别是对于使用Anaconda等工具进行数据科学和机器学习的开发人员。迁移环境不仅能够帮助开发者在不同设备间无缝切换&#xff0c;还能确保项目依赖的一致性&#xff0c;从而避免…

【深度学习基础】PyCharm anaconda PYTorch python CUDA cuDNN 环境配置

这里写目录标题 PyCharm 安装anaconda安装PYTorch安装确定python版本CUDA安装cuDNN安装检验环境是否配置成功参照:PyCharm 安装 官网下载 anaconda安装 官网下载 :https://www.anaconda.com/download 配置环境变量,增加 D:\WorkSoftware\Install\Anaconda3 D:\WorkSoftw…

生产环境中AI调用的优化:AI网关高价值应用实践

随着越来越多的组织将生成式AI引入生产环境&#xff0c;他们面临的挑战已经超出了初步实施的范畴。如果管理不当&#xff0c;扩展性限制、安全漏洞和性能瓶颈可能会阻碍AI应用的推广。实际问题如用户数据的安全性、固定容量限制、成本管理和延迟优化等&#xff0c;需要创新的解…

Redis 概 述 和 安 装

安 装 r e d i s: 1. 下 载 r e dis h t t p s : / / d o w n l o a d . r e d i s . i o / r e l e a s e s / 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz 4. 安装gcc yum install gcc 5. 进入目录 cd redis-6.2.1 6. 编译 make …

SpringBoot 2.2.10 无法执行Test单元测试

很早之前的项目今天clone现在&#xff0c;想执行一个业务订单的检查&#xff0c;该检查的代码放在test单元测试中&#xff0c;启动也是好好的&#xff0c;当点击对应的方法执行Test的时候就报错 tip&#xff1a;已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…

Dubbo 3.2 源码导读

Dubbo 是一个高性能的 Java RPC 框架&#xff0c;广泛用于构建分布式服务。Dubbo 3.2 版本引入了一些新的特性和改进&#xff0c;是一个值得深入研究的版本。以下是对 Dubbo 3.2 源码的导读&#xff0c;帮助你理解其架构和设计。 1. 源码获取 从 GitHub 上获取 Dubbo 3.2 的源…

[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]

YOLOv5是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv5具有更高的…

Flutter:Widget生命周期

StatelessWidget&#xff1a;无状态部件的生命周期 import package:flutter/material.dart;void main() {runApp(App()); }class App extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(home: MyHomePage(title: MyHome),);} }class M…

SIM Jacker攻击分析

简介&#xff1a; 2019年9月12日&#xff0c;AdaptiveMobile Security公布了一种针对SIM卡ST Browser的远程攻击方式&#xff1a;Simjacker。攻击者使用普通手机发送特殊构造的短信即可远程定位目标&#xff0c;危害较大 。sim卡的使用在手机上的使用非常普遍&#xff0c;所以…