【云原生系列--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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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现在,想执行一个业务订单的检查,该检查的代码放在test单元测试中,启动也是好好的,当点击对应的方法执行Test的时候就报错 tip:已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…

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

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

SIM Jacker攻击分析

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

【linux】centos7 换阿里云源

相关文章 【linux】CentOS 的软件源(Repository)学习-CSDN博客 查看yum配置文件 yum的配置文件通常位于/etc/yum.repos.d/目录下。你可以使用以下命令查看这些文件: ls /etc/yum.repos.d/ # 或者 ll /etc/yum.repos.d/备份当前的yum配置文…

AI 写作(八)实战项目一:自动写作助手(8/10)

一、项目背景与需求分析 (一)写作需求的多样化 在互联网普及的今天,人们对写作的需求呈现出前所未有的多样化态势。无论是学术论文、新闻报道,还是社交媒体的动态更新、网络小说的创作,都离不开高质量的写作。以学术研…

微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation无法打开页面问题

1.问题 微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation打开地图页面后,点击该页面下方“到这里”按钮,显示无法打开。如下图: 3.解决方案 在内嵌h5中不使用uniapp的api打开地图,而在h5页面事件处理程序中去跳转新的小程序页面,在该新页面去使用微信小程序…

SpringCloud核心组件(五)

文章目录 Gateway一. 概述简介1. Gateway 是什么2. 什么是网关?3.Gateway 和 Nginx 两个网关的区别什么是流量入口? 4.Gateway 能干嘛5.gateway 三大核心概念6.运行方式 二. 入门案例a.创建gateway模块,在pom.xml中引入依赖b.创建启动类GatewayApplicat…

1+X应急响应(网络)系统备份:

系统备份: 系统备份概述: 备份种类: 灾难恢复等级划分: 执行一次备份: 创建备份计划: 恢复备份:

Python学习26天

集合 # 定义集合 num {1, 2, 3, 4, 5} print(f"num:{num}\nnum数据类型为:{type(num)}") # 求集合中元素个数 print(f"num中元素个数为:{len(num)}") # 增加集合中的元素 num.add(6) print(num) # {1,2,3,4,5,6} # 删除…

git撤销、回退某个commit的修改

文章目录 撤销某个特定的commit方法 1:使用 git revert方法 2:使用 git rebase -i方法 3:使用 git reset 撤销某个特定的commit 如果你要撤销某个很早之前的 commit,比如 7461f745cfd58496554bd672d52efa8b1ccf0b42,可…

《译文》2024年11月数维杯国际大学生数学建模挑战赛题目

# 赛题正式发布 2024年第十届数维杯国际大学生数学建模挑战赛顺利开赛,竞赛开始时间为北京时间2024年11月15日09:00至北京时间2024年11月19日09:00,共计4天,竞赛题目正式发布,快来一起围观,你认为今年的哪个题目更具有…

LabVIEW 使用 Snippet

在 LabVIEW 中,Snippet(代码片段) 是一个非常有用的功能,它允许你将 一小段可重用的代码 保存为一个 图形化的代码片段,并能够在不同的 VI 中通过拖放来使用。 什么是 Snippet? Snippet 就是 LabVIEW 中的…

【苍穹外卖】学习日志-day1

目录 nginx 反向代理介绍 nginx 的优势 提高访问速度 负载均衡 保证后端服务安全 高并发静态资源 Swagger 生成 API 文档 Swagger 的使用方式 导入knife4j的maven坐标 在配置类中加入knife4j相关配置 设置静态资源映射 通过注解控制生成的接口文档 项目技术点 Token 模式 MD5 加…

Java poi 模板导出Word 带图片

Java poi 模板导出Word 带图片 重点&#xff01;&#xff01;&#xff01; 官方文档&#xff1a;https://deepoove.com/poi-tl/#_maven 最终效果 模板 其实内容都在官方文档里写的非常明白了 我这里只是抛砖引玉。 Maven依赖 <poi.version>4.1.2</poi.version>…