open-local本地存储使用

Open-local使用指南

架构组成

1. scheduler-extender: 作为 kube-scheduler 的扩展组件,通过 Extender 方式实现,扩展了原生调度器对本地存储资源的感知,以实现对包括磁盘容量、多盘感知、磁盘介质(ssd or hdd)等信息的调度决策,做到存储资源的混合调度;

2. csi-plugin: 符合 CSI(Container Storage Interface) 标准的本地磁盘管理能力,包含创建/删除/扩容存储卷、创建/删除快照、暴露存储卷 metrics 等能力;

3. agent: 运行在集群中的每个节点,根据配置清单初始化存储设备,并通过上报集群中本地存储设备信息以供 scheduler-extender 决策调度;

4. controller: 获取集群存储初始化配置,并向运行在各个节点的 agent 下发详细的资源配置清单。

同时open-local 包含两个 CRD:

NodeLocalStorage:open-local 通过 NodeLocalStorage 资源上报每个节点上的存储设备信息,该资源由 controller 创建,由每个节点的 agent 组件更新其 status。该 CRD 属于全局范围的资源。

NodeLocalStorageInitConfig:open-local controller 可通过 NodeLocalStorageInitConfig 资源创建每个 NodeLocalStorage 资源。NodeLocalStorageInitConfig 资源中包含全局默认节点配置和特定节点配置,若节点的 node label 满足表达式则使用特定节点配置,否则使用默认配置。

前期准备

1.基于Red Hat和Debian的Linux发行版

2.Kubernetes v1.20+

3.Helm v3.0+

4.lvm2

5.至少一个空设备块

初始化设置

新增VG

1.fdisk进行分区(如果是某个分区需要此步骤,如果是某块空闲块设备略过此步)

fdisk /dev/sdb

2.创建PV物理卷(可以将某个分区划分为PV,也可以将某块空闲块设备划分为PV)

pvcreate /dev/sdb1

  1. 创建VG卷组 vgcreate -s 32M open-local-pool-0 /dev/sdb1(-s 指定PE大小)

存储初始化配置

编辑NodeLocalStorageConfig 资源,进行初始化配置。默认nlsc为open-local。

使用open-local要求环境中有VG(VolumeGroup),我们上一步已经创建了名称为open-local-pool-0的VG,若您的环境中已存在VG剩余空间,则可以配置在白名单中,若环境中没有VG,您需要提供一个空闲块设备供open-local创建VG。

根据需求手动创建VG或者提供空闲块设备通过open-local自动创建卷组,每个节点为open-local提供一个块设备。块设备名称包括/dev/sdb、/dev/vdc、/dev/sdd2等

helm/values.yaml配置

编辑{{ .Values.agent.device }}在helm/values.yaml文件中

如果集群中的kube-scheduler是静态pod, Open-Local将在每个主节点上运行一个作业来编辑/etc/kubernetes/manifest /kube-scheduler。Yaml文件默认情况下,你可以看到它在初始作业文件。

您还可以手动配置kube-scheduler,特别是当集群中的kube-scheduler不是静态pod时。

设置.extender。Init_job的值为false。在安装Open-Local之前,这将不会运行init-job。

创建一个文件,命名为kube-scheduler-configuration。将其放在每个主节点的“/etc/kubernetes/”路径下。

部署 Open-local

官网下载open-local-main.zip压缩包,解压,进入open-local-main。

确认部署是否成功

Open-local默认在集群中部署一些存储类模版

创建一个Statefulset,该Statefulset 使用 open-local-lvm 存储类模板。此时创建的存储卷文件系统为 ext4。若用户指定 open-local-lvm-xfs 存储模板,则存储卷文件系统为 xfs。

解压包中有Statefulset事例。

修改sts-nginx.yaml中image,对应为docker中nginx镜像名称。

检查Pod/PVC/PV状态,可看到存储卷创建成功

进入容器查看挂载情况

删除pod,验证持久化存储

本地存储持久化验证成功,也可以自定义Statefulset/pv/pvc。

在已有的pv和pvc的yaml文档进行修改,创建我们自己想要的pv和pvc

新建pv,pvc将uid,createTimestamp,claimRef注释掉,并修改name,新建部署单元

部署tomcat,验证自定义应用也没有问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值