Kubernetes(K8S) 使用 NFS 作为后端存储
使用 NFS 作为后端存储使用 NFS 创建 PV、PVC1、在NFS(192.168.2.3)服务器创建目录/home/k8s-nfs, 并共享这个目录。[root@nfs-server ~]# cat /etc/exports/home/k8s-nfs *(rw,sync,no_root_squash)[root@nfs-server ~]# exportfs -avrexporting *:
使用 NFS 作为K8S后端存储
PV的全称是:PersistentVolume(持久化卷),是对底层的共享存储的⼀种抽象,PV由管理员进⾏创建和配置,它和具体的底的共享存储技术的实现⽅式有关,⽐如Ceph、GlusterFS、NFS等,都是通过插件机制完成与共享存储的对接。
PVC的全称是:PersistentVolumeClaim(持久化卷声明),PVC是⽤户存储的⼀种声明,PVC和Pod⽐较类似,Pod消耗的是节点,PVC消耗的是PV资源,Pod可以请求CPU和内存,⽽PVC可以请求特定的存储空间和访问模式。对于真正使⽤存储的⽤户不需要关⼼底层的存储实现细节,只需要直接使⽤PVC即可。
使用 NFS 创建 PV、PVC
1、在NFS(192.168.2.3)服务器创建目录/home/k8s-nfs, 并共享这个目录。
[root@nfs-server ~]# cat /etc/exports
/home/k8s-nfs *(rw,sync,no_root_squash)
[root@nfs-server ~]# exportfs -avr
exporting *:/home/k8s-nfs
[root@nfs-server ~]# mkdir -p /home/k8s-nfs/pv01
2、创建pv
创建pv01.yaml文件
[root@master ~]# mdkir nfs-pv-pvc
[root@master ~]# cd nfs-pv-pvc
[root@master nfs-pv-pvc]# cat pv01.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
mountOptions:
- hard
- nfsvers=3
nfs:
path: /home/k8s-nfs/pv01
server: 192.168.2.3
AccessModes(访问模式)
AccessModes 是⽤来对PV进⾏访问模式的设置,⽤于描述⽤户应⽤对存储资源的访问权限,访问权限包括下⾯⼏种⽅式:
ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
ReadOnlyMany(ROX):只读权限,可以被多个节点挂载
ReadWriteMany(RWX):读写权限,可以被多个节点挂载
注意:⼀些 PV 可能⽀持多种访问模式,但是在挂载的时候只能使⽤⼀种访问模式,多种访问模式是不会⽣效的。
创建pv
[root@master nfs-pv-pvc]# kubectl apply -f pv01.yaml
persistentvolume/pv01 created
查看pv
[root@master nfs-pv-pvc]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv01 1Gi RWO Recycle Available slow 5s
2、创建pvc
创建pvc01.yaml文件
[root@master nfs-pv-pvc]# cat pvc01-yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc01
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: slow
创建pvc
[root@master nfs-pv-pvc]# kubectl apply -f pvc01-yaml
persistentvolumeclaim/pvc01 created
查看pvc
[root@master nfs-pv-pvc]# kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pv01 1Gi RWO Recycle Bound default/pvc01 slow 6m11s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/pvc01 Bound pv01 1Gi RWO slow 2m56s
3、创建一个pod,并挂载这个pvc
创建pod01.yaml 文件
[root@master nfs-pv-pvc]# cat pod01.yaml
kind: Pod
apiVersion: v1
metadata:
name: pod-01
spec:
containers:
- name: pod-01
image: busybox:1.24
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && exit 0 || exit 1"
volumeMounts:
- name: nfs-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: pvc01
创建pod
[root@master nfs-pv-pvc]# kubectl apply -f pod01.yaml
查看pod
[root@master nfs-pv-pvc]# kubectl get pod
NAME READY STATUS RESTARTS AGE
pod-01 0/1 Completed 0 100s
4、查看验证:
在nfs服务器 /home/k8s-nfs/pv01/目录会创建一个SUCCESS文件
[root@nfs-server ~]# ls /home/k8s-nfs/pv01/
SUCCESS
更多推荐
所有评论(0)