引言
在k8s csi存儲的發(fā)展過程中歌亲,通過手動創(chuàng)建靜態(tài)卷(PersistentVolume)的方式似乎已經(jīng)淹沒在歷史的長河中≈月茫現(xiàn)在為什么要再說呢祈搜?在一些特殊的場景,這種方式仍然是可選的解決方案
需求
租戶下的不同用戶只有操作本用戶的目錄權(quán)限雷客,租戶管理應(yīng)用(對應(yīng)租戶管理員)可以操作整個租戶的存儲目錄(租戶目錄和用戶目錄為父子級關(guān)系),租戶管理員通過租戶管理應(yīng)用可以查看并修改租戶下用戶的工作數(shù)據(jù)烛卧,并可以對不同的用戶存儲目錄設(shè)置配額佛纫。
-- 注:為了宿主機安全,用戶應(yīng)用总放,租戶應(yīng)用都應(yīng)通過掛載存儲卷方式使用存儲呈宇,避免使用宿主機目錄掛載。
需求分析
從需求看局雄,是一個典型的文件存儲使用案例甥啄。租戶管理員的存儲卷是普通用戶存儲卷的父目錄,那么在創(chuàng)建用戶存儲卷時炬搭,最好可以指定目錄(指定為租戶存儲卷的子目錄)
操作流程
-
在分布式存儲創(chuàng)建租戶的存儲根fs(創(chuàng)建pv時要使用該fs名稱), 只需要創(chuàng)建一次蜈漓,可以運維人員手動創(chuàng)建(下面是ceph的dashboad)
-
創(chuàng)建csi對接賬號(創(chuàng)建pv時要用到)
或登錄到ceph manager節(jié)點通過指令創(chuàng)建,最終秘鑰文件需要導(dǎo)出生成K8s中的secret
創(chuàng)建客戶端賬戶
ceph auth get-or-create client.slurm mon "allow r" mds "allow rw" osd 'allow rwx pool=cephfs.testfs.data'
#生成密鑰對
ceph auth get client.slurm -o ceph.client.slurm.keyring
ceph auth print-key client.slurm > slurm.key
#發(fā)送到客戶端
scp -r /etc/ceph/ceph.conf ceph.client.slurm.keyring slurm.key 10.1.0.x:/etc/ceph/
- 創(chuàng)建pv宫盔、pvc(假設(shè)csi融虽、secret已部署完成)
root@sd-k8s-master-1:/home/zetyun/wb/slurm/hpc-cluster-1# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test
labels:
name: pv-test
spec:
storageClassName: csi-cephfs-sc-a
accessModes:
- ReadWriteMany
capacity:
storage: 10Gi
csi:
controllerExpandSecretRef:
name: csi-cephfs-secret
namespace: cephfs
nodeStageSecretRef:
name: csi-cephfs-secret
namespace: cephfs
driver: cephfs.csi.ceph.com
volumeHandle: pv-test
volumeAttributes:
clusterID: 92ab6c78-7edc-11ee-aec4-5e807f521aec
fsName: testfs
rootPath: /zetyun/wb # 用戶使用用戶工作目錄,slurm worker使用租戶工作目錄
staticVolume: "true"
mounter: fuse
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
一些存儲廠商可以直接指定目錄灼芭,不區(qū)分fs有额,無需配置secret(csi里面已經(jīng)完成了配置),如融焱
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test
labels:
name: pv-test
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 100Gi
csi:
driver: csi-clusterfileplugin
volumeHandle: pv-test
volumeAttributes:
path: /share/small_files ##指定的目錄
root@sd-k8s-master-1:/home/zetyun/wb/slurm/hpc-cluster-1# cat pvc-test.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-test
namespace: hpc-cluster-1
spec:
storageClassName: csi-cephfs-sc-a
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
selector:
matchExpressions:
- key: name
operator: In
values: ["pv-test"]
使用pvc卷
kind: Pod
metadata:
name: slurm-client
namespace: hpc-cluster-1
spec:
#nodeName: las1
containers:
- name: slurm-client
image: harbor.zetyun.cn/aidc/slurm-ubuntu-client:22.04_24.05.1-1
imagePullPolicy: IfNotPresent
env:
- name: ClusterName
value: datacanvas
- name: SlurmctldHost
value: slurm-controller.hpc-cluster-1.svc.cluster.local
volumeMounts:
- name: munge-key
mountPath: '/etc/munge'
- name: data
mountPath: '/mnt/home'
- name: user
mountPath: '/mnt/user'
resources:
requests:
cpu: "10m"
memory: "64Mi"
volumes:
- name: munge-key
configMap:
name: munge-key
items:
- key: munge.key
path: munge.key
- name: data
persistentVolumeClaim:
claimName: userpvc
- name: user
persistentVolumeClaim:
claimName: pvc-test
用戶配額,只需要創(chuàng)建用戶pvc巍佑、pv時指定容量就可以