rancher的local-path-provisioner实现IO分离

背景:

部分服务器上有两种不同的存储介质如SSD和HDD,在做存储时需要将不同类型数据分开存到对应的介质上。

第一种方法

参考了多个资料实现,较复杂,变通的方式不建议使用。

思路:

建立两个提供程序,两个存储类分别指向不同的提供类。

local-path-provisioner-ssd

local-path-provisioner-hdd

通过使用不同的配置文件绑定路径来实现。在storageclass中同时指定到不同的provisioner上

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd-local-path
provisioner: local-path-provisioner-ssd
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain

PVC等处使用对应名称的存储类申请PV即可。

期间问题出在配置文件和相关的RBAC上面,在同一命名空间中的部分信息可以共用,部分有冲突。

有些配置必须单独存在: 如local-path-config

第二种方法

查看了官方源代码库中的readme中对配置文件的解释,实现方便。

2. If more than one path was specified, the path would be chosen randomly when provisioning.

如果配置了多个路径在nodepathmap中,会默认随机选择一个路径。

       {
                "nodePathMap":[
                {
                        "node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
                        "paths":["/opt/local-path-provisioner"]
                },
                {
                        "node":"yasker-lp-dev1",
                        "paths":["/opt/local-path-provisioner", "/ssd", "/hdd"]
                },
                {
                        "node":"yasker-lp-dev3",
                        "paths":["/opt/local-path-provisioner", "/ssd", "/hdd"]
                }
                ]
        }

如果要指定路径storageclass写法要添加参数:
parameters:
  nodePath: /data/ssd #此路径必须在nodepathmap中已定义。

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd-local-path
provisioner: cluster.local/local-path-provisioner
parameters:
  nodePath: /ssd
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值