k8s本地存储localPV部署方案

localPV介绍

Kubernetes直接使用宿主机的本地磁盘目录 ,来持久化存储容器的数据。它的读写性能相比于大多数远程存储来说,要好得多,尤其是SSD盘。

部署方案
基于sig-storage-local-static-provisioner的local volume方案
下载地址:https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/archive/refs/tags/v2.4.0.tar.gz

准备本地存储

磁盘分区(没有分区需求跳过即可,直接进行创建逻辑卷操作)

#磁盘大于2T的分区
#初始化gpt分区
parted /dev/sda

#创建gpt分区表
mklabel gpt

#全部空间给主分区
mkpart primary 0% 100%

#退出保存
q
#磁盘小于2T的分区
#若未安装lvm需先安装
yum install -y lvm2

#新加的盘为/dev/vdb,按默认选项部署,空行为回车
fdisk /dev/vdb << EOF
n




t
8e
w
EOF
partprobe

创建逻辑卷

# 创建pv
pvcreate /dev/vdb

# 创建vg
vgcreate datavg /dev/vdb

# 创建lv
lvcreate -l 100%VG -n datalv datavg

# 格式化mkfs.xfs lvpath
mkfs.xfs /dev/mapper/datavg-datalv

# 新建/data/localvolume目录
mkdir -p /data/localvolume

# 配置fstab
echo "/dev/mapper/datavg-datalv /data xfs defaults 0 0" >> /etc/fstab

# 挂载
mount -a

扩容

# 新挂盘为/dev/vdc
pvcreate /dev/vdc

# 将新pv扩展至卷组datavg中
vgextend datavg /dev/vdc

# 扩容指定容量
lvextend -L +65.6G /dev/mapper/datavg-datalv

# 扩容剩余全部容量
lvextend -l +100%FREE /dev/mapper/datavg-datalv

# xfs格式磁盘空间刷新
xfs_growfs /dev/mapper/datavg-datalv

# ext格式磁盘空间刷新
resize2fs /dev/mapper/datavg-datalv

该provisioner能够用来创建pv的存储只能为挂载点目录,挂载盘麻烦或者没有,可以预先创建几个bind挂载点目录,若pv不够可直接挂载新挂载点,provisioner会自动发现新挂载点并制作成pv

# 如使用的存储目录为/localvolume,在该目录下创建多个子目录,用来挂载
for i in $(seq 1 10); do
  mkdir -p /data/localvolume/vol${i}
  mkdir -p /mnt/localvolume/vol${i}
	echo "/data/localvolume/vol${i} /mnt/localvolume/vol${i} none rw,bind 0 0" >> /etc/fstab
done

mount -a

# 验证挂载情况
mount | grep "localvolume"

部署provisioner

# 本地存储节点打上标签
kubectl label node <node-name> storagetype=localvolume

# 新建namespace
kubectl create ns static-provisioner

# helm安装provisioner
helm install static-provisioner . -n static-provisioner

使用local volume

查看pv
provisioner自动发现符合要求的挂载点后会自动做成pv,状态显示为Available
在这里插入图片描述
新增volume
挂载完成后provisioner会立即自动发现并制作新pv,如新增vol6

mkdir /data/localvolume/vol6 /mnt/localvolume/vol6
echo "/data/localvolume/vol6 /mnt/localvolume/vol6 none rw,bind 0 0" >> /etc/fstab
mount -a

删除volume

# 应用停止后,删除pvc
$ kubectl delete pvc <pvc-name> -n <namespace>

# 卸载挂载点目录
$ umount /mnt/localvolume/<vol>

# 删除目录,记得做好备份
$ rm -rf /data/localvolume/<vol> /mnt/localvolume/<vol>

# 删除pv
$ kubectl delete <pv-name>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值