实验手册-14-PV和PVC

  • 熟悉 PV 和 PVC 的配置文件
  • 了解不同的回收策略

步骤1 安装软件包

text

yum install nfs-utils

步骤2 创建共享文件夹

bash

mkdir /srv/nfs

步骤3 修改配置文件

bash

vim /etc/exports

在文件中增加内容:

text

/srv/nfs 192.168.192.0/24(rw)

共享 /srv/nfs 目录给 192.168.192.0/24 网段下的所有人,并给予读写权限

步骤4 开启服务

bash

systemctl start rpcbind nfs

关闭防火墙

bash

systemctl stop firewalld
systemctl disable firewalld

步骤5 找小组内同学要一个IP地址,记下备用

修改配置文件,挂载同学的NFS共享

bash

vim /etc/fstab

增加文件内容:

bash

192.168.192.215:/srv/nfs /k8spv nfs4 defaults 0 0

192.168.192.215 换成同学的IP地址

步骤6 挂载

text

mkdir /k8spv
mount -a

步骤7 查看挂载是否成功

bash

df | grep srv

有如下结果代表挂载成功

IP地址可能不同

此时我们在 /k8spv 目录下创建文件,可以被共享NFS的同学看到

步骤1 创建配置文件

bash

vim pv.yaml

文件内容:

yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /srv/nfs/pv1
    server: 192.168.192.215

注意修改倒数第2行,pv1 改成 pv学号后两位

加载配置文件

bash

kubectl apply -f pv.yaml

步骤2 查看创建的 PV

bash

kubectl get pv
PV

第5列 STATUS(状态)为 Available,代表创建的 PV 可用

步骤3 新建一个配置文件

bash

vim pvc.yaml

文件内容:

bash

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc1
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs

加载配置文件

bash

kubectl apply -f pvc.yaml

步骤4 查看创建的 pvc

bash

kubectl get pvc

查看刚才创建的 pv

bash

kubectl get pv

状态和Claim发生变化,如上图和下图所示

步骤5 使用 PV

创建一个配置文件,运行一个Pod

text

vim pod.yaml

文件内容:

bash

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: pod1
      image: busybox
      args:
      - /bin/sh
      - -c
      - sleep 30000
      volumeMounts:
      - mountPath: "/mydata"
        name: mydata
  volumes:
    - name: mydata
      persistentVolumeClaim:
        claimName: pvc1

步骤2 加载配置文件

bash

kubectl apply -f pod.yaml

查看创建的 Pod

bash

kubectl get pods

步骤3 等Pod的状态为 Running 后,进入容器中创建一个文件

bash

kubectl exec pod1 -- touch /mydata/hello

步骤4 小组内的同学查看一下创建的文件

bash

ls /srv/nfs/
创建的文件

不使用PV时,需要回收

步骤1 删除 PVC

bash

kubectl delete pod pod1
kubectl delete pvc pvc1

步骤2 查看PV

bash

kubectl get pv

CLAIM 重新变为空白

步骤3 小组内同学查看文件是否存在

bash

ls /srv/nfs

刚才创建的 hello 文件已经不存在,因为该 PV 的回收策略为 Recycle

修改 pv.yaml 文件,将回收策略改为 Retain,然后重复执行任务一和任务二,查看最后文件是否消失

1、没有权限创建文件

关键字:Permission Denied

解决方法一:

修改 /etc/exports 配置文件,小括号内增加内容

/etc/exports

bash

/srv/nfs 192.168.192.0/24(rw,no_root_squash)

解决方法二:

bash

chown nfsnobody:nfsnobody -R /srv/nfs 

2、Could not resolve host

优先检查 DNS