面试题答案
一键面试1. 关键资源对象
- PersistentVolume(PV):它是集群中由管理员提供的一块存储,就像是一块预先准备好的硬盘。PV 有自己的生命周期,独立于任何单个 Pod。定义 PV 时需指定存储的类型(如 NFS、本地磁盘等)、容量、访问模式(如 ReadWriteOnce、ReadOnlyMany 等)。
- PersistentVolumeClaim(PVC):它是用户对存储的请求,类似于向系统申请一块硬盘。PVC 会根据需求与合适的 PV 进行绑定。用户在 PVC 中指定所需的存储容量和访问模式等信息。
- Volume:在 Pod 中定义,用于将 PV 挂载到容器内的指定目录,使得容器可以使用 PV 提供的存储。
2. 主要配置步骤
- 创建 PersistentVolume: 通过编写 PV 的 YAML 文件来定义 PV。例如,以下是一个基于 NFS 的 PV 示例:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-nfs-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
server: nfs-server.example.com
path: /exports/path
在上述示例中,定义了一个容量为 1Gi,访问模式为 ReadWriteOnce 的 NFS 类型的 PV,NFS 服务器地址为 nfs-server.example.com
,挂载路径为 /exports/path
。然后使用 kubectl apply -f pv.yaml
命令创建 PV。
2. 创建 PersistentVolumeClaim:
编写 PVC 的 YAML 文件,声明对存储的需求。示例如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-nfs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
此 PVC 请求 500Mi 的存储空间,访问模式为 ReadWriteOnce。使用 kubectl apply -f pvc.yaml
命令创建 PVC,Kubernetes 会自动将该 PVC 与满足条件的 PV 进行绑定。
3. 在 Pod 中使用存储卷:
在 Pod 的 YAML 文件中定义 Volume 并挂载到容器内的目录。示例如下:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
volumeMounts:
- name: my-volume
mountPath: /data
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: my-nfs-pvc
上述 Pod 定义了一个 Volume,它引用了名为 my-nfs-pvc
的 PVC,并将其挂载到容器内的 /data
目录。使用 kubectl apply -f pod.yaml
命令创建 Pod,这样容器就可以在 /data
目录使用持久化存储,即使容器重启或迁移,数据也不会丢失。