kubernetes使用阿里云cpfs持久存储
简介
cpfs的具体介绍可参考这里:
https://help.aliyun.com/document_detail/111755.html?spm=a2c4g.11174283.3.1.1275c6eclqO43j
要使用cpfs存储,需要在所有的k8s节点上安装cpfs的客户端。安装cpfs客户端本身的步骤并不复杂,但它依赖的东西让人很烦。
它依赖于kernel-devel,同时还要求kernel, kernel-devel以及kernel-headers的版本必须完成一致。
我在使用的时候,遇到了kernel版本低于kernel-devel版本的问题,由于现在的yum源中都已经更新了kernel-devel的版本,找不到低版本的kernel-devel了,让我不得不更新kernel和kernel-headers。问题是更新了这俩玩艺儿,就必须得重启系统。机器一多,头都大了。
安装cpfs客户端
下面还是简单的说一下cpfs客户端的安装过程:
- cpfs 客户端安装
# 保持kernel kernel-devel kernel-headers的版本一致
sudo yum update kernel-devel kernel-headers
sudo yum install -y make gcc libyaml-devel libtool zlib-devel glibc-headers dkms expect
wget https://cpfs-client.oss-cn-beijing.aliyuncs.com/centos/cpfs-client-2.10.8-202.el7.tar.gz
tar xf cpfs-client-2.10.8-202.el7.tar.gz
# 这一步大概需要等待5-10分钟
sudo rpm -vih cpfs-client-dkms-1.0.0-202.el7.noarch.rpm
sudo rpm -vih cpfs-client-2.10.8-202.el7.x86_64.rpm
在我的环境中,之前安装了旧版本的cpfs客户端,一大堆的问题,现在安装了新的还没法生效,必须得把旧的清理干净:
rpm -e lustre-client kmod-lustre-client
sudo lustre_rmmod; sudo modprobe lustre
- 本地挂载验证:
vim /etc/cpfs/cpfs-mounts.conf
xxx.cn-beijing.cpfs.nas.aliyuncs.com@tcp:xxx.cn-beijing.cpfs.nas.aliyuncs.com@tcp:/xxx
/etc/init.d/cpfs-client start
systemctl enable cpfs-client
这一步操作没问题的话,就意味着客户端正常安装。
kubernetes使用cfs作为持久存储
- 创建pv:
apiVersion: v1
kind: PersistentVolume
metadata:
name: cpfs-pv
spec:
capacity:
storage: 5Ti
accessModes:
- ReadWriteMany
flexVolume:
driver: "alicloud/cpfs"
options:
server: xxx.cn-beijing.cpfs.nas.aliyuncs.com@tcp:xxx.cn-beijing.cpfs.nas.aliyuncs.com@tcp
fileSystem: xxx
- 创建pvc:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cpfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Ti
另外多提一嘴,这个cpfs在kubernetes中的对接,使用的是flexvolume,阿里云这边还建议升级flexvolume插件的版本至:v1.14.6.19-e986f6e-aliyun