江小南

V1

2022/10/23阅读:32主题:默认主题

【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/

实际操作

  1. 编写yaml

从官方文档拷贝过来合适的进行修改即可。

# pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-config
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/srv/app-config"
  1. 创建pv
candidate@node01:~$ kubectl apply -f pv.yaml
persistentvolume/app-config created
candidate@node01:~$
  1. 检查验证
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 记录变更

解析

  1. 创建 pvc,题目中给出了名称,Class 以及容量。
  2. 创建 Pod ,题目中给定了名称,镜像,挂载路径以及对 pv 的权限。
  3. 更改大小,并记录过程。

帮助文档

同上

实际操作

  1. 编写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 字段值要保持一致,才能进行挂载。
  1. 部署
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:~$
  1. 检查验证
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 创建成功。

  1. 更改大小,并做记录
kubectl edit pvc pv-volume --record

至此本道题目完成。

扩展

扩展知识可以参考以前的文章。

kubernetes资源对象介绍及常用命令(五)-(NFS&PV&PVC)

NFS文件系统,PV的静态创建和动态创建方式

分类:

后端

标签:

云计算

作者介绍

江小南
V1