江小南
2022/10/23阅读:63主题:默认主题
【CKA、CKS篇】CKA真题解析——创建 PV & PVC
真题解析1
题目:
创建名为 app-config 的 persitent volume,容量为 1Gi,访问模式为 ReadWriteMany。
volume 类型为 hostPath,位于 /srv/app-config。
考察点:
hostPath 类型的 pv
解析:
根据题目意思,需要创建hostPath类型的pv,给出了名称,容量和访问模式。
帮助文档:
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/

实际操作:
-
编写yaml
从官方文档拷贝过来合适的进行修改即可。
# pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: app-config
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/srv/app-config"
-
创建pv
candidate@node01:~$ kubectl apply -f pv.yaml
persistentvolume/app-config created
candidate@node01:~$
-
检查验证
candidate@node01:~$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
app-config 1Gi RWX Retain Available 37s
pv01 10Mi RWO Retain Available csi-hostpath-sc 50d
candidate@node01:~$
说明:RWX 是 ReadWriteMany,RWO 是 ReadWriteOnce。状态(STATUS) 为 Available。 这意味着它还没有被绑定给 PersistentVolumeClaim。
成功创建了指定的PV。
至此本道题目完成。
真题解析2
题目:
创建一个新的 PersistentVolumeClaim:
名称: pv-volume
Class: csi-hostpath-sc
容量: 10Mi
创建一个新的 Pod,来将 PersistentVolumeClaim 作为 volume 进行挂载:
名称:web-server
Image:nginx:1.16
挂载路径:/usr/share/nginx/html
配置新的 Pod,以对 volume 具有 ReadWriteOnce 权限。
最后,使用 kubectl edit 或 kubectl patch 将 PersistentVolumeClaim 的容量扩展为 70Mi,并记录此更改。
考察点:
pvc 的创建, class 属性的使用,--record 记录变更
解析:
-
创建 pvc,题目中给出了名称,Class 以及容量。 -
创建 Pod ,题目中给定了名称,镜像,挂载路径以及对 pv 的权限。 -
更改大小,并记录过程。
帮助文档:
同上
实际操作:
-
编写yaml
从官方文档拷贝过来合适的进行修改即可。
# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-volume
spec:
storageClassName: csi-hostpath-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
# pvc-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
volumes:
- name: task-pv-storage # 和 spec.containers.volumeMounts.name 字段值要保持一致
persistentVolumeClaim:
claimName: pv-volume # 这个要使用上面创建的 pvc 名字
containers:
- name: nginx
image: nginx:1.16
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage # 和 spec.volumes.name 字段值要保持一致
注意点:
-
在 pvc.yaml 中我们使用了storageClassName属性其实就是将 pv 和 pvc 绑定的过程。在这里 pv 就是 csi-hostpath-sc 。 -
在 pvc-pod。yaml 中 spec.volumes.name 要和 spec.containers.volumeMounts.name 字段值要保持一致,才能进行挂载。
-
部署
candidate@node01:~$ kubectl apply -f pvc.yaml
persistentvolumeclaim/pv-volume created
candidate@node01:~$
candidate@node01:~$ kubectl apply -f pvc-pod.yaml
pod/web-server created
candidate@node01:~$
-
检查验证
candidate@node01:~$ kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/app-config 1Gi RWX Retain Available 33m
persistentvolume/pv01 10Mi RWO Retain Bound default/pv-volume csi-hostpath-sc 50d
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/pv-volume Bound pv01 10Mi RWO csi-hostpath-sc 10m
candidate@node01:~$
pvc 创建成功,并且和 pv 绑定成功。
candidate@node01:~$ kubectl get pod web-server
NAME READY STATUS RESTARTS AGE
web-server 1/1 Running 0 2m24s
candidate@node01:~$
pod 创建成功。
-
更改大小,并做记录
kubectl edit pvc pv-volume --record

至此本道题目完成。
扩展
扩展知识可以参考以前的文章。
kubernetes资源对象介绍及常用命令(五)-(NFS&PV&PVC)
NFS文件系统,PV的静态创建和动态创建方式
作者介绍