【云原生系列--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/

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

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

相关文章

Elastic Agent:可灵活地在任何地方发送和处理任何数据

作者:来自 Elastic Nima Rezainia Elastic Agent 是一款功能强大且用途广泛的工具,可用于从各种数据源(包括自定义用户应用程序)收集日志和指标。现在,Elastic Agent 提供了无与伦比的灵活性,可以将数据准确…

一、HTML

一、基础概念 1、浏览器相关知识 这五个浏览器市场份额都非常大,且都有自己的内核。 什么是内核: 内核是浏览器的核心,用于处理浏览器所得到的各种资源。 例如,服务器发送图片、视频、音频的资源,浏览…

IDEA旗舰版编辑器器快速⼊门(笔记)

简介:javaweb开发必备软件之IDEA期间版介绍 DEA编辑器器版本介绍 官⽹网:https://www.jetbrains.com/地址:https://www.jetbrains.com/idea/download/#sectionmac DEA 分社区版(Community) 和 旗舰版(Ultimate),我们做JavaWeb开…

【鸿蒙开发】第十五章 H5与端侧交互、Cookies以及Web调试

目录 1. H5与端侧交互 1.1 应用侧调用前端页面函数 1.2 前端页面调用应用侧函数 1.2.1 复杂类型使用方法 1.3 建立应用侧与前端页面数据通道 2 管理页面跳转及浏览记录导航 2.1 历史记录导航 2.2 页面跳转 2.3 跨应用跳转 3 管理Cookie及数据存储 3.1 Cookie管理 3…

【优选算法】双指针

目录 一、[移动零](https://leetcode.cn/problems/move-zeroes/description/)二、[复写零](https://leetcode.cn/problems/duplicate-zeros/description/)三、[快乐数](https://leetcode.cn/problems/happy-number/)四、 [盛最多水的容器](https://leetcode.cn/problems/contai…

C++常用的特性-->day05

友元的拓展语法 声明一个类为另外一个类的友元时&#xff0c;不再需要使用class关键字&#xff0c;并且还可以使用类的别名&#xff08;使用 typedef 或者 using 定义&#xff09;。 #include <iostream> using namespace std;// 类声明 class Tom; // 定义别名 using …

Vue3 + Vite 构建组件库的整体流程

Vue3 Vite 构建组件库的流程 本文教你如何用 Vue Vite&#xff0c;一步一步构建一个组件库并发布到 npm 的整体流程 1. 通过 vite 命令创建一个基本的项目结构&#xff08;这里选用 vue ts 的项目&#xff09; npm create vitelatest2. 在项目中创建一个 lib 目录&#xf…

Ubuntu22.04.2 k8s部署

k8s介绍 简单介绍 通俗易懂的解释&#xff1a; Kubernetes&#xff08;也被称为 K8s&#xff09;就像是一个大管家&#xff0c;帮你管理你的云计算服务。想象一下&#xff0c;你有很多个小程序&#xff08;我们称之为“容器”&#xff09;&#xff0c;每个都在做不同的事情&…

UniApp的Vue3版本中H5配置代理的最佳方法

UniApp的Vue3版本中H5项目在本地开发时需要配置跨域请求调试 最开始在 manifest.json中配置 总是报404&#xff0c;无法通过代理请求远程的接口并返回404错误。 经过验证在项目根目录创建 vite.config.js文件 vite.config.js内容: // vite.config.js import {defineConfig }…

Android OpenGL ES详解——实例化

目录 一、实例化 1、背景 2、概念 实例化、实例数量 gl_InstanceID 应用举例 二、实例化数组 1、概念 2、应用举例 三、应用举例——小行星带 1、不使用实例化 2、使用实例化 四、总结 一、实例化 1、背景 假如你有一个有许多模型的场景&#xff0c;而这些模型的…

2024数维杯问题C:脉冲星定时噪声推断和大气时间信号的时间延迟推断的建模完整思路 模型 代码结果

&#xff08;Modeling of pulsar timing noise deduction and atmospheric time delay deduction of time signals&#xff09; 脉冲星是一种连续而稳定的快速旋转的中子星&#xff0c;为它们赢得了“宇宙的李温室”的绰号。脉冲星的空间观测对深空航天器的导航和时间标准的维…

Shell基础2

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团…

基于微信小程序的校园超市购物系统设计与实现,LW+源码+讲解

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本超市购物系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

【golang-技巧】-线上死锁问题排查-by pprof

1.背景 由于目前项目使用 cgo golang 本地不能debug, 发生死锁问题&#xff0c;程序运行和期待不一致&#xff0c;通过日志排查可以大概率找到 阻塞范围&#xff0c;但是不能找到具体问题在哪里&#xff0c;同时服务器 通过k8s daemonset 部署没有更好的方式暴露端口 获取ppr…

【Visual Studio】设置文件目录

打开属性 输出目录&#xff1a;$(SolutionDir)bin\$(Platform)\$(Cinfiguration)\ 中间目录&#xff1a;$(SolutionDir)bin\intermediates\$(Platform)\$(Cinfiguration)\

智谱AI清影升级:引领AI视频进入音效新时代

前几天智谱推出了新清影,该版本支持4k、60帧超高清画质、任意尺寸&#xff0c;并且自带音效的10秒视频,让ai生视频告别了"哑巴时代"。 智谱AI视频腾空出世&#xff0c;可灵遭遇强劲挑战&#xff01;究竟谁是行业翘楚&#xff1f;(附测评案例)之前智谱出世那时体验了一…

Datawhale模型压缩技术Task2之模型剪枝

模型剪枝 模型剪枝介绍何为剪枝&#xff08;What is Pruning?&#xff09;剪枝类型非结构化剪枝结构化剪枝半结构化剪枝 剪枝范围局部剪枝全局剪枝 剪枝粒度细粒度剪枝基于模式的剪枝向量级剪枝内核级剪枝通道级剪枝 为何剪枝&#xff08;Why Pruning?&#xff09;剪枝标准&a…

雨晨 Fix 24H2 Windows 11 iot 企业版 ltsc 2024 极简 2合1 26100.2448

映像的详细信息: 雨晨 Fix 24H2 Windows 11 iot 企业版 ltsc 2024 极简 2合1 26100.2448 索引: 1 名称: Windows 11 IoT 企业版 LTSC 2024 极简V1 26100.2448 (传统legacy资源管理器) 描述: Windows 11 IoT 企业版 LTSC 2024 极简V1 26100.2448 By YCDISM v2025 2024-11-15 大…

【Qt聊天室】客户端实现总结

目录 1. 项目概述 2. 功能实现 2.1 主窗口设计 2.2 功能性窗口 2.3 主界面功能实现 2.4 聊天界面功能实现 2.5 个人信息功能开发 2.6 用户信息界面设置功能 2.7 单聊与群聊 2.8 登录窗口 2.9 消息功能 3. 核心设计逻辑 3.1 核心类 3.2 前后端交互与DataCenter 4…

3、.Net UI库:CSharpSkin - 开源项目研究文章

CSharpSkin(C# 皮肤)是一个基于C#语言开发的UI框架&#xff0c;它允许开发者使用C#和.NET技术栈来创建跨平台的桌面应用程序。CSharpSkin框架通常用于实现具有自定义外观和感觉的应用程序界面&#xff0c;它提供了一套丰富的控件和组件&#xff0c;以及灵活的样式和布局系统。 …