storageclass,存储类,是K8s工程师为了解决PV和PVC绑定的复杂繁琐问题,提供自动的PV策略机制,不同的存储类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。 存储类的作用就是创建PV的模板,而k8s集群管理员通过创建storageclass就可以动态生成一个存储卷pv供k8s pvc使用。
每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在 StorageClass 需要动态制备 PersistentVolume 时会使用到。
StorageClass 对象的命名很重要,用户使用这个命名来请求生成一个特定的类。 当创建 StorageClass 对象时,管理员设置 StorageClass 对象的命名和其他参数。
StorageClass配置主要定义以下两部分:
1、PV的属性 ,比如存储的大小、类型等;
2、创建这种PV需要使用到的存储插件,比如Ceph、NFS等..
StorageClass的字段
[root@ctdmaster1 sfs]# kubectl explain storageclass
KIND: StorageClass
VERSION: storage.k8s.io/v1
DESCRIPTION:
StorageClass describes the parameters for a class of storage for which
PersistentVolumes can be dynamically provisioned.
StorageClasses are non-namespaced; the name of the storage class according
to etcd is in ObjectMeta.Name.
FIELDS:
allowVolumeExpansion
allowedTopologies <[]Object>
apiVersion
kind
metadata
安装nfs provisioner,用于配合存储类动态生成pv
把nfs-subdir-external-provisioner.tar.gz上传到node1和node2,手动解压。
ctr -n=k8s.io images import nfs-subdir-external-provisioner.tar.gz
1、创建SA账号
[root@ctdmaster1 storageclass]# vim serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-provisioner
2、对SA账号授权
3、安装配置provisioner程序
1)创建挂载目录: [root@ctdmaster1 storageclass]# mkdir /data/nfs_pro -pv
2)、修改nfs挂载目录
3)、创建配置文件
[root@ctdmaster1 storageclass]# vim nfs-deployment.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-provisioner
spec:
selector:
matchLabels:
app: nfs-provisioner
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: nfs-provisioner
spec:
serviceAccount: nfs-provisioner
containers:
- name: nfs-provisioner
image: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0
imagePullPolicy: IfNotPresent
volumeMounts:- name: nfs-client-root
mountPath: /persistentvolumes
env: - name: PROVISIONER_NAME
value: example.com/nfs - name: NFS_SERVER
value: 192.168.40.160 - name: NFS_PATH
value: /data/nfs_pro
volumes:
- name: nfs-client-root
name: nfs-client-root
nfs:
server: 192.168.40.160
path: /data/nfs_pro4)、执行更新provisioner配置
[root@ctdmaster1 storageclass]# kubectl apply -f nfs-deployment.yaml
deployment.apps/nfs-provisioner created
5)、检查安装是否正常启动
4、
4.1创建storageclass,动态供给PV
[root@ctdmaster1 storageclass]# vim nfs-storageclass.yaml
[root@ctdmaster1 storageclass]# kubectl apply -f nfs-storageclass.yaml
storageclass.storage.k8s.io/nfs created
4.2检查是否执行成功
[root@ctdmaster1 storageclass]# kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs example.com/nfs Delete Immediate false
5 创建pvc,通过storageclass动态生成pv
评论一下?